本文档介绍了当 SAP 系统在位于本地、其他云服务提供商位置或 Google Cloud外部的其他环境中的主机上运行或是由 SAP 通过 SAP RISE 计划管理时,如何设置身份验证以访问 Google Cloud。
如需向 Google Cloud进行身份验证,您可以使用 Google Cloud签名的 JSON Web 令牌 (JWT) 从 Google Cloud获取访问令牌。简要配置步骤如下:
- 启用 Google Cloud API。
- 为基于 JWT 的令牌检索创建服务账号。
- 在 SAP LT Replication Server 主机上为 Google Cloud 配置安全设置。
- 创建另一个服务账号以进行授权。
- 创建 BigQuery 数据集。
- 设置 TLS/SSL 证书和 HTTPS。
- 在
/GOOG/CLIENT_KEY
中指定权限设置。
启用 Google Cloud API
在您的 Google Cloud 项目中,启用所需的 Google Cloud API。
如需通过 Pub/Sub 进行 CDC 复制,请启用以下 API:
- Pub/Sub API
- BigQuery API
- IAM 服务账号凭据 API
对于流式数据复制,请启用以下 API:
- BigQuery API
- IAM 服务账号凭据 API
如需了解如何启用 Google Cloud API,请参阅启用 API。
为基于 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 错误”错误
创建用于授权的服务账号
本部分介绍了创建服务账号以进行授权,以及设置 TLS/SSL 证书以实现安全通信的过程。
创建服务账号
BigQuery Connector for SAP 需要 IAM 服务账号才能进行身份验证和授权,以便访问 Google Cloud 资源。
此服务账号必须是包含已启用的 Google Cloud API 的 Google Cloud 项目中的主账号。如果您在 Google Cloud API 所在的项目中创建服务账号,该服务账号会自动添加为该项目的主账号。
如果您在不同于包含已启用 Google Cloud API 的项目创建服务账号,则需要在额外步骤中将该服务账号添加到已启用 Google Cloud API 的项目。
如需创建服务账号,请执行以下操作:
在 Google Cloud 控制台中,前往“IAM 和管理”的服务账号页面。
如果出现提示,请选择您的 Google Cloud 项目。
点击创建服务账号。
为服务账号指定名称并提供说明(可选)。
点击创建并继续。
如果您要在启用了 Google Cloud API 的同一项目中创建服务账号,请在向此服务账号授予对项目的访问权限面板中,根据需要选择角色:
对于通过 Pub/Sub 进行的 CDC 复制,请选择以下角色:
- “发布/订阅”编辑者
- BigQuery Data Editor
- BigQuery Job User
对于流式数据复制,请选择以下角色:
- BigQuery Data Editor
- BigQuery Job User
如果您要在不同于已启用 Google Cloud API 的项目的项目中创建服务账号,请不要向服务账号授予任何角色。
点击继续。
根据具体情况授予其他用户访问服务账号的权限。
点击完成。该服务账号会显示在项目的服务账号列表中。
如果您在与启用的 Google Cloud API所在项目不同的项目中创建服务账号,请记下服务账号的名称。您可以在将服务账号添加到已启用 Google Cloud API 的项目时指定该名称。如需了解详情,请参阅将服务账号添加到 BigQuery 项目。
现在该服务账号会在创建它的 Google Cloud 项目的 IAM 权限页面上列为主账号。
将服务账号添加到目标项目
如果您在与包含已启用 Google Cloud API 的项目不同的项目中为 BigQuery Connector for SAP 创建了服务账号,则需要将服务账号添加到已启用 Google Cloud API 的项目。
如果您在启用了 Google Cloud API 的同一项目中创建了服务账号,则可以跳过此步骤。
如需将现有服务账号添加到 BigQuery 数据集项目,请完成以下步骤:
在 Google Cloud 控制台中,前往“IAM 权限”页面:
确认页面顶部附近显示了包含已启用的Google Cloud API 的项目的名称。例如:
项目“
PROJECT_NAME
”的权限如果未显示,请切换项目。
在 IAM 页面上,点击
添加。系统会打开为“PROJECT_NAME
”添加主账号对话框。在为“
PROJECT_NAME
”添加主账号对话框中,完成以下步骤:- 在新的主账号字段中,指定服务账号的名称。
- 在选择角色字段中,指定 BigQuery Data Editor。
- 点击添加其他角色。选择角色字段将再次显示。
- 在选择角色字段中,指定 BigQuery Job User。
- 对于通过 Pub/Sub 进行的 CDC 复制,请重复上一步,并指定 Pub/Sub Editor。
- 点击保存。该服务账号会显示在 IAM 页面上的项目主账号列表中。
创建 BigQuery 数据集
如需创建 BigQuery 数据集,您的用户账号必须具有针对 BigQuery 的适当 IAM 权限。如需了解详情,请参阅所需权限。
在 Google Cloud 控制台中,前往 BigQuery 页面:
点击您的项目 ID 旁边的查看操作图标
,然后点击创建数据集。在数据集 ID 字段中,输入一个唯一名称。如需了解详情,请参阅命名数据集。
如需详细了解如何创建 BigQuery 数据集,请参阅创建数据集。
设置 TLS/SSL 证书和 HTTPS
BigQuery Connector for SAP 与 Google 服务之间的通信使用 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
https://pubsub.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 的其他考虑事项。
在 /GOOG/CLIENT_KEY
中指定权限设置
使用 SM30
事务指定Google Cloud访问权限设置。BigQuery Connector for SAP 会将设置以记录的形式存储在 /GOOG/CLIENT_KEY
自定义配置表中。
如需指定访问权限设置,请执行以下操作:
在 SAP GUI 中,输入事务代码
SM30
。选择
/GOOG/CLIENT_KEY
配置表。为以下表字段输入值:
字段 数据类型 说明 名称 字符串 为
CLIENT_KEY
配置指定描述性名称,例如BQC_CKEY
。客户端密钥名称是 BigQuery Connector for SAP 用于标识访问 Google Cloud的配置的唯一标识符。
服务账号名称 字符串 在创建服务账号步骤中为 BigQuery Connector for SAP 创建的服务账号的名称(采用邮箱格式)。例如:
sap-example-svc-acct@example-project-123456.
。范围 字符串 访问权限范围。 按照 Compute Engine 的建议指定
https://www.googleapis.com/auth/cloud-platform
API 访问权限范围。项目 ID 字符串 包含您的目标 BigQuery 数据集的项目的 ID。 命令名称 字符串 将此字段留空。
授权类 字符串 /GOOG/CL_GCP_AUTH_JWT
授权字段 不适用 将此字段留空。 令牌刷新秒数 整数 将此字段留空。 令牌缓存 Boolean 将此字段留空。
配置 RFC 目标
如需将 BigQuery Connector for SAP 连接到 Google Cloud,我们建议您使用 RFC 目标。
示例 RFC 目标 GOOG_OAUTH2_TOKEN
、GOOG_IAMCREDENTIALS
和 GOOG_BIGQUERY
将作为 BigQuery Connector for SAP 传输的一部分导入。
您需要复制示例 RFC 目标来创建新的 RFC 目标。
如需配置 RFC 目标,请执行以下操作:
在 SAP GUI 中,输入事务代码
SM59
。(推荐)复制示例 RFC 目标以创建新的 RFC 目标,然后记下新的 RFC 目标名称。您将在后续步骤中用到它们。
BigQuery Connector for SAP 使用 RFC 目标连接到Google Cloud API。
如果您想要测试基于 RFC 目标的连接,则可以跳过此步骤并使用示例 RFC 目标。
对于您创建的 RFC 目标,请执行以下操作:
进入 Technical Settings(技术设置)标签页,并确保 Service No.(服务编号)字段已设置为值
443
。这是 RFC 目标用于安全通信的端口。进入 Logon & Security(登录和安全)并确保 SSL Certificate(SSL 证书)字段设置了选项 DFAULT SSL Client (Standard)(默认 SSL 客户端 [标准])。
保存更改。
要测试连接,请点击 Connection Test(连接测试)。
包含
404 Not Found
的响应是可接受并且符合预期的,因为 RFC 目标中指定的端点对应于Google Cloud 服务,而不是该服务托管的特定资源。此响应表明目标 Google Cloud服务可访问并且未找到目标资源。
在 SAP GUI 中,输入事务代码
SM30
。在上一部分中创建的
/GOOG/CLIENT_KEY
表中,记下名称字段的值。在
/GOOG/SERVIC_MAP
表中,使用以下字段值创建条目:Google Cloud 密钥名称 Google 服务名称 RFC 目标 CLIENT_KEY_TABLE_NAME
bigquery.googleapis.com
指定以 BigQuery 为目标的 RFC 目标的名称。如果您使用示例 RFC 目标进行测试,请指定 GOOG_BIGQUERY
。CLIENT_KEY_TABLE_NAME
pubsub.googleapis.com
指定以 Pub/Sub 为目标的 RFC 目标的名称。如果您使用示例 RFC 目标进行测试,请指定 GOOG_PUBSUB
。CLIENT_KEY_TABLE_NAME
iamcredentials.googleapis.com
指定以 IAM 为目标的 RFC 目标的名称。如果您使用示例 RFC 目标进行测试,请指定 GOOG_IAMCREDENTIALS
。CLIENT_KEY_TABLE_NAME
googleapis.com/oauth2
指定以 Google OAuth 2.0 令牌端点为目标的 RFC 目标的名称,该端点用于将 JWT 换成访问令牌。 如果您使用示例 RFC 目标进行测试,请指定 GOOG_OAUTH2_TOKEN
。将
CLIENT_KEY_TABLE_NAME
替换为您在上一步中记下的客户端密钥名称。
配置代理设置
使用 RFC 目标连接到 Google Cloud时,您可以通过您在 SAP 环境中使用的代理服务器来路由 BigQuery Connector for SAP 通信。
如果您不想使用代理服务器,或者您的 SAP 环境中没有代理服务器,则可以跳过此步骤。
如需为 BigQuery Connector for SAP 配置代理服务器设置,请完成以下步骤:
在 SAP GUI 中,输入事务代码
SM59
。选择以 IAM 为目标的 RFC 目标。
进入 Technical Settings(技术设置)标签页,然后为 HTTP Proxy Options(HTTP 代理选项)部分中的字段输入值。
对以 BigQuery 为目标的 RFC 目标重复上述步骤。
启用 HTTP 压缩
使用 RFC 目标连接到 Google Cloud时,您可以启用 HTTP 压缩。
如果您不想启用此功能,则可以跳过此步骤。
如需启用 HTTP 压缩,请执行以下操作:
在 SAP GUI 中,输入事务代码
SM59
。选择以 BigQuery 为目标的 RFC 目标。
进入 Special Options(特殊选项)标签页。
对于 HTTP Version(HTTP 版本)字段,选择 HTTP 1.1。
对于 Compression(压缩)字段中,选择适当的值。
如需了解压缩选项,请参阅 SAP 说明 1037677 - HTTP 压缩仅压缩某些文档
指定 Private Service Connect 端点
如果您希望 BigQuery Connector for SAP 使用 Private Service Connect 端点以允许以非公开方式使用 BigQuery 和 IAM,则需要在 Google Cloud 项目中创建这些端点并在相应的 RFC 目标中指定它们。
如果您希望 BigQuery Connector for SAP 继续使用默认的公共 API 端点连接到 BigQuery 和 IAM,请跳过此步骤。
如需将 BigQuery Connector for SAP 配置为使用您的 Private Service Connect 端点,请执行以下操作:
在 SAP GUI 中,输入事务代码
SM59
。验证您是否已为 BigQuery 和 IAM 创建了新的 RFC 目标。如需了解如何创建这些 RFC 目标,请参阅配置 RFC 目标。
选择以 BigQuery 为目标的 RFC 目标,然后执行以下操作:
进入 Technical Settings(技术设置)标签页。
对于 Target Host(目标主机)字段,输入您为访问 BigQuery 而创建的 Private Service Connect 端点的名称。
进入 Logon and Security(登录和安全)标签页。
对于 Service No.(服务编号)字段,确保指定了值
443
。对于 SSL Certificate(SSL 证书)字段,请确保已选中 DFAULT SSL Client (Standard)(默认 SSL 客户端 [标准])选项。
选择以 IAM 为目标的 RFC 目标,然后执行以下操作:
进入 Technical Settings(技术设置)标签页。
对于 Target Host(目标主机)字段,输入您为访问 IAM 而创建的 Private Service Connect 端点的名称。
进入 Logon and Security(登录和安全)标签页。
对于 Service No.(服务编号)字段,确保指定了值
443
。对于 SSL Certificate(SSL 证书)字段,请确保已选中 DFAULT SSL Client (Standard)(默认 SSL 客户端 [标准])选项。