本文档介绍了当 SAP 系统在位于本地、其他云服务提供商位置或 Google Cloud外部的其他环境中的主机上运行或是由 SAP 通过 SAP RISE 计划管理时,如何设置身份验证以访问 Google Cloud 。
如需向 Google Cloud进行身份验证,您可以使用 Google Cloud签名的 JSON Web 令牌 (JWT) 从 Google Cloud获取访问令牌。简要配置步骤如下:
- 为基于 JWT 的 Google Cloud身份验证创建服务账号。
- 在 SAP LT Replication Server 主机上为 Google Cloud 配置安全设置。
- 创建另一个服务账号以授权访问 BigQuery。
- 创建 ABAP 配置。
为基于 JWT 的令牌检索创建服务账号
对于向 Google Cloud进行基于 JWT 的身份验证,BigQuery Connector for SAP 需要 IAM 服务账号。
创建服务账号
如需为基于 JWT 的令牌检索创建服务账号,请完成以下步骤:
在 Google Cloud 控制台中,前往“IAM 和管理”的服务账号页面。
如果出现提示,请选择您的 Google Cloud 项目。
点击创建服务账号。
为服务账号指定名称并提供说明(可选)。
点击创建并继续。
在向此服务账号授予对项目的访问权限面板中,选择 Service Account Token Creator 角色。
点击继续。
根据具体情况授予其他用户访问服务账号的权限。
点击完成。该服务账号会显示在 Google Cloud 项目的服务账号列表中。
创建服务账号密钥
您需要为用于基于 JWT 的令牌检索的服务账号创建 P12 服务账号密钥。
如需创建服务账号密钥,请完成以下步骤:
在 Google Cloud 控制台中,前往“IAM 和管理”的服务账号页面。
选择您的 Google Cloud 项目。
点击您在上一部分创建服务账号中为基于 JWT 的令牌检索创建的服务账号的电子邮件地址。
在服务账号名称下,点击密钥标签页。
点击添加密钥下拉菜单,然后选择创建新密钥以创建服务账号密钥。
接受 P12 作为密钥类型,然后点击创建。
私钥已保存到您的计算机。
记下私钥文件的密码
notasecret
。向您的 SAP 管理员提供私钥和密码,以将私钥导入
STRUST
,如将服务账号密钥导入 STRUST 中所述。
在 SAP LT Replication Server 主机上为服务账号启用 JWT 签名
如需针对为基于 JWT 的令牌检索创建的服务账号启用 JWT 签名,您需要将参数 JWT_SERVC_ACCT
添加到表 /GOOG/BQ_PARAM
并配置服务账号。
如需为服务账号启用 JWT 签名,请完成以下步骤:
在 SAP GUI 中,输入以
/n
开头的/GOOG/SLT_SETTINGS
事务:/n/GOOG/SLT_SETTINGS
在
/GOOG/SLT_SETTINGS
事务的启动屏幕中,从设置表下拉菜单中选择参数。点击执行图标。此时将显示 BigQuery 设置维护 - 参数屏幕。
点击插入行图标。
在所显示的行中,指定以下设置:
- 在参数名称字段中,输入
JWT_SERVC_ACCT
。系统会自动填充参数说明。 - 在参数值字段中输入您在上一部分(创建服务账号)中为基于 JWT 的令牌检索创建的服务账号的电子邮件地址。
- 在参数名称字段中,输入
点击保存。
您的设置将以记录形式存储在
/GOOG/BQ_PARAM
配置表中,系统会自动填充更改者、更改时间和更改位置字段。
在 SAP LT Replication Server 主机上为 Google Cloud 配置安全设置
本部分介绍如何在 SAP LT Replication Server 主机上为 Google Cloud配置安全设置,这涉及创建 SSF 应用条目并将服务账号密钥导入 STRUST
。
创建新的安全存储和转发 (SSF) 应用
在 SSFAPPLIC
表中,ZG_JWT
条目作为 BigQuery Connector for SAP 传输的一部分导入。如果 ZG_JWT
条目未导入,您需要使用事务 SE16
创建一个名为 ZG_JWT
的新条目。
如需在 SSFAPPLIC
表中创建新条目,请完成以下步骤:
- 在 SAP GUI 中,输入事务代码
SE16
。 - 在表名称字段中,输入
SSFAPPLIC
,然后创建一个新条目。 - 对于 APPLIC 字段,请输入
ZG_JWT
。 - 选择除 B_INCCERTS、B_DETACHED、B_ASKPWD 和 B_DISTRIB 字段以外的所有其他字段。
- 在 DESCRIPT 字段中,输入
JWT Signature for GCP
。 保存新条目。
此条目会成为事务
STRUST
中的新节点,您将向该节点导入服务账号密钥。
启用 STRUST
节点
使用事务 SSFA
为 JWT Signature for GCP
启用 STRUST
节点。
如需启用 STRUST
节点,请完成以下步骤:
- 在 SAP GUI 中,输入事务
SSFA
。 - 点击新建条目。
在 SSF 应用下拉列表中,选择
JWT Signature for GCP
。这是您在表SSFAPPLIC
中创建的新条目。以下屏幕截图显示了由 SAP 自动填充的应用专用 SSF 参数。
保存新条目。
新节点
SSF JWT Signature for GCP
已在事务STRUST
中启用。现在,您可以将服务账号密钥导入此节点。
将服务账号密钥导入 STRUST
如需将服务账号密钥导入 STRUST
,请完成以下步骤:
在 SAP GUI 中,输入事务代码
STRUST
。验证事务
STRUST
中的新节点为SSF JWT Signature for GCP
。导入私钥文件:
- 从菜单栏中选择 PSE > 导入。
- 根据您的源系统类型,选择适当的私钥:
- S4/HANA
- 选择 P12 私钥。
- 输入文件密码
notasecret
,然后点击确定。
- ECC
- 选择 PSE 私钥。您需要将之前下载的 P12 私钥转换为 PSE 私钥。如需详细了解如何将 P12 密钥转换为 PSE 密钥,请参阅将 P12 密钥转换为 PSE 密钥。
- 输入您在私钥从 P12 密钥转换为 PSE 密钥期间创建的文件 PIN 码,然后点击确定。
- S4/HANA
选择 PSE > 另存为。
选择 SSF 应用选项按钮,然后在相应字段中选择您在创建新的安全存储和转发 (SSF) 应用中创建的新 SSF 应用节点。
保存新条目。
服务密钥会附加到 SSF 应用节点
SSF JWT Signature for GCP
。
将 P12 私钥转换为 PSE 密钥
如果来源系统是 SAP NetWeaver 7.0x (SAP ECC),您需要将 P12 密钥转换为 PSE 密钥。
如需将 P12 密钥转换为 PSE 密钥,请完成以下步骤:
转到以下路径:
/usr/sap/SID/SYS/exe/run/
将 SID 替换为 SAP 系统 ID。
替换占位符后运行以下命令:
sapgenpse import_p12 -p PSE_PATH_AND_FILE_NAME P12_PATH_AND_FILE_NAME.p12
替换以下内容:
PSE_PATH_AND_FILE_NAME
:指定 PSE 文件的路径和文件名P12_PATH_AND_FILE_NAME
:指定 P12 密钥文件的路径和文件名
输入 P12 私钥文件的密码
notasecret
。为 PSE 私钥创建一个新 PIN 码,然后再次输入您的 PIN 码。
记下 PIN 码,在将 PSE 私钥文件导入
STRUST
时,您需要提供此 PIN 码。
如需从 SAP 获取如何将 P12 密钥转换为 PSE 密钥的相关信息,请参阅:
- SAP 说明 2148457 - 如何将 PKCS#12 / PFX 容器的密钥对转换为 PSE 文件
- SAP 说明 2976401 - 将 PKCS#12 / PFX 容器的密钥对转换为 PSE 文件时出现“import_p12:创建 PSE 错误”错误
创建服务账号以授权访问 BigQuery
本部分介绍了创建服务账号、将其添加到 BigQuery 项目并授予必要角色,以及设置 TLS/SSL 证书以实现安全通信的过程。
创建服务账号
BigQuery Connector for SAP 需要 IAM 服务账号才能进行身份验证和授权,以便访问 BigQuery。
此服务账号必须是包含 BigQuery 数据集的 Google Cloud 项目中的主账号。如果您在 BigQuery 数据集所在的项目中创建服务账号,该服务账号会自动添加为该项目的主账号。
如果您在不同于 BigQuery 数据集的项目中创建服务账号,则需要在额外步骤中将该服务账号添加到 BigQuery 数据集项目。
如需创建服务账号,请完成以下步骤:
在 Google Cloud 控制台中,前往“IAM 和管理”的服务账号页面。
如果出现提示,请选择您的 Google Cloud 项目。
点击创建服务账号。
为服务账号指定名称并提供说明(可选)。
点击创建并继续。
如果您要在 BigQuery 数据集所在的项目中创建服务账号,请在向此服务账号授予对项目的访问权限面板中,选择以下角色:
- BigQuery Data Editor
- BigQuery Job User
如果您要在不同于 BigQuery 数据集的项目中创建服务账号,请不要向服务账号授予任何角色。
点击继续。
根据具体情况授予其他用户访问服务账号的权限。
点击完成。该服务账号会显示在项目的服务账号列表中。
如果您在与 BigQuery 数据集所在项目不同的项目中创建服务账号,请记下服务账号的名称。您可以在将服务账号添加到 BigQuery 项目时指定该名称。如需了解详情,请参阅 将服务账号添加到 BigQuery 项目。
现在该服务账号会在创建它的 Google Cloud 项目的 IAM 权限页面上列为主账号。
将服务账号添加到 BigQuery 项目
如果您在与目标 BigQuery 数据集不同的项目中为 BigQuery Connector for SAP 创建了服务账号,则需要将服务账号添加到 BigQuery 数据集项目。
如果您在 BigQuery 数据集所在的项目中创建了服务账号,则可以跳过此步骤。
如需将现有服务账号添加到 BigQuery 数据集项目,请完成以下步骤:
在 Google Cloud 控制台中,前往“IAM 权限”页面:
确认页面顶部显示包含目标 BigQuery 数据集的项目的名称。例如:
项目“
PROJECT_NAME
”的权限如果未显示,请切换项目。
在 IAM 页面上,点击
添加。系统会打开为“PROJECT_NAME
”添加主账号对话框。在为“
PROJECT_NAME
”添加主账号对话框中,完成以下步骤:- 在新的主账号字段中,指定服务账号的名称。
- 在选择角色字段中,指定 BigQuery Data Editor。
- 点击添加其他角色。选择角色字段将再次显示。
- 在选择角色字段中,指定 BigQuery Job User。
- 点击保存。该服务账号会显示在 IAM 页面上的项目主账号列表中。
现在,您可以使用此服务账号访问此项目中的 BigQuery 数据集。
设置 TLS/SSL 证书和 HTTPS
BigQuery Connector for SAP 和 BigQuery API 之间的通信使用 TLS/SSL 和 HTTPS 进行保护。
如需连接到 Google 服务,请遵循 Google Trust Services 建议。您至少必须从 Google Trust Services 仓库下载所有根 CA 证书。
为确保您使用的是最新的受信任根 CA 证书,我们建议您每六个月更新一次系统的根证书存储区。Google 会在 Google Trust Services 上发布新的和已移除的根 CA 证书。如需接收自动通知,请在 Google Trust Services 上订阅 RSS Feed。
在 SAP GUI 中,使用
STRUST
事务将根 CA 证书导入SSL client SSL Client (Standard)
PSE 文件夹。如需查看 SAP 提供的详细信息,请参阅 SAP 帮助 - 维护 PSE 认证列表。
在 SAP LT Replication Server 主机上,确认已将所有防火墙规则或代理配置为允许从 HTTPS 端口到 BigQuery API 的出站流量。
具体而言,SAP LT Replication Server 需要能够访问以下Google Cloud API:
https://bigquery.googleapis.com
https://iamcredentials.googleapis.com
如果您希望 BigQuery Connector for SAP 通过 VPC 网络中的 Private Service Connect 端点访问 Google Cloud API,则必须配置 RFC 目标,并在这些 RFC 目标中指定 Private Service Connect 端点。如需了解详情,请参阅 RFC 目标。
如需详细了解 SAP 提供的关于设置 TLS/SSL 的信息,请参阅 SAP 说明 510007 - 在应用服务器 ABAP 上设置 TLS/SSL 的其他考虑事项。
创建 ABAP 配置
本部分介绍了用于实现安全通信和数据传输的基本 ABAP 配置。
创建 RFC 目标
RFC 目标 GOOG_OAUTH2_TOKEN
、GOOG_IAMCREDENTIALS
和 GOOG_BIGQUERY
将作为 BigQuery Connector for SAP 传输的一部分导入。如果未导入这些 RFC 目标,则需要使用事务 SM59
创建新的 RFC 目标 GOOG_OAUTH2_TOKEN
、GOOG_IAMCREDENTIALS
和 GOOG_BIGQUERY
。
如需了解如何创建 RFC 目标,请参阅配置 RFC 目标。
在 /GOOG/CLIENT_KEY
中指定权限设置
使用 SM30
事务指定Google Cloud访问权限设置。BigQuery Connector for SAP 会将设置以记录的形式存储在 /GOOG/CLIENT_KEY
自定义配置表中。
要指定访问权限设置,请完成以下步骤:
在 SAP GUI 中,输入事务代码
SM30
。选择
/GOOG/CLIENT_KEY
配置表。为以下表字段输入值:
字段 数据类型 说明 名称 字符串 此 CLIENT_KEY
配置的名称。服务账号名称 字符串 在创建服务账号步骤中为 BigQuery Connector for SAP 创建的服务账号的名称(采用电子邮件地址格式)。例如:
sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
。范围 字符串 访问权限范围。 按照 Compute Engine 的建议指定
https://www.googleapis.com/auth/cloud-platform
API 访问权限范围。项目 ID 字符串 包含您的目标 BigQuery 数据集的项目的 ID。 命令名称 字符串 将此字段留空。 授权类 字符串 授权类。 指定
/GOOG/CL_GCP_AUTH_JWT
。授权字段 不适用 将此字段留空。 令牌刷新秒数 整数 将此字段留空。
在 /GOOG/SERVIC_MAP
中指定 RFC 目标
使用事务 SM30
在服务映射表 /GOOG/SERVIC_MAP
中指定 RFC 目标。
如需指定 RFC 目标,请完成以下步骤:
在 SAP GUI 中,输入事务代码
SM30
。在上一部分中创建的
/GOOG/CLIENT_KEY
表中,记下名称字段的值。在
/GOOG/SERVIC_MAP
表中,使用以下字段值创建条目:
名称 | 服务名称 | RFC 目标 |
---|---|---|
CLIENT_KEY_TABLE_NAME | googleapis.com/oauth2 |
GOOG_OAUTH2_TOKEN |
CLIENT_KEY_TABLE_NAME | iamcredentials.googleapis.com |
GOOG_IAMCREDENTIALS |
将 CLIENT_KEY_TABLE_NAME 替换为您在上一步中记下的表名称。