使用 JSON Web Token 進行驗證

本文說明如何設定驗證,以便在 SAP 系統於下列主機上執行時存取 Google CloudAPI:內部部署、其他雲端供應商、 Google Cloud以外的其他環境,或透過 SAP RISE 計畫由 SAP 管理。如要向Google Cloud進行驗證,請使用已簽署的 JSON Web Token (JWT) 向 Google Cloud取得存取權杖。 Google Cloud

高階設定步驟如下:

必要條件

如要讓 SAP 應用程式伺服器透過 HTTPS 連線至 Google Cloud API,請確認下列事項:

  • 確認交易 SMICM 中已啟用 HTTPS 連接埠。

  • 在 SAP 主機上,設定防火牆規則或 Proxy,允許 HTTPS 通訊埠的外送流量傳向必要 Google Cloud API。具體來說,您的 SAP 系統必須能夠存取下列 API 端點:

    • https://iamcredentials.googleapis.com
    • 您要透過 SDK 使用的 API 的 API 端點。

建立服務帳戶,以擷取以 JWT 為基礎的權杖

如要使用 JWT 進行驗證,ABAP 適用的 Google Cloud SDK 需要 IAM 服務帳戶。 Google Cloud

建立服務帳戶

建立服務帳戶,並將 Service Account Token Creator IAM 角色授予該服務帳戶。

如要建立服務帳戶,請完成下列步驟:

  1. 在 Google Cloud 控制台中,為 JWT 憑證擷取作業建立 IAM 服務帳戶。

    前往「Service accounts」(服務帳戶)

    如要瞭解如何建立服務帳戶,請參閱「建立服務帳戶」。

  2. Service Account Token Creator 角色授予服務帳戶。如需操作說明,請參閱「授予單一角色」。

建立服務帳戶金鑰

您需要為用於 JWT 憑證擷取的服務帳戶建立 P12 服務帳戶金鑰。

如要建立服務帳戶金鑰,請完成下列步驟:

  1. 在 Google Cloud 控制台中,前往「IAM & Admin」(IAM 與管理) 的「Service accounts」(服務帳戶) 頁面。

    前往「Service accounts」(服務帳戶)

  2. 選取 Google Cloud 專案。

  3. 按一下您在上一節「建立服務帳戶」中,為 JWT 憑證式權杖擷取作業建立的服務帳戶電子郵件地址。

  4. 在服務帳戶名稱下方,按一下「金鑰」分頁標籤。

  5. 點選「新增金鑰」下拉式選單,然後選取「建立新的金鑰」,即可建立服務帳戶金鑰

  6. 接受 P12 做為金鑰類型,然後按一下「建立」

    私密金鑰會下載到您的電腦中。

  7. 記下私密金鑰檔案 (notasecret) 的密碼。

    將私密金鑰和密碼提供給 SAP 管理員,以便將私密金鑰匯入 STRUST,詳情請參閱「將服務帳戶金鑰匯入 STRUST」。

指定用於簽署 JWT 的服務帳戶

如要指定用於 JWT 簽署的服務帳戶,請按照下列步驟操作:

  1. 在 SAP GUI 中執行交易代碼 /GOOG/SDK_IMG

    或者,執行交易代碼 SPRO,然後按一下「SAP Reference IMG」

  2. 依序點選「ABAP SDK for Google Cloud」「Basic Settings」「Configure Parameters」

  3. 按一下「New Entries」

  4. 在「Parameter Name」(參數名稱) 欄位中,輸入 JWT_SERVC_ACCT。系統會自動填入參數說明。

  5. 在「參數值」欄位中,輸入服務帳戶的名稱。

  6. 儲存新項目。

在 SAP 主機系統上設定 Google Cloud 安全性設定

如要為您建立的服務帳戶啟用 JWT 簽署功能,以便根據 JWT 擷取權杖,您必須在 SAP 主機系統上設定Google Cloud 的安全性設定。

建立新的安全儲存轉送 (SSF) 應用程式

每個 SSFAPPLIC 項目可讓您儲存單一服務帳戶金鑰。 如要儲存多個專案的服務帳戶金鑰,請按照相同步驟建立多個 SSFAPPLIC 項目。

如要在 SSFAPPLIC 表格中建立新項目,請按照下列步驟操作:

  1. 在 SAP GUI 中,輸入交易代碼 SE16
  2. 在「Table Name」(資料表名稱) 欄位中輸入 SSFAPPLIC,然後建立新項目。
  3. 在「APPLIC」欄位中,輸入 SSF 應用程式的名稱,例如 ZG_JWT
  4. 除了 B_INCCERTSB_DETACHEDB_ASKPWDB_DISTRIB 欄位,請選取所有其他欄位。
  5. 在「DESCRIPT」(說明)DESCRIPT 欄位中輸入 JWT Signature for GCP
  6. 儲存新項目。

    這個項目會成為交易 STRUST 中的新節點,您可以在其中匯入服務帳戶金鑰。

啟用 STRUST 節點

使用交易 SSFAJWT Signature for GCP 啟用 STRUST 節點。

如要啟用 STRUST 節點,請執行下列步驟:

  1. 在 SAP GUI 中,輸入交易代碼 SSFA
  2. 按一下「New Entries」
  3. 在「SSF Application」(SSF 應用程式) 下拉式清單中,選取 JWT Signature for GCP。 這是您在資料表 SSFAPPLIC 中建立的新項目。

    系統會自動填入應用程式專屬的 SSF 參數。

  4. 儲存新項目。

    交易 STRUST 中已啟用新節點 SSF JWT Signature for GCP

將服務帳戶金鑰匯入 STRUST

如要將服務帳戶金鑰匯入 STRUST,請完成下列步驟:

  1. 在 SAP GUI 中,輸入交易代碼 STRUST

    確認交易 STRUST 中的新節點為 SSF JWT Signature for GCP

  2. 匯入私密金鑰檔案:

    1. 在選單列中依序選取「PSE」>「Import」
    2. 根據您的 SAP 系統,選取適當的私密金鑰:
      • SAP S/4HANA
        1. 選取 P12 私密金鑰。
        2. 輸入檔案密碼 notasecret,然後按一下「確定」
      • SAP ECC
        1. 選取 PSE 私密金鑰。您必須將先前下載的 P12 私密金鑰轉換成 PSE 私密金鑰。如要進一步瞭解如何將 P12 金鑰轉換為 PSE 金鑰,請參閱「將 P12 金鑰轉換為 PSE 金鑰」。
        2. 輸入您在私密金鑰轉換期間建立的檔案 PIN 碼 (從 P12 金鑰轉換為 PSE 金鑰),然後按一下「確定」
  3. 依序選取「PSE」>「另存新檔」

  4. 選取「SSF Application」,然後在對應的輸入欄位中,選取您在「建立新的安全儲存轉送 (SSF) 應用程式」中建立的新 SSF 應用程式節點。

  5. 儲存新項目。

    服務金鑰會附加至 SSF 應用程式節點 SSF JWT Signature for GCP

將 P12 私密金鑰轉換為 PSE 金鑰

如果您的 SAP 系統是 SAP NetWeaver 7.0x (SAP ECC),則必須將 P12 金鑰轉換為 PSE 金鑰。

如要將 P12 金鑰轉換為 PSE 金鑰,請按照下列步驟操作:

  1. 前往下列路徑:

    /usr/sap/SID/SYS/exe/run/

    SID 替換為 SAP 系統 ID。

  2. 替換預留位置後,執行下列指令:

    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 金鑰檔案的路徑和檔案名稱
  3. 輸入 P12 私密金鑰檔案 (notasecret) 的密碼。

  4. 為 PSE 私密金鑰建立新的 PIN 碼,然後重新輸入 PIN 碼。

  5. 請記下 PIN 碼,將 PSE 私密金鑰檔案匯入 STRUST 時,需要提供這個 PIN 碼。

如需 SAP 提供的資訊,瞭解如何將 P12 金鑰轉換為 PSE 金鑰,請參閱:

啟用 Google Cloud API

在 Google Cloud 控制台中,為需要驗證的 Google Cloud 專案啟用 IAM 服務帳戶憑證 API。除了 IAM 服務帳戶憑證 API 之外,您還需要啟用打算使用 SDK 存取的任何其他支援的 API

前往 API 程式庫

如要瞭解如何啟用 API,請參閱「啟用 API」。 Google Cloud

建立服務帳戶,授權存取 Google Cloud API

如要驗證及授權存取 Google Cloud API,ABAP SDK for Google Cloud 需要 IAM 服務帳戶。

建立服務帳戶

在 Google Cloud 控制台中,建立 IAM 服務帳戶。這個服務帳戶必須是 Google Cloud 專案中的主體,該專案包含您打算使用 SDK 執行的Google Cloud API。如果您在包含 Google Cloud API 的專案中建立服務帳戶,系統會自動將該服務帳戶新增為專案主體。

如果您在啟用 Google Cloud API 的專案以外的專案中建立服務帳戶,則需要額外步驟,將服務帳戶新增至該專案。

  1. 在 Google Cloud 控制台中,建立 IAM 服務帳戶,用於驗證及授權存取 Google Cloud API。

    前往「Service accounts」(服務帳戶)

    如要瞭解如何建立服務帳戶,請參閱「建立服務帳戶」。

  2. 在 Google Cloud 控制台中,授予服務帳戶存取 API 功能所需的 IAM 角色。如要瞭解 Google Cloud API 的角色需求,請參閱個別 API 說明文件,並遵循最低權限原則。如要進一步瞭解 API 專用的預先定義角色,請參閱「尋找 API 適用的 IAM 角色 Google Cloud 」。

  3. 如果您在其他專案中建立服務帳戶,而不是在包含您打算使用 SDK 取用 Google Cloud API 的專案中建立,請記下服務帳戶的名稱。將服務帳戶新增至專案時,您會指定名稱。 詳情請參閱「將服務帳戶加進 Google Cloud 專案」。

將服務帳戶新增至 Google Cloud 專案

如果您在專案中建立 ABAP SDK for Google Cloud 的服務帳戶,但該專案不包含您打算使用 SDK 執行的 Google Cloud API,則必須將服務帳戶新增至包含 Google Cloud API 的 Google Cloud 專案。

如果您在包含Google Cloud API 的專案中建立服務帳戶,可以略過這個步驟。

如要將現有服務帳戶新增至包含 Google Cloud API 的 Google Cloud 專案,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM Permissions」(IAM 權限) 頁面:

    前往「IAM permissions」(IAM 權限) 頁面

  2. 確認頁面頂端附近顯示的專案名稱,是否為包含目標Google Cloud API 的專案。例如:

    專案「PROJECT_NAME」的權限

    如果不是,請切換專案。

  3. 在「IAM」頁面中,按一下「授予存取權」。系統會開啟「授予『PROJECT_NAME』的存取權」對話方塊。

  4. 在「Grant access to」(授予「PROJECT_NAME」的存取權) 對話方塊中,執行下列步驟:

    1. 在「新增主體」欄位中,指定服務帳戶名稱。
    2. 在「Select a role」(請選擇角色) 欄位中,指定相關角色。 舉例來說,如要修改 Pub/Sub 的主題和訂閱項目,以及發布和調用訊息,可以指定 Pub/Sub 編輯者角色 (roles/pubsub.editor)。

      如要進一步瞭解 API 專用的預先定義角色,請參閱 IAM 基本和預先定義角色參考資料

    3. 視 API 用途新增其他角色。 採用 Google 建議的最佳做法,並遵循最低權限原則。

    4. 按一下 [儲存]。服務帳戶會顯示在「IAM」IAM頁面的專案主體清單中。

現在可以使用服務帳戶存取這個專案中的 Google Cloud API。

建立 SAP 設定

如要使用 JWT 驗證,請建立必要的 SAP 設定。

在用戶端金鑰資料表中指定存取設定

如要指定存取權設定,請執行下列步驟:

  1. 在 SAP GUI 中執行交易代碼 /GOOG/SDK_IMG

    或者,執行交易代碼 SPRO,然後按一下「SAP Reference IMG」

  2. 依序點選「ABAP SDK for Google Cloud」「Basic Settings」「Configure Client Key」

  3. 按一下「New Entries」

  4. 在下列欄位中輸入值:

    欄位 說明
    Google Cloud 金鑰名稱 指定用戶端金鑰設定的名稱。
    Google Cloud 服務帳戶名稱

    以電子郵件地址格式指定服務帳戶名稱,該服務帳戶是在「建立服務帳戶」步驟中,為 ABAP SDK for Google Cloud 建立。例如: sap-example-svc-acct@example-project-123456.

    Google Cloud 範圍 預設和必要範圍為 https://www.googleapis.com/auth/cloud-platform。 如需指定其他範圍,請以半形逗號分隔的清單形式提供。
    專案 ID 指定包含目標 API 的 Google Cloud 專案 ID。
    指令名稱 請將這個欄位留空。
    授權類別 指定授權類別 /GOOG/CL_AUTH_JWT
    授權欄位 請將這個欄位留空。
    權杖更新秒數 請將這個欄位留空。
    授權參數 1 指定您在「建立新的安全儲存轉送 (SSF) 應用程式」一節中建立的 SSF 應用程式名稱。
  5. 儲存新項目。

建立新的 RFC 目的地

使用 ABAP 版 Google Cloud SDK 建立 IAM API 和其他 API 的 RFC 目的地,例如 Pub/Sub API v1。

RFC 目的地名稱 附註
ZGOOG_IAMCREDENTIALS 這個 RFC 目的地以 IAM API 為目標。
ZGOOG_OAUTH2_TOKEN 這個 RFC 目的地是針對以權杖為基礎的驗證 Google Cloud 端點。
ZGOOG_PUBSUB_V1 這個 RFC 目的地會以 Pub/Sub API 為目標。

如要瞭解如何建立 RFC 目的地,請參閱「RFC 目的地」。

在服務對應表中指定 RFC 目的地

在服務對應表中,指定 IAM API 和其他 API 的 RFC 目的地,您打算使用 ABAP 版 Google Cloud SDK 取用這些 API。

如要指定 RFC 目的地,請執行下列步驟:

  1. 在 SAP GUI 中執行交易代碼 /GOOG/SDK_IMG

    或者,執行交易代碼 SPRO,然後按一下「SAP Reference IMG」

  2. 依序點選「ABAP SDK for Google Cloud」>「Basic Settings」>「Configure Service Mapping」

  3. 按一下「New Entries」

  4. 為 IAM API 和其他 API 指定 RFC 目的地。例如:

    名稱 服務名稱 RFC 目的地
    Google Cloud 金鑰名稱 iamcredentials:v1 ZGOOG_IAMCREDENTIALS
    Google Cloud 金鑰名稱 googleapis.com/oauth2 ZGOOG_OAUTH2_TOKEN
    Google Cloud 金鑰名稱 pubsub.googleapis.com ZGOOG_PUBSUB_V1
  5. 儲存新項目。

驗證驗證設定

如要驗證驗證設定是否就緒,請按照下列步驟操作:

  1. 在 SAP GUI 中執行交易代碼 /GOOG/SDK_IMG

    或者,執行交易代碼 SPRO,然後按一下「SAP Reference IMG」

  2. 依序點選「ABAP SDK for Google Cloud」>「Utilities」>「Validate Authentication Configuration」

  3. 輸入用戶端金鑰名稱。

  4. 按一下 [Execute] (執行)

    「結果」欄中的綠色勾號表示所有設定步驟都已順利完成。

取得支援

如需協助解決 ABAP SDK for Google Cloud 的問題,請按照下列步驟操作: