将 SAP ERP 与 Google SecOps 集成
本文档介绍了如何将 SAP ERP 与 Google Security Operations 集成。
SAP ERP 集成通过 Cloud Run 网关服务将 Google SecOps 连接到您的 SAP ERP 环境。如需详细了解如何在 Google SecOps 中监控和保护 SAP 环境,请参阅使用 Google SecOps 保护 SAP 应用。
使用场景
SAP ERP 集成使用 Google SecOps 功能来支持以下应用场景:
控制被入侵的 SAP 用户账号:在检测到可疑活动、凭据滥用或未经授权的提权时,在自动突发事件响应 playbook 期间立即锁定 SAP 用户账号。
终止活跃用户会话:在账号遭到入侵或违反政策后,终止目标用户名和客户端的活跃 SAP 会话,以撤消正在进行的访问权限。
强制执行安全审核日志记录:在目标 SAP 实例和客户端上远程激活 SAP 安全审核日志,以确保记录关键应用安全性事件。
验证网关连接性:验证 Google SecOps 与 Cloud Run 网关服务之间的 Google Cloud 身份验证和网络连接。
准备工作
在 Google SecOps 中配置 SAP ERP 集成之前,请完成以下前提步骤:
部署和配置 Cloud Run SAP RFC Gateway,以将操作转发到 SAP ERP 实例。
使用 Workload Identity 或服务账号 JSON 密钥配置 Google Cloud 身份验证和 IAM 权限。
在目标 SAP 客户端中为网关通信用户配置 SAP 权限。
部署和配置 Cloud Run SAP RFC Gateway
SAP ERP 集成通过 Cloud Run SAP RFC Gateway 服务与您的 SAP 系统进行通信。此服务可将操作从 Google SecOps 安全地转发到目标 SAP 实例。
确保您的 Cloud Run 网关服务已部署,并配置了每个目标 SAP 实例 (SAP Instance Name) 和三位数 SAP 客户端 (SAP Client Number) 的连接详细信息。记录 Cloud Run 服务的 HTTPS 网址,以用作 Cloud Run Service URL 集成参数。
配置 Google Cloud 身份验证和 IAM 权限
如需对发送到 Cloud Run 网关服务的请求进行身份验证,请使用以下方法之一配置 Google Cloud 服务账号:
- Workload Identity(推荐):使用服务账号模拟,因此您无需下载或管理静态 JSON 密钥。
- 服务账号 JSON 密钥:使用下载的 JSON 密钥文件。仅当您无法配置 Workload Identity 时,才使用此方法。如果您同时提供
Service Account JSON和Workload Identity Email,则集成会使用Service Account JSON。
分配 IAM 角色时,请遵循最小权限原则。 Google Cloud避免授予宽泛的管理角色,例如 roles/owner 或 roles/editor。仅授予下表中列出的最小角色:
| 主体 | 目标资源 | 所需 IAM 角色 | 用途 |
|---|---|---|---|
服务账号(在 Workload Identity Email 或 Service Account JSON 中配置) |
Cloud Run SAP RFC Gateway 服务 | Cloud Run Invoker
(roles/run.invoker) |
允许服务账号调用 Cloud Run 网关服务。 |
Google SecOps 实例身份(仅在使用 Workload Identity Email 时) |
Workload Identity Email 中指定的服务账号 |
Service Account Token Creator
(roles/iam.serviceAccountTokenCreator) |
允许您的 Google SecOps 实例在调用网关时模拟服务账号。 |
使用 Workload Identity 进行身份验证(推荐)
如需使用 Workload Identity 进行身份验证,请创建一个服务账号,向其授予调用 Cloud Run 服务的权限,并授权 Google SecOps 实例模拟该服务账号。
创建服务账号并授予 Cloud Run 访问权限
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
点击创建服务账号,输入服务账号的名称,然后点击创建并继续。
点击完成以完成服务账号的创建,然后复制其邮箱。
在 Google Cloud 控制台中,前往 Cloud Run,然后选择您的 SAP RFC Gateway 服务。
前往安全或权限标签页,然后点击添加主账号。
在新的主账号字段中,粘贴您的服务账号邮箱。
在选择角色菜单中,选择 Cloud Run Invoker (
roles/run.invoker),然后点击保存。
向 Google SecOps 实例授予模拟权限
在 Google SecOps 中,前往内容中心 > 响应集成。
选择 SAP ERP 集成,输入您的
Cloud Run Service URL,然后在Workload Identity Email中输入您的服务账号电子邮件地址。依次点击保存 > 测试。在您授予模拟权限之前,测试预计会失败。
点击测试旁边的 close_small,然后在出错提示中找到 Google SecOps 实例服务账号电子邮件地址(格式为
gke-init-python@PROJECT.或soar-python@TENANT_PROJECT.)。复制此电子邮件地址。在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。
依次前往权限>授予访问权限。
在新的主账号下,粘贴您复制的 Google SecOps 实例电子邮件地址。
在分配角色下,选择 Service Account Token Creator (
roles/iam.serviceAccountTokenCreator),然后点击保存。
使用服务账号 JSON 密钥进行身份验证
如果您无法使用 Workload Identity,请创建一个服务账号并提取其 JSON 密钥文件:
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
选择现有服务账号,或点击创建服务账号以创建专用服务账号。
确保该服务账号在 Cloud Run SAP RFC Gateway 服务上具有 Cloud Run Invoker (
roles/run.invoker) 角色。选择您的服务账号,然后依次前往密钥 > 添加密钥 > 创建新密钥。
选择 JSON 作为密钥类型,然后点击创建。JSON 密钥文件将下载到您的计算机上。
在文本编辑器中打开下载的文件,复制整个 JSON 内容,然后将其粘贴到 Google SecOps 中的
Service Account JSON参数中。
配置 SAP 权限
在每个目标 SAP 客户端中,仅向 Cloud Run 网关中配置的 SAP 通信用户授予执行您计划运行的操作所需的最低权限:
| 操作 | 必需的 SAP 权限 |
|---|---|
| 激活审核日志 | 有权在目标 SAP 客户端中远程激活 SAP 安全审核日志。 |
| 删除用户会话 | 有权运行 TH_DELETE_USER 函数模块,以终止目标 SAP 客户端中的活跃用户会话。 |
| 锁定 SAP 用户 | 在目标 SAP 客户端中锁定用户账号的权限。 |
验证网络连接
确保您的环境满足以下网络要求:
- Google SecOps(或您的远程代理)可以通过 HTTPS(端口 443)访问您的 Cloud Run SAP RFC Gateway 网址。
- 您的 Cloud Run SAP RFC Gateway 服务已与目标 SAP ERP 实例建立网络连接。
集成参数
SAP ERP 集成需要以下参数:
| 参数 | 说明 |
|---|---|
Cloud Run Service URL |
必填。 连接到 SAP ERP 实例的 Cloud Run 网关服务的 HTTPS 网址。 |
Service Account JSON |
可选。 用于向 Cloud Run 网关服务进行身份验证的服务账号 JSON 密钥。 如果同时提供了 |
Workload Identity Email |
可选。 用于 Workload Identity 身份验证的服务账号邮箱(推荐)。 在 |
Verify SSL |
可选。 如果选中此选项,则集成会在连接到 Cloud Run 网关服务器时验证 SSL 证书。 默认处于启用状态。 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。
激活审核日志
使用激活审核日志操作,通过 Cloud Run SAP RFC 网关在目标 SAP 实例和客户端上激活 SAP 安全审核日志。
此操作不会在 Google SecOps 实体上运行。
操作输入
激活审核日志操作需要以下参数:
| 参数 | 说明 |
|---|---|
SAP Client Number |
必填。 三位数的 SAP 客户端编号。 |
SAP Instance Name |
必填。 在 Cloud Run SAP RFC 网关中配置的目标 SAP 实例的名称。 |
操作输出
激活审核日志操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例展示了使用激活审核日志操作时收到的 JSON 结果输出:
{
"status": "SUCCESS",
"functionId": "ACTIVATE_AUDIT_LOG",
"sap_instance": "PRD",
"client": "100",
"return": [
{
"type": "S",
"message": "Security Audit Log activated successfully."
}
]
}
输出消息
激活审核日志操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully activated SAP audit log. |
操作成功。 |
Error executing action - "Activate Audit Log". Reason: Failed to
activate audit log. SAP Error:
ERROR_SUMMARY |
由于 SAP 系统返回错误,操作失败。 验证目标 SAP 实例和客户端是否可访问,以及网关通信用户是否有权激活安全审核日志。 |
Error executing action - "Activate Audit Log". Reason: SAP
Client Number must be a 3-digit numeric string (got
'SAP_CLIENT_NUMBER'). |
操作未通过参数验证。 为 |
Error executing action - "Activate Audit Log". Reason: Proxy
request failed (HTTP
STATUS_CODE):
ERROR_DETAIL |
对 Cloud Run SAP RFC 网关的请求失败。 验证 |
脚本结果
下表列出了使用激活审核日志操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
true 或 false |
删除用户会话
使用删除用户会话操作,通过 Cloud Run SAP RFC Gateway 终止用户在 SAP 中的活跃会话。
此操作不会在 Google SecOps 实体上运行。
操作输入
删除用户会话操作需要以下参数:
| 参数 | 说明 |
|---|---|
SAP Username |
必填。 要终止其活跃会话的 SAP 用户名。 |
SAP Client Number |
必填。 三位数的 SAP 客户端编号。 |
SAP Instance Name |
必填。 在 Cloud Run SAP RFC 网关中配置的目标 SAP 实例的名称。 |
操作输出
删除用户会话操作会提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例展示了使用删除用户会话操作时收到的 JSON 结果输出:
{
"status": "SUCCESS",
"functionId": "DELETE_USER_SESSION",
"sap_instance": "PRD",
"client": "100",
"return": [
{
"type": "S",
"message": "User session terminated."
}
]
}
输出消息
Delete User Session 操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully deleted user session for
SAP_USERNAME. |
操作成功。 |
Error executing action - "Delete User Session". Reason: Failed
to delete user session for
SAP_USERNAME. SAP Error:
ERROR_SUMMARY |
由于 SAP 系统返回错误,操作失败。 验证用户名是否存在于指定的 SAP 客户端中,以及网关通信用户是否有权运行 |
Error executing action - "Delete User Session". Reason: SAP
Client Number must be a 3-digit numeric string (got
'SAP_CLIENT_NUMBER'). |
操作未通过参数验证。 为 |
Error executing action - "Delete User Session". Reason: Proxy
request failed (HTTP
STATUS_CODE):
ERROR_DETAIL |
对 Cloud Run SAP RFC 网关的请求失败。 验证 |
脚本结果
下表列出了使用删除用户会话操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
true 或 false |
锁定 SAP 用户
使用锁定 SAP 用户操作,通过 Cloud Run SAP RFC Gateway 锁定 SAP 中的指定用户账号。
此操作不会在 Google SecOps 实体上运行。
操作输入
锁定 SAP 用户操作需要以下参数:
| 参数 | 说明 |
|---|---|
SAP Username |
必填。 要锁定的账号的 SAP 用户名。 |
SAP Client Number |
必填。 三位数的 SAP 客户端编号。 |
SAP Instance Name |
必填。 在 Cloud Run SAP RFC 网关中配置的目标 SAP 实例的名称。 |
操作输出
锁定 SAP 用户操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例展示了使用锁定 SAP 用户操作时收到的 JSON 结果输出:
{
"status": "SUCCESS",
"functionId": "USER_LOCK",
"sap_instance": "PRD",
"client": "100",
"return": [
{
"type": "S",
"message": "User locked successfully."
}
]
}
输出消息
锁定 SAP 用户操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully locked user
SAP_USERNAME. |
操作成功。 |
Error executing action - "Lock SAP User". Reason: Failed to lock
user SAP_USERNAME. SAP Error:
ERROR_SUMMARY |
由于 SAP 系统返回错误,操作失败。 验证用户名是否存在于指定的 SAP 客户端中,以及网关通信用户是否有权锁定用户账号。 |
Error executing action - "Lock SAP User". Reason: SAP Client
Number must be a 3-digit numeric string (got
'SAP_CLIENT_NUMBER'). |
操作未通过参数验证。 为 |
Error executing action - "Lock SAP User". Reason: Proxy request
failed (HTTP STATUS_CODE):
ERROR_DETAIL |
对 Cloud Run SAP RFC 网关的请求失败。 验证 |
脚本结果
下表列出了使用锁定 SAP 用户操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
true 或 false |
Ping
使用 Ping 操作测试与 SAP ERP Cloud Run 网关服务的身份验证和网络连接。
此操作不会在 Google SecOps 实体上运行。
操作输入
无。
操作输出
Ping 操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 不可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
输出消息
Ping 操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully connected to the SAP ERP server with the provided
connection parameters! |
操作成功。 |
Failed to connect to the SAP ERP server! Error is Failed to
generate Google Cloud authentication token. Verify service account
credentials and permissions. |
该操作未能生成 Google Cloud 身份验证令牌。 验证您的 |
Failed to connect to the SAP ERP server! Error is Authentication
to Cloud Run failed (HTTP
STATUS_CODE). Verify the caller
has roles/run.invoker on the service. |
Cloud Run 网关拒绝了身份验证请求。 确保该服务账号在 Cloud Run 服务上具有 Cloud Run Invoker ( |
Failed to connect to the SAP ERP server! Error is Cloud Run
service returned unexpected HTTP
STATUS_CODE:
ERROR_DETAIL |
Cloud Run 网关返回了意外的 HTTP 状态代码。 验证 |
脚本结果
下表列出了使用 Ping 操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
true 或 false |