从命令行部署 SAP 数据连接器代理

本文提供了用于部署 SAP 数据连接器代理的命令行选项。 对于一般的部署,我们建议使用门户而不是命令行,因为通过命令行安装的数据连接器代理只能通过命令行进行管理。

但是,如果使用的是配置文件而不是 Azure Key Vault 来存储凭据,或者如果你是一名高级用户,想要在 Kubernetes 群集等位置手动部署数据连接器,请改用本文中的过程。

虽然可以在单台计算机上运行多个数据连接器代理,但建议先从一个代理开始,监视性能,然后慢慢增加连接器数。 我们还建议安全团队在 SAP BASIS 团队的帮助下执行此过程

先决条件

使用托管标识或已注册的应用程序部署数据连接器代理

此过程介绍如何创建新的代理并通过命令行将其连接到 SAP 系统,使用托管标识或已注册 Microsoft Entra ID 的应用程序进行身份验证。

若要部署数据连接器代理,请执行以下操作

  1. 下载并运行部署 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
      
      • 对于由世纪互联运营的 Microsoft Azure,请将 --cloud mooncake 添加到复制命令的末尾。
    • 对于已注册的应用程序,运行以下命令,从 Microsoft Sentinel GitHub 存储库下载部署 Kickstart 脚本,并将其标记为可执行文件

      wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/SAP/sapcon-sentinel-kickstart.sh
      chmod +x ./sapcon-sentinel-kickstart.sh
      

      运行脚本,以指定应用程序 ID、机密(“密码”)、租户 ID 和密钥保管库名称(已在前面步骤中复制)。 例如:

      ./sapcon-sentinel-kickstart.sh --keymode kvsi --appid aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa --appsecret ssssssssssssssssssssssssssssssssss -tenantid bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb -kvaultname <key vault name>
      
    • 若要配置安全 SNC 配置,请指定以下基本参数

      • --use-snc
      • --cryptolib <path to sapcryptolib.so>
      • --sapgenpse <path to sapgenpse>
      • --server-cert <path to server certificate public key>

      如果客户端证书采用 .crt 或 .key 格式,请使用以下开关:

      • --client-cert <path to client certificate public key>
      • --client-key <path to client certificate private key>

      如果客户端证书采用 .pfx 或 .p12 格式,请使用以下开关:

      • --client-pfx <pfx filename>
      • --client-pfx-passwd <password>

      如果客户端证书是由企业 CA 颁发的,请在信任链中为每个 CA 添加以下开关:

      • --cacert <path to ca certificate>

      例如:

      wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/SAP/sapcon-sentinel-kickstart.sh
      chmod +x ./sapcon-sentinel-kickstart.sh    --use-snc     --cryptolib /home/azureuser/libsapcrypto.so     --sapgenpse /home/azureuser/sapgenpse     --client-cert /home/azureuser/client.crt --client-key /home/azureuser/client.key --cacert /home/azureuser/issuingca.crt    --cacert /home/azureuser/rootca.crt --server-cert /home/azureuser/server.crt
      

    该脚本更新 OS 组件、安装 Azure CLI 和 Docker 软件以及其他必需的实用工具(jq、netcat、curl),并提示你输入配置参数值。 向脚本提供额外参数,从而最大程度地减少提示数量,或对容器部署进行自定义。 有关可用命令行选项的详细信息,请参阅 Kickstart 脚本参考

  2. 按照屏幕上的说明输入 SAP 和密钥保管库详细信息并完成部署。 部署完成后会显示一条确认消息:

    The process has been successfully completed, thank you!
    

    记下脚本输出中的 Docker 容器名称。 若要查看 VM 上的 docker 容器列表,请运行:

    docker ps -a
    

    在下一步中,你将使用 docker 容器的名称。

  3. 部署 SAP 数据连接器代理要求使用“Microsoft Sentinel Business Applications 代理操作员”和“读者”角色向代理的 VM 标识授予特定权限以访问启用了 Microsoft Sentinel 的 Log Analytics 工作区

    若要在此步骤运行命令,必须成为启用了 Microsoft Sentinel 的 Log Analytics 工作区的资源组所有者。 如果你不是工作区的资源组所有者,也可以稍后执行此过程。

    将“Microsoft Sentinel Business Applications 代理操作员”和“读取者”角色分配给 VM 的标识:

    1. 通过运行以下命令获取代理 ID,并将 <container_name> 占位符替换为使用 kickstart 脚本创建的 docker 容器的名称:

      docker inspect <container_name> | grep -oP '"SENTINEL_AGENT_GUID=\K[^"]+
      

      例如,返回的代理 ID 可能是 234fba02-3b34-4c55-8c0e-e6423ceb405b

    2. 通过运行以下命令来分配“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,请执行以下操作:
    - 对于托管标识,对象 ID 列在 VM 的“标识”页上
    - 对于服务主体,请转到 Azure 中的企业应用程序。 选择“所有应用程序”,然后选择你的 VM。 对象 ID 显示在“概述”页上
    <SUB_ID> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的订阅 ID
    <RESOURCE_GROUP_NAME> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的资源组名称
    <WS_NAME> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的名称
    <AGENT_IDENTIFIER> 上一步中运行命令后显示的代理 ID。
  4. 若要将 Docker 容器配置为自动启动,请运行以下命令,并将 <container-name> 占位符替换为容器的名称:

    docker update --restart unless-stopped <container-name>
    

部署过程会生成一个 systemconfig.json 文件,其中包含 SAP 数据连接器代理的配置详细信息。 该文件位于 VM 上的 /sapcon-app/sapcon/config/system 目录中。

使用配置文件部署数据连接器

建议使用 Azure Key Vault 来存储身份验证凭据和配置数据。 如果无法使用 Azure Key Vault,此过程介绍了如何改用配置文件部署数据连接器代理容器。

若要部署数据连接器代理,请执行以下操作

  1. 创建一个用于部署代理的虚拟机。

  2. SAP NetWeaver SDK 传输到要在其中安装代理的计算机。

  3. 运行以下命令,从 Microsoft Sentinel GitHub 存储库下载部署 Kickstart 脚本,并将其标记为可执行文件:

    wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/SAP/sapcon-sentinel-kickstart.sh
    chmod +x ./sapcon-sentinel-kickstart.sh
    
  4. 运行脚本:

    ./sapcon-sentinel-kickstart.sh --keymode cfgf
    

    该脚本更新 OS 组件、安装 Azure CLI 和 Docker 软件以及其他必需的实用工具(jq、netcat、curl),并提示你输入配置参数值。 根据需要向脚本提供额外参数,从而最大程度地减少提示数量,或对容器部署进行自定义。 有关详细信息,请参阅 Kickstart 脚本参考

  5. 按照屏幕上的说明输入请求的详细信息并完成部署。 部署完成后会显示一条确认消息:

    The process has been successfully completed, thank you!
    

    记下脚本输出中的 Docker 容器名称。 若要查看 VM 上的 docker 容器列表,请运行:

    docker ps -a
    

    在下一步中,你将使用 docker 容器的名称。

  6. 部署 SAP 数据连接器代理要求使用“Microsoft Sentinel Business Applications 代理操作员”和“读者”角色向代理的 VM 标识授予特定权限以访问启用了 Microsoft Sentinel 的 Log Analytics 工作区

    必须是工作区上的资源组所有者,才能运行此步骤中的命令。 如果你不是工作区的资源组所有者,也可以稍后执行此步骤。

    将“Microsoft Sentinel Business Applications 代理操作员”和“读取者”角色分配给 VM 的标识:

    1. 通过运行以下命令获取代理 ID,并将 <container_name> 占位符替换为使用 Kickstart 脚本创建的 docker 容器的名称:

      docker inspect <container_name> | grep -oP '"SENTINEL_AGENT_GUID=\K[^"]+'
      

      例如,返回的代理 ID 可能是 234fba02-3b34-4c55-8c0e-e6423ceb405b

    2. 通过运行以下命令来分配“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:对于托管标识,对象 ID 列在 VM 的“标识”页上。 对于服务主体,请转到 Azure 中的企业应用程序。 选择“所有应用程序”,然后选择你的 VM。 对象 ID 显示在“概述”页上
      <SUB_ID> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的订阅 ID
      <RESOURCE_GROUP_NAME> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的资源组名称
      <WS_NAME> 启用了 Microsoft Sentinel 的 Log Analytics 工作区的名称
      <AGENT_IDENTIFIER> 上一步中运行命令后显示的代理 ID。
  7. 运行以下命令,将 Docker 容器配置为自动启动。

    docker update --restart unless-stopped <container-name>
    

部署过程会生成一个 systemconfig.json 文件,其中包含 SAP 数据连接器代理的配置详细信息。 该文件位于 VM 上的 /sapcon-app/sapcon/config/system 目录中。

准备 kickstart 脚本以便使用 SNC 进行安全通信

此过程介绍如何准备用于配置设置的部署脚本以便使用 SNC 与 SAP 系统进行安全通信。 如果使用 SNC,则必须在部署数据连接器代理之前执行此过程。

若要配置容器以便使用 SNC 进行安全通信,请执行以下操作

  1. 将 libsapcrypto.so 和 sapgenpse 文件传输到要在其中创建容器的系统

  2. 将客户端证书(包括私钥和公钥)传输到要在其中创建容器的系统。

    客户端证书和密钥可以是 .p12、.pfx 或 Base64 .crt 和 .key 格式。

  3. 将服务器证书(仅限公钥)传输到将在其中创建容器的系统。

    服务器证书必须采用 Base64 .crt 格式。

  4. 如果客户端证书是由企业证书颁发机构颁发的,请将颁发的 CA 和根 CA 证书传输到将在其中创建容器的系统。

  5. 从 Microsoft Sentinel GitHub 存储库中获取 kickstart 脚本:

    wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/SAP/sapcon-sentinel-kickstart.sh
    
  6. 更改脚本的权限以使其可执行:

    chmod +x ./sapcon-sentinel-kickstart.sh
    

有关详细信息,请参阅适用于 SAP 应用程序数据连接器代理的 Microsoft Sentinel 的 Kickstart 部署脚本参考

要获得监视 SAP PAHI 表的最佳结果,请打开 systemconfig.json 文件进行编辑,并在 [ABAP Table Selector](reference-systemconfig-json.md#abap-table-selector) 部分下启用 PAHI_FULLPAHI_INCREMENTAL 参数

有关详细信息,请参阅 Systemconfig.json 文件引用验证 PAHI 表是否定期更新

检查连接和运行状况

部署 SAP 数据连接器代理后,请检查代理的运行状况和连接情况。 有关详细信息,请参阅监视 SAP 系统的运行状况和角色

下一步

部署连接器后,继续部署适用于 SAP 应用程序的 Microsoft Sentinel 解决方案内容: