部署并配置托管 SAP 数据连接器代理的容器
本文介绍如何部署托管 SAP 数据连接器代理的容器,以及如何使用它来创建与 SAP 系统的连接。 需要执行此两步流程以将 SAP 数据引入 Microsoft Sentinel,作为适用于 SAP 应用程序的 Microsoft Sentinel 解决方案的一部分。
建议通过 Azure 门户部署容器并创建与 SAP 系统的连接。 本文介绍了此方法。 本文还介绍了通过从命令行调用 kickstart 脚本来实现这些目标的方法。
或者,也可以手动部署数据连接器 Docker 容器代理,例如在 Kubernetes 集群中。 有关更多信息,请开具支持工单。
重要
通过 Azure 门户部署容器并创建与 SAP 系统的连接的功能目前处于预览阶段。 Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
部署里程碑
适用于 SAP® 应用程序的 Microsoft Sentinel 解决方案的部署分为以下部分:
跨多个工作区使用解决方案(预览版)
部署数据连接器代理(当前部分)
可选部署步骤
数据连接器代理部署概述
为了使适用于 SAP 应用程序的 Microsoft Sentinel 解决方案正常运行,必须先将 SAP 数据引入 Microsoft Sentinel。 为此,你需要部署该解决方案的 SAP 数据连接器代理。
数据连接器代理作为一个容器在 Linux 虚拟机 (VM) 上运行。 此 VM 可以托管到 Azure、第三方云或本地。 建议使用 Azure 门户(预览版)安装和配置此容器;不过,你也可以选择使用 kickstart 脚本部署容器。 如果想要手动部署数据连接器 Docker 容器代理(例如在 Kubernetes 集群中),请开具支持工单以了解更多详细信息。
代理连接到 SAP 系统,从中拉取日志和其他数据,然后将这些日志发送到 Microsoft Sentinel 工作区。 为此,代理必须对 SAP 系统进行身份验证,这就是你在上一步中为 SAP 系统中的代理创建用户和角色的原因。
可以选择如何以及在何处存储代理配置信息,包括 SAP 身份验证密钥。 决定使用的方式可能会受到虚拟机部署位置以及决定使用的 SAP 身份验证机制的影响。 这些选项按优先顺序降序排列:
- Azure Key Vault,通过 Azure 系统分配的托管标识进行访问
- Azure Key Vault,通过 Microsoft Entra ID 已注册的应用程序服务主体进行访问
- 纯文本配置文件
对于上述任一方案,都可以选择使用 SAP 的安全网络通信 (SNC) 和 X.509 证书进行身份验证。 此选项提供了更高级别的身份验证安全性,但它只是在有限方案中的实用选项。
部署数据连接器代理容器包括以下步骤:
创建虚拟机并设置对 SAP 系统凭据的访问权限。 此过程可能需要由组织中的另一个团队执行,但必须在本文中的其他过程之前执行。
先决条件
在部署数据连接器代理之前,请确保满足所有部署先决条件。 有关详细信息,请参阅部署适用于 SAP 应用程序的 Microsoft Sentinel 解决方案的先决条件。
此外,如果你计划使用安全网络通信 (SNC) 通过安全连接引入 NetWeaver/ABAP 日志,请执行相关的准备步骤。 有关详细信息,请参阅使用 SNC 部署适用于 SAP 的 Microsoft Sentinel 数据连接器。
创建虚拟机并配置对凭据的访问权限
默认情况下,SAP 配置和身份验证机密可以且应当存储在 Azure Key Vault 中。 访问密钥保管库的方式取决于 VM 的部署位置:
Azure VM 上的容器可以使用 Azure 系统分配的托管标识无缝访问 Azure Key Vault。
如果无法使用系统分配的托管标识,容器还可以使用已注册 Microsoft Entra ID 的应用程序服务主体向 Azure Key Vault 进行身份验证,万不得已时可使用配置文件对其进行身份验证。
本地 VM 上的容器或第三方云环境中的 VM 无法使用 Azure 托管标识,但可以使用已注册 Microsoft Entra ID 的应用程序服务主体向 Azure Key Vault 进行身份验证。
如果出于某种原因,无法使用已注册的应用程序服务主体,则可以使用配置文件,但这不是首选。
注意
此过程可能需要由组织中的另一个团队执行,但必须在本文中的其他过程之前执行。
根据你计划如何存储和访问身份验证凭据和配置数据,选择以下选项卡之一。
使用 Azure VM 创建托管标识
运行以下命令在 Azure 中创建 VM(将
<placeholders>
替换为环境中的实际名称):az vm create --resource-group <resource group name> --name <VM Name> --image Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest --admin-username <azureuser> --public-ip-address "" --size Standard_D2as_v5 --generate-ssh-keys --assign-identity --role <role name> --scope <subscription Id>
有关详细信息,请参阅快速入门:使用 Azure CLI 创建 Linux 虚拟机。
重要
创建 VM 后,请务必应用组织适用的任何安全要求和强化过程。
上述命令将创建 VM 资源,生成如下所示的输出:
{ "fqdns": "", "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroupname/providers/Microsoft.Compute/virtualMachines/vmname", "identity": { "systemAssignedIdentity": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy", "userAssignedIdentities": {} }, "location": "chinaeast2", "macAddress": "00-11-22-33-44-55", "powerState": "VM running", "privateIpAddress": "192.168.136.5", "publicIpAddress": "", "resourceGroup": "resourcegroupname", "zones": "" }
复制 systemAssignedIdentity GUID,因为它将用于后续步骤中。 这是你的托管标识。
创建 Key Vault
此过程介绍如何创建密钥保管库来存储代理配置信息,包括 SAP 身份验证密钥。 如果要使用现有的密钥保管库,请直接跳到步骤 2。
创建密钥保管库:
运行以下命令,用实际名称替换
<placeholder>
值。az keyvault create \ --name <KeyVaultName> \ --resource-group <KeyVaultResourceGroupName>
分配密钥保管库访问权限
在密钥保管库中,将机密范围上以下基于 Azure 角色的访问控制或保管库访问策略权限分配给之前创建和复制的标识。
权限模型 所需的权限 Azure 基于角色的访问控制 Key Vault 机密用户 保管库访问策略 get
,list
使用门户中的选项分配权限,或运行以下命令之一,将密钥保管库机密权限分配给你的标识,用实际名称替换
<placeholder>
值。 选择创建的标识类型对应的选项卡。根据首选的 Key Vault 权限模型,运行以下命令之一,将密钥保管库机密权限分配给 VM 的系统分配托管标识。 命令中指定的策略允许 VM 列出密钥保管库并读取密钥。
Azure 基于角色的访问控制权限模型:
az role assignment create --assignee-object-id <ManagedIdentityId> --role "Key Vault Secrets User" --scope /subscriptions/<KeyVaultSubscriptionId>/resourceGroups/<KeyVaultResourceGroupName> /providers/Microsoft.KeyVault/vaults/<KeyVaultName>
保管库访问策略权限模型:
az keyvault set-policy -n <KeyVaultName> -g <KeyVaultResourceGroupName> --object-id <ManagedIdentityId> --secret-permissions get list
在同一密钥保管库中,将机密范围上的以下基于 Azure 角色的访问控制或保管库访问策略权限分配给配置数据连接器代理的用户:
权限模型 所需的权限 Azure 基于角色的访问控制 Key Vault 机密管理人员 保管库访问策略 get
,list
,set
,delete
使用门户中的选项分配权限,或运行以下命令之一,将密钥保管库机密权限分配给你的用户,用实际名称替换
<placeholder>
值:Azure 基于角色的访问控制权限模型:
az role assignment create --role "Key Vault Secrets Officer" --assignee <UserPrincipalName> --scope /subscriptions/<KeyVaultSubscriptionId>/resourceGroups/<KeyVaultResourceGroupName>/providers/Microsoft.KeyVault/vaults/<KeyVaultName>
保管库访问策略权限模型:
az keyvault set-policy -n <KeyVaultName> -g <KeyVaultResourceGroupName> --upn <UserPrincipalName>--secret-permissions get list set delete
部署数据连接器代理
现在你已经创建了 VM 和 Key Vault,下一步是创建新代理并连接到其中一个 SAP 系统。
以具有 sudo 权限的用户身份登录到要安装代理的新创建的 VM。
将 SAP NetWeaver SDK 下载或传输到计算机。
根据你是使用托管标识还是注册应用程序来访问密钥保管库,以及是使用 Azure 门户还是命令行来部署代理,使用以下一组过程:
提示
Azure 门户只能与 Azure 密钥保管库一起使用。 如果改用配置文件,请使用相关的命令行选项。
Azure 门户选项(预览版)
根据用于访问密钥保管库的标识类型,选择以下选项卡之一。
注意
如果之前手动或使用 kickstart 脚本安装 SAP 连接器代理,则无法在 Azure 门户中配置或管理这些代理。 如果要使用门户配置和更新代理,则必须使用门户重新安装现有代理。
此过程介绍如何通过 Azure 门户创建新代理,并使用托管标识进行身份验证:
在 Microsoft Sentinel 导航菜单中,选择“数据连接器”。
在搜索栏中输入 SAP。
从搜索结果中选择“适用于 SAP 的 Microsoft Sentinel”,然后选择“打开连接器页面”。
若要从 SAP 系统收集数据,必须执行以下两个步骤:
创建新代理
在“配置”区域中,选择“添加新代理(预览版)”。
在右侧的“创建收集器代理”下,定义代理详细信息:
名称 描述 代理名称 输入代理名称,包括以下任一字符: - a-z
- A-Z
- 0-9
- _(下划线)
- 。 (period)
- - (dash)
订阅 / 密钥保管库 从各自的下拉列表中选择“订阅”和“密钥保管库”。 代理 VM 上的 NWRFC SDK zip 文件路径 输入 VM 中包含 SAP NetWeaver 远程函数调用 (RFC) 软件开发工具包 (SDK) 存档(.zip 文件)的路径。
确保此路径包含 SDK 版本号,其语法如下:<path>/NWRFC<version number>.zip
。 例如:/src/test/nwrfc750P_12-70002726.zip
。启用 SNC 连接支持 选择使用安全网络通信 (SNC) 通过安全连接引入 NetWeaver/ABAP 日志。
如果选择此选项,请在代理 VM 上的 SAP 加密库路径下输入包含sapgenpse
二进制文件和libsapcrypto.so
库的路径。Azure Key Vault 身份验证 若要使用托管标识对密钥保管库进行身份验证,请选择默认的“托管标识”选项。
必须提前设置托管标识。 有关详细信息,请参阅创建虚拟机并配置对凭据的访问权限。注意
如果要使用 SNC 连接,请确保在此阶段选择“启用 SNC 连接支持”,因为完成代理部署后,将无法返回并启用 SNC 连接。 有关详细信息,请参阅使用 SNC 部署适用于 SAP 的 Microsoft Sentinel 数据连接器。
例如:
选择“创建”,并在查看建议之后完成部署:
部署 SAP 数据连接器代理需要使用“Microsoft Sentinel Business Applications 代理操作员”和“读取者”角色向代理的 VM 身份授予对 Microsoft Sentinel 工作区的特定权限。
你必须是 Microsoft Sentinel 工作区上的资源组所有者,才能运行此步骤中的命令。 如果你不是工作区的资源组所有者,也可以在代理部署完成后执行此过程。
复制步骤 1 中的角色分配命令并在代理 VM 上运行它们,将
Object_ID
占位符替换为你的 VM 标识对象 ID。 例如:若要在 Azure 中查找 VM 标识对象 ID,请转到“企业应用程序”>“所有应用程序”,然后选择 VM 名称。 复制“对象 ID”字段的值以与复制的命令一起使用。
这些命令将“Microsoft Sentinel Business Applications 代理操作员”和“读取者”Azure 角色分配给 VM 的托管标识,仅包括工作区中指定代理数据的范围。
重要
通过 CLI 分配“Microsoft Sentinel Business Applications 代理操作员”和“读者”角色只会在工作区中指定代理数据的范围内分配该角色。 这是最安全的,因此也是推荐的选项。
如果必须通过 Azure 门户分配角色,我们建议在较小范围内分配角色,例如仅在 Microsoft Sentinel 工作区上分配角色。
选择步骤 2 中“代理部署命令”旁边的“复制”。 例如:
复制命令行后,选择“关闭”。
相关代理信息将部署到 Azure Key Vault 中,新代理显示在“添加基于 API 的收集器代理”下的表中。
在此阶段,代理的“运行状况”状态为“未完成安装。请按照说明进行操作”。 成功安装代理后,状态将更改为“代理正常”。 此更新最多可能需要 10 分钟。 例如:
注意
该表仅显示通过 Azure 门户部署的代理的代理名称和运行状况。 此处不显示使用命令行部署的代理。
在计划安装代理的虚拟机上,打开终端并运行在上一步中复制的“代理部署命令”。
该脚本会更新操作系统组件并安装 Azure CLI、Docker 软件和其他所需的实用程序,例如 jq、netcat 和 curl。
根据需要向脚本提供其他参数以自定义容器部署。 有关可用命令行选项的详细信息,请参阅 Kickstart 脚本参考。
如果需要再次复制命令,请选择“运行状况”列右侧的“视图”,并复制右下角“代理部署命令”旁边的命令。
连接到新的 SAP 系统
向 SAP 系统添加新连接的任何人都必须对存储 SAP 凭据的密钥保管库具有写入权限。 有关详细信息,请参阅创建虚拟机并配置对凭据的访问权限。
在“配置”区域中,选择“添加新系统(预览版)”。
在“选择代理”下,选择在上一步创建的代理。
在“系统标识符”下,选择服务器类型并提供服务器详细信息。
选择“下一步: 身份验证”。
对于基本身份验证,请提供用户和密码。 如果在设置代理时选择了 SNC 连接,请选择“SNC”并提供证书详细信息。
选择“下一步: 日志”。
选择要从 SAP 中提取的日志,然后选择“下一步: 查看和创建”。
查看定义的设置。 选择“上一步”以修改任何设置,或选择“部署”以部署系统。
定义的系统配置将部署到 Azure Key Vault。 现在可以在“配置 SAP 系统并将其分配给收集器代理”下的表中查看系统详细信息。 此表显示关联的代理名称、SAP 系统 ID (SID),以及通过 Azure 门户或其他方法添加的系统运行状况。
在此阶段,系统的“运行状况”为“挂起”。 如果代理成功更新,它将从 Azure Key Vault 拉取配置,并且状态将更改为“系统正常”。 此更新最多可能需要 10 分钟。
详细了解如何监视 SAP 系统运行状况。
命令行选项
根据用于访问密钥保管库的标识类型,选择以下选项卡之一:
使用命令行创建新代理,使用托管标识进行身份验证:
下载并运行部署 Kickstart 脚本:
wget -O sapcon-sentinel-kickstart.sh https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/SAP/sapcon-sentinel-kickstart.sh && bash ./sapcon-sentinel-kickstart.sh --cloud mooncake
该脚本更新 OS 组件、安装 Azure CLI 和 Docker 软件以及其他必需的实用工具(jq、netcat、curl),并提示你输入配置参数值。 可以向脚本提供其他参数,从而最大程度地减少提示数量,或对容器部署进行自定义。 有关可用命令行选项的详细信息,请参阅 Kickstart 脚本参考。
按照屏幕上的说明输入 SAP 和密钥保管库详细信息并完成部署。 部署完成后会显示一条确认消息:
The process has been successfully completed, thank you!
记下脚本输出中的 Docker 容器名称。 若要查看 VM 上的 docker 容器列表,请运行:
docker ps -a
在下一步中,你将使用 docker 容器的名称。
部署 SAP 数据连接器代理需要使用“Microsoft Sentinel Business Applications 代理操作员”和“读取者”角色向代理的 VM 身份授予对 Microsoft Sentinel 工作区的特定权限。
必须是 Microsoft Sentinel 工作区上的资源组所有者,才能运行此步骤中的命令。 如果你不是工作区的资源组所有者,也可以稍后执行此过程。
将“Microsoft Sentinel Business Applications 代理操作员”和“读取者”角色分配给 VM 的标识:
通过运行以下命令获取代理 ID,并将
<container_name>
占位符替换为使用 Kickstart 脚本创建的 docker 容器的名称:docker inspect <container_name> | grep -oP '"SENTINEL_AGENT_GUID=\K[^"]+
例如,返回的代理 ID 可能是
234fba02-3b34-4c55-8c0e-e6423ceb405b
。通过运行以下命令来分配“Microsoft Sentinel Business Applications 代理操作员”和“读者”角色:
az role assignment create --assignee-object-id <Object_ID> --role --assignee-principal-type ServicePrincipal "Microsoft Sentinel Business Applications Agent Operator" --scope /subscriptions/<SUB_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/microsoft.operationalinsights/workspaces/<WS_NAME>/providers/Microsoft.SecurityInsights/BusinessApplicationAgents/<AGENT_IDENTIFIER> az role assignment create --assignee-object-id <Object_ID> --role --assignee-principal-type ServicePrincipal "Reader" --scope /subscriptions/<SUB_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/microsoft.operationalinsights/workspaces/<WS_NAME>/providers/Microsoft.SecurityInsights/BusinessApplicationAgents/<AGENT_IDENTIFIER>
按如下所示替换占位符值:
占位符 值 <OBJ_ID>
托管标识对象 ID。
若要在 Azure 中查找 VM 标识对象 ID,请转到“企业应用程序”>“所有应用程序”,然后选择 VM 名称。 复制“对象 ID”字段的值以与复制的命令一起使用。<SUB_ID>
Microsoft Sentinel 工作区订阅 ID <RESOURCE_GROUP_NAME>
Microsoft Sentinel 工作区资源组名称 <WS_NAME>
Microsoft Sentinel 工作区名称 <AGENT_IDENTIFIER>
在上一步中运行命令后显示的代理 ID。 若要将 Docker 容器配置为自动启动,请运行以下命令,并将
<container-name>
占位符替换为容器的名称:docker update --restart unless-stopped <container-name>
后续步骤
部署连接器后,继续部署适用于 SAP® 应用程序的 Microsoft Sentinel 解决方案内容: