本文說明如何設定驗證,以便在 SAP 系統託管於 Compute Engine VM 執行個體時存取 Google Cloud。
啟用 Google Cloud API
在 Google Cloud 專案中啟用必要的 Google Cloud API。
如要透過 Pub/Sub 進行 CDC 複製,請啟用下列 API:
- Pub/Sub API
- BigQuery API
- IAM Service Account Credentials API
如要複製串流資料,請啟用下列 API:
- BigQuery API
- IAM Service Account Credentials API
如要瞭解如何啟用 API,請參閱「啟用 API」。 Google Cloud
建立服務帳戶
BigQuery Connector for SAP 需要 IAM 服務帳戶進行驗證和授權,才能存取 Google Cloud 資源。
這個服務帳戶必須是包含已啟用 Google Cloud API 的 Google Cloud 專案中的主體。如果您在與 Google Cloud API 相同的專案中建立服務帳戶,系統會自動將該服務帳戶新增為專案主體。
如果您在啟用 Google Cloud API 的專案以外的專案中建立服務帳戶,則需要額外執行步驟,將服務帳戶新增至啟用 Google Cloud API 的專案。
如要建立服務帳戶,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「IAM & Admin」(IAM 與管理) 的「Service accounts」(服務帳戶) 頁面。
如果出現提示,請選取 Google Cloud 專案。
按一下「Create Service Account」(建立服務帳戶)。
指定服務帳戶名稱,並視需要輸入說明。
按一下「建立並繼續」。
如果您要在啟用 API 的專案中建立服務帳戶,請在「授予這個服務帳戶專案存取權」面板中,視需要選取角色: Google Cloud
如要透過 Pub/Sub 進行 CDC 複製,請選取下列角色:
- Pub/Sub 編輯者
- BigQuery 資料編輯者
- BigQuery 工作使用者
如要複製串流資料,請選取下列角色:
- BigQuery 資料編輯者
- BigQuery 工作使用者
如果您在啟用 Google Cloud API 的專案以外的專案中建立服務帳戶,請勿授予服務帳戶任何角色。
按一下「繼續」。
視情況授予其他使用者服務帳戶的存取權。
按一下 [完成]。服務帳戶會顯示在專案的服務帳戶清單中。
如果您在不同專案中建立服務帳戶,而非包含已啟用 Google Cloud API 的專案,請記下服務帳戶名稱。將服務帳戶新增至已啟用 Google Cloud API 的專案時,您會指定名稱。詳情請參閱 將服務帳戶新增至 BigQuery 專案。
服務帳戶現在會列為 Google Cloud 服務帳戶建立所在專案的「IAM Permissions」(IAM 權限) 頁面中的主體。
將服務帳戶新增至目標專案
如果您在啟用 Google Cloud API 的專案以外的專案中,為 BigQuery Connector for SAP 建立服務帳戶,則必須將服務帳戶新增至啟用 Google Cloud API 的專案。
如果您在啟用 Google Cloud API 的專案中建立服務帳戶,可以略過這個步驟。
如要將現有服務帳戶新增至 BigQuery 資料集專案,請完成下列步驟:
前往 Google Cloud 控制台的「IAM Permissions」(IAM 權限) 頁面:
確認頁面頂端附近顯示的專案名稱,是包含已啟用Google Cloud API 的專案。例如:
專案「
PROJECT_NAME
」的權限如果不是,請切換專案。
在「IAM」頁面中,按一下「新增」
。系統會開啟「為『PROJECT_NAME
』新增主體」對話方塊。在「Add principals to "
PROJECT_NAME
"」(將主體新增至「PROJECT_NAME
」) 對話方塊中,完成下列步驟:- 在「新增主體」欄位中,指定服務帳戶名稱。
- 在「Select a role」(選取角色) 欄位中,指定「BigQuery Data Editor」(BigQuery 資料編輯者)。
- 按一下「新增其他角色」。「選取角色」欄位會再次顯示。
- 在「請選擇角色」欄位中,指定「BigQuery 工作使用者」。
- 如要透過 Pub/Sub 進行 CDC 複製,請重複上述步驟,並指定「Pub/Sub 編輯者」。
- 按一下 [儲存]。服務帳戶會顯示在「IAM」IAM頁面的專案主體清單中。
設定主機 VM 的安全性
BigQuery Connector for SAP 要求裝載 SAP LT Replication Server 的 Compute Engine VM 必須設定下列安全性選項:
- 主機 VM 的存取權範圍必須設為允許完整存取 Cloud API。
- 主機 VM 的服務帳戶必須包含 IAM「服務帳戶憑證建立者」角色。
如果主機 VM 未設定這些選項,您必須進行設定。
檢查主機 VM 的 API 存取權範圍
檢查 SAP LT Replication Server 主機 VM 的目前存取權範圍設定。如果 VM 已具備所有 Cloud API 的完整存取權,則不需要變更存取權範圍。
如要檢查主機 VM 的存取範圍,請按照下列步驟操作:
Google Cloud 控制台
在 Google Cloud 控制台中開啟 VM 執行個體頁面:
如有需要,請選取包含 SAP LT 複寫伺服器主機的專案 Google Cloud 。
在「VM 執行個體」頁面中,按一下主機 VM 的名稱。VM 詳細資料頁面隨即開啟。
在主機 VM 詳細資料頁面的「API and identity management」(API 和身分管理) 下,檢查「Cloud API access scopes」(Cloud API 存取權範圍) 的目前設定:
- 如果設定為「允許所有 Cloud API 的完整存取權」,表示設定正確,無須變更。
- 如果設定不是「允許所有 Cloud API 的完整存取權」,您需要停止 VM 並變更設定。如需操作說明,請參閱下一節。
gcloud CLI
顯示主機 VM 目前的存取權範圍:
gcloud compute instances describe VM_NAME --zone=VM_ZONE --format="yaml(serviceAccounts)"
如果存取權範圍不包含
https://www.googleapis.com/auth/cloud-platform
,您需要變更主機 VM 的存取權範圍。舉例來說,如果您要使用預設的 Compute Engine 服務帳戶建立 VM 執行個體,則需要變更下列預設存取權範圍:serviceAccounts: - email: 600915385160-compute@developer.gserviceaccount.com scopes: - https://www.googleapis.com/auth/devstorage.read_only - https://www.googleapis.com/auth/logging.write - https://www.googleapis.com/auth/monitoring.write - https://www.googleapis.com/auth/servicecontrol - https://www.googleapis.com/auth/service.management.readonly - https://www.googleapis.com/auth/trace.append
如果
scopes
下方列出的範圍只有https://www.googleapis.com/auth/cloud-platform
,如下列範例所示,則不需要變更範圍:serviceAccounts: - email: 600915385160-compute@developer.gserviceaccount.com scopes: - https://www.googleapis.com/auth/cloud-platform
變更主機 VM 的 API 存取權範圍
如果 SAP LT Replication Server 主機 VM 無法完整存取Google Cloud API,請變更存取權範圍,允許完整存取所有 Cloud API。
如要變更主機 VM 的「Cloud API access scopes」(Cloud API 存取權範圍) 設定,請按照下列步驟操作:
Google Cloud 控制台
如有必要,請限制授予主機 VM 安全性帳戶的角色。
您可以在「API 和身分管理」下,找到主機 VM 詳細資料頁面的安全帳戶名稱。如要變更授予服務帳戶的角色,請前往 Google Cloud 控制台的「IAM」頁面,然後點選「主體」。
如有必要,請停止在主機 VM 上執行的任何工作負載。
在 Google Cloud 控制台中開啟 VM 執行個體頁面:
在 VM 執行個體頁面中,按一下主機 VM 的名稱,開啟 VM 詳細資料頁面。
在主機 VM 詳細資料頁面頂端,按一下「STOP」(停止)
,停止主機 VM。停止 VM 後,按一下「編輯」
。在「安全性與存取權」>「存取權範圍」下方,選取「允許所有 Cloud API 的完整存取權」。
按一下 [儲存]。
在主機 VM 詳細資料頁面頂端,按一下「啟動/繼續」
,啟動主機 VM。如有需要,請重新啟動主機 VM 上停止運作的工作負載。
gcloud CLI
如有需要,請調整授予 VM 服務帳戶的 IAM 角色,確保主機 VM 對服務的存取權受到適當限制。 Google Cloud
如要瞭解如何變更授予服務帳戶的角色,請參閱「更新服務帳戶」。
如有必要,請停止在主機 VM 上執行的任何 SAP 軟體。
停止 VM:
gcloud compute instances stop VM_NAME --zone=VM_ZONE
變更 VM 的存取權範圍:
gcloud compute instances set-service-account VM_NAME --scopes=cloud-platform --zone=VM_ZONE
啟動 VM:
gcloud compute instances start VM_NAME --zone=VM_ZONE
視需要啟動主機 VM 上執行的 SAP 軟體。
允許主機 VM 取得存取權杖
您需要為主機 VM 建立專屬服務帳戶,並授予該服務帳戶權限,以取得 BigQuery Connector for SAP 存取Google Cloud時所需的存取權杖。
如要讓主機 VM 取得存取權杖,請按照下列步驟操作:
在 Google Cloud 控制台中,為主機 VM 執行個體建立 IAM 服務帳戶。
如要瞭解如何建立服務帳戶,請參閱「建立服務帳戶」。
將
Service Account Token Creator
角色授予服務帳戶。如要瞭解如何授予角色,請參閱「授予單一角色」。將服務帳戶附加至執行 SAP 工作負載的 VM 執行個體。
如要瞭解如何將服務帳戶附加至 VM 執行個體,請參閱「建立 VM 並附加服務帳戶」。
主機 VM 現在有權建立存取權杖。
建立 BigQuery 資料集
如要建立 BigQuery 資料集,使用者帳戶必須具備 BigQuery 的適當 IAM 權限。詳情請參閱「必要權限」。
前往 Google Cloud 控制台的「BigQuery」頁面:
點選專案 ID 旁邊的「查看動作」圖示
,然後點選「建立資料集」。在「Dataset ID」(資料集 ID) 欄位中,輸入專屬名稱。詳情請參閱「命名資料集」。
如要進一步瞭解如何建立 BigQuery 資料集,請參閱建立資料集。
設定 TLS/SSL 憑證和 HTTPS
BigQuery Connector for SAP 與 Google 服務之間的通訊會使用 TLS/SSL 和 HTTPS 加密,確保安全無虞。
如要連線至 Google 服務,請按照 Google Trust Services 的建議操作。 您至少必須從 Google Trust Services 存放區下載所有根 CA 憑證。
為確保您使用的是最新且可信任的根憑證授權單位憑證,建議每六個月更新一次系統的根憑證存放區。Google 會在 Google Trust Services 公布新增和移除的根 CA 憑證。 如要自動接收通知,請訂閱 Google Trust Services 的 RSS 動態消息。
在 SAP GUI 中,使用
STRUST
交易將根 CA 憑證匯入SSL client SSL Client (Standard)
PSE 資料夾。如需 SAP 提供的詳細資訊,請參閱 SAP 說明 - 維護 PSE 認證清單。
在 SAP LT Replication Server 主機上,確認任何防火牆規則或 Proxy 都已設定為允許從 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 透過虛擬私有雲網路中的 Private Service Connect 端點存取 Google Cloud API,您必須設定 RFC 目的地,並在這些 RFC 目的地中指定 Private Service Connect 端點。詳情請參閱 RFC 目的地。
如要進一步瞭解如何設定 TLS/SSL,請參閱 SAP 附註 510007 - Additional considerations for setting up TLS/SSL on Application Server ABAP。
在「/GOOG/CLIENT_KEY
」中指定存取權設定
使用交易 SM30
指定Google Cloud的存取權設定。BigQuery Connector for SAP 會將設定儲存為/GOOG/CLIENT_KEY
自訂設定資料表中的記錄。
如要指定存取權設定,請按照下列步驟操作:
在 SAP GUI 中,輸入交易代碼
SM30
。選取
/GOOG/CLIENT_KEY
設定表格。在下列表格欄位中輸入值:
欄位 資料類型 說明 名稱 字串 為設定指定描述性名稱,例如
CLIENT_KEY
BQC_CKEY
。用戶端金鑰名稱是不重複的 ID,BigQuery Connector for SAP 會使用這個 ID 識別 Google Cloud的存取設定。
服務帳戶名稱 字串 服務帳戶名稱 (電子郵件地址格式),是在「建立服務帳戶」步驟中為 BigQuery Connector for SAP 建立。例如:
sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
。範圍 字串 存取權範圍。 指定
https://www.googleapis.com/auth/cloud-platform
API 存取權範圍,如 Compute Engine 建議。 這個存取範圍對應於主機 VM 的Allow full access to all Cloud APIs
設定。詳情請參閱「在主機 VM 上設定存取範圍」。專案 ID 字串 目標 BigQuery 資料集所屬專案的 ID。 指令名稱 字串 請將這個欄位留空。
授權類別 字串 指定 /GOOG/CL_GCP_AUTH_GOOGLE
授權欄位 不適用 請將這個欄位留空。 權杖更新秒數 整數 存取權杖到期前必須重新整理的時間長度 (秒)。預設值為
3500
。如要覆寫這個預設值,請在進階設定中為CMD_SECS_DEFLT
參數設定值。指定介於
1
到3599
之間的值,即可覆寫預設到期時間。如果您指定0
,則 BigQuery Connector for SAP 會使用預設值。權杖快取 布林值 這個旗標會決定是否要快取從 Google Cloud 擷取的存取權杖。 建議您完成 BigQuery Connector for SAP 的設定,並測試與 Google Cloud的連線後,再啟用權杖快取。如要進一步瞭解權杖快取,請參閱「啟用權杖快取」。
設定 RFC 目的地
如要將 BigQuery Connector for SAP 連接至 Google Cloud,建議使用 RFC 目的地。
範例 RFC 目的地 GOOG_IAMCREDENTIALS
和 GOOG_BIGQUERY
會匯入為 SAP 傳輸的 BigQuery 連接器一部分。
您需要複製範例 RFC 目的地,藉此建立新的 RFC 目的地。
如要設定 RFC 目的地,請執行下列操作:
在 SAP GUI 中,輸入交易代碼
SM59
。(建議) 複製範例 RFC 目的地,然後建立新的 RFC 目的地,並記下新的 RFC 目的地名稱。您會在後續步驟中使用這些值。
BigQuery Connector for SAP 會使用 RFC 目的地連線至Google Cloud API。
如要測試以 RFC 目的地為基礎的連線,可以略過這個步驟,並使用範例 RFC 目的地。
針對您建立的 RFC 目的地,請執行下列操作:
前往「技術設定」分頁,確認「服務編號」欄位的值已設為
443
。RFC 目的地會使用這個通訊埠進行安全通訊。前往「Logon & Security」(登入和安全性) 分頁,確認「SSL Certificate」(SSL 憑證) 欄位已設為「DEFAULT SSL Client (Standard)」(預設 SSL 用戶端 (標準))。
您也可以視需要設定 Proxy 設定、啟用 HTTP 壓縮,以及指定 Private Service Connect 端點。
儲存變更。
如要測試連線,請按一下「連線測試」。
包含
404 Not Found
的回應是可以接受且預期的,因為 RFC 目的地中指定的端點對應至Google Cloud 服務,而非服務代管的特定資源。這類回應表示目標 Google Cloud服務可連線,但找不到目標資源。
在 SAP GUI 中,輸入交易代碼
SM30
。在您於前一節建立的
/GOOG/CLIENT_KEY
資料表中,記下「Name」欄位的值。在
/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
換成您在上一步記下的用戶端金鑰名稱。
設定 Proxy 設定
使用 RFC 目的地連線至 Google Cloud時,您可以透過 SAP 環境中使用的 Proxy 伺服器,從 BigQuery Connector for SAP 傳送通訊內容。
如果您不想使用 Proxy 伺服器,或 SAP 環境中沒有 Proxy 伺服器,可以略過這個步驟。
如要為 BigQuery Connector for SAP 設定 Proxy 伺服器,請完成下列步驟:
在 SAP GUI 中,輸入交易代碼
SM59
。選取以 IAM 為目標的 RFC 目的地。
前往「技術設定」分頁,然後在「HTTP Proxy 選項」部分中輸入欄位值。
針對以 BigQuery 為目標的 RFC 目的地,重複執行上一個步驟。
啟用 HTTP 壓縮
使用 RFC 目的地連線至 Google Cloud時,可以啟用 HTTP 壓縮。
如不想啟用這項功能,可以略過這個步驟。
如要啟用 HTTP 壓縮功能,請按照下列步驟操作:
在 SAP GUI 中,輸入交易代碼
SM59
。選取以 BigQuery 為目標的 RFC 目的地。
前往「特殊選項」分頁。
在「HTTP Version」(HTTP 版本) 欄位中,選取「HTTP 1.1」。
針對「Compression」(壓縮選項) 欄位,請選取適當的值。
如需壓縮選項的相關資訊,請參閱 SAP Note 1037677 - HTTP compression compresses certain documents only
指定 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 目的地,然後執行下列操作:
前往「技術設定」分頁。
在「Target Host」(目標主機) 欄位中,輸入您為存取 BigQuery 而建立的 Private Service Connect 端點名稱。
前往「登入與安全性」分頁。
確認「服務編號」欄位已指定
443
值。在「SSL Certificate」(SSL 憑證) 欄位中,確認已選取「DEFAULT SSL Client (Standard)」(預設 SSL 用戶端 (標準)) 選項。
選取以 IAM 為目標的 RFC 目的地,然後執行下列操作:
前往「技術設定」分頁。
在「目標主機」欄位中,輸入您建立的 Private Service Connect 端點名稱,以便存取 IAM。
前往「登入與安全性」分頁。
確認「服務編號」欄位已指定
443
值。在「SSL Certificate」(SSL 憑證) 欄位中,確認已選取「DEFAULT SSL Client (Standard)」(預設 SSL 用戶端 (標準)) 選項。
在網際網路通訊管理員 (ICM) 中驗證 HTTP 和 HTTPS 連接埠
VM 中繼資料會儲存在中繼資料伺服器上,且只能透過 HTTP 連接埠存取。因此,您必須驗證 HTTP 和 HTTPS 通訊埠是否已建立並啟用,才能存取 VM 中繼資料。
- 在 SAP GUI 中,輸入交易代碼
SMICM
。 - 在選單列中,依序點選「前往」>「服務」。 「Actv」欄中的綠色勾號表示 HTTP 和 HTTPS 連接埠處於啟用狀態。
如要瞭解如何設定 HTTP 和 HTTPS 連接埠,請參閱「ICM 中的 HTTP(S) 設定」。
測試 Google Cloud 驗證和授權
要求存取權杖並擷取 BigQuery 資料集的相關資訊,確認您已正確設定 Google Cloud 驗證。
請按照下列程序,從 SAP LT Replication Server 主機 VM 測試驗證和授權: Google Cloud
在 SAP LT Replication Server 主機 VM 上,開啟指令列殼層。
切換到
sidadm
使用者。向主機 VM 的中繼資料伺服器要求第一個存取權杖:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
中繼資料伺服器會傳回類似下列範例的存取權杖,其中 ACCESS_TOKEN_STRING_1 是存取權杖字串,您會在下一個步驟中將其複製到指令中:
{"access_token":"ACCESS_TOKEN_STRING_1", "expires_in":3599,"token_type":"Bearer"}
發出下列指令並取代預留位置值,向 IAM API 要求第二個存取權杖:
Linux
curl --request POST \ "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT:generateAccessToken" \ --header "Authorization: Bearer ACCESS_TOKEN_STRING_1" \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --data "{"scope":["https://www.googleapis.com/auth/bigquery"],"lifetime":"300s"}" \ --compressed
Windows
curl --request POST ` "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT:generateAccessToken" ` --header "Authorization: Bearer ACCESS_TOKEN_STRING_1" ` --header "Accept: application/json" ` --header "Content-Type: application/json" ` --data "{"scope":["https://www.googleapis.com/auth/bigquery"],"lifetime":"300s"}" ` --compressed
更改下列內容:
SERVICE_ACCOUNT
:您在先前步驟中為 BigQuery Connector for SAP 建立的服務帳戶。ACCESS_TOKEN_STRING_1
:上一個步驟中的第一個存取權杖字串。
IAM API 會傳回第二個存取權杖 ACCESS_TOKEN_STRING_2,類似於下列範例。在下一個步驟中,您會將這個第二個權杖字串複製到 BigQuery API 的要求中。
{"access_token":"ACCESS_TOKEN_STRING_2","expires_in":3599,"token_type":"Bearer"}
替換預留位置值後,發出下列指令,即可擷取 BigQuery 資料集的相關資訊:
Linux
curl "https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_NAME" \ -H "Accept: application/json" -H "Authorization: Bearer ACCESS_TOKEN_STRING_2"
Windows
curl "https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_NAME" ` -H "Accept: application/json" -H "Authorization: Bearer ACCESS_TOKEN_STRING_2"
更改下列內容:
PROJECT_ID
:包含 BigQuery 資料集的專案 ID。DATASET_NAME
:目標資料集的名稱,如 BigQuery 中所定義。ACCESS_TOKEN_STRING_2
:IAM API 在上一個步驟中傳回的存取權杖字串。
如果 Google Cloud 驗證設定正確,系統就會傳回資料集相關資訊。
如果設定不正確,請參閱 BigQuery Connector for SAP 疑難排解。