アクセス トークンを使用して認証する

このドキュメントでは、SAP システムが Compute Engine の VM インスタンスでホストされている場合に、Google Cloud APIs の認証を行う方法について説明します。

認証を設定する

認証を設定するには、次の手順を実行します。

  1. Google Cloud コンソールを開き、認証が必要な Google Cloud プロジェクトで IAM Service Account Credentials API を有効にします。IAM Service Account Credentials API のほかにも、SDK を使用してアクセスするサポート対象の API がある場合は、これらの API も有効にする必要があります。

    API ライブラリに移動

    Google Cloud APIs を有効にする方法については、API を有効にするをご覧ください。

  2. Google Cloud コンソールで、ホスト VM インスタンスの IAM サービス アカウントを作成します。

    [サービス アカウント] に移動

    サービス アカウントの作成方法については、サービス アカウントを作成するをご覧ください。

  3. サービス アカウントに Service Account Token Creator ロールを付与します。手順については、単一ロールの付与をご覧ください。

  4. SAP ワークロードが実行されている VM インスタンスにサービス アカウントを関連付けます。また、VM のアクセス スコープを cloud-platform に設定します。

    • Google Cloud コンソールを使用してサービス アカウントを指定すると、VM のアクセス スコープは自動的にデフォルトで cloud-platform スコープに設定されます。
    • Google Cloud CLI または Compute Engine API を使用してサービス アカウントを指定する場合は、API アクセス スコープを Allow full access to all Cloud APIs に設定する必要があります。

      手順については、VM を作成してサービス アカウントを接続するをご覧ください。

      スコープを更新したら、VM を再起動します。同じ SAP 環境に複数の VM インスタンスがある場合は、それらの VM インスタンスすべてでこの手順を完了する必要があります。

  5. Google Cloud コンソールで、Google Cloud APIs にアクセスするための専用の IAM サービス アカウントを作成します。

    [サービス アカウント] に移動

    手順については、サービス アカウントを作成するをご覧ください。

  6. API 機能にアクセスするために必要な IAM ロールをサービス アカウントに付与します。Google Cloud APIs のロールの要件については、該当する API のドキュメントをご覧ください。また、最小権限の原則に従ってください。API 固有の事前定義ロールの詳細については、IAM の基本ロールと事前定義ロールのリファレンスをご覧ください。

  7. Google Cloud APIs と異なるプロジェクトにサービス アカウントを作成した場合は、サービス アカウント設定を行う際に追加の手順が必要になります。詳細については、クロスプロジェクト環境でサービス アカウントを設定するをご覧ください。

  8. 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 キー名 クライアント キー構成の名前を指定します。例: TEST_PUBSUB
      Google Cloud サービス アカウント名

      Google Cloud APIs へのアクセス権限を付与したサービス アカウントの名前を指定します。例: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com

      SDK を含む SAP システムのホスト VM が、Google Cloud APIs が有効になっているプロジェクトと異なる場合は、Google Cloud APIs へのアクセスに使用するサービス アカウントを指定します。詳細については、クロスプロジェクト環境でサービス アカウントを設定するをご覧ください。

      Google Cloud のスコープ API アクセス スコープ https://www.googleapis.com/auth/cloud-platform を指定します。
      Google Cloud プロジェクト ID ターゲット API を含む Google Cloud プロジェクトの ID を指定します。
      コマンド名 このフィールドは空白のままにしておきます。
      認可クラス 認可クラス /GOOG/CL_AUTH_GOOGLE を指定します。
      トークンのキャッシュ保存

      Google Cloud から取得したアクセス トークンをキャッシュに保存するかどうかを決めるフラグ。

      Google Cloud への接続を構成してテストしたら、トークンのキャッシュ保存を有効にすることをおすすめします。トークンのキャッシュ保存の詳細については、トークンのキャッシュ保存を有効にするをご覧ください。

      トークンの更新期限(秒) アクセス トークンの有効期限が切れになり、更新が必要になるまでの時間(秒)。デフォルト値は 3500 です。
      認可パラメータ 1 このフィールドは空白のままにしておきます。
      認可パラメータ 2 このフィールドは空白のままにしておきます。
    5. 新しいエントリを保存します。

  9. SAP システムで、ABAP SDK for Google Cloud を使用して、利用予定の API に新しい RFC 宛先を作成します。

    RFC 宛先の作成方法については、RFC 宛先をご覧ください。

  10. SAP システムで、ABAP SDK for Google Cloud を使用して、利用予定の IAM API と他の API のサービス マッピング テーブルを構成します。

    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 宛先を指定します(例: Pub/Sub API v1)。

      名前 サービス名 RFC 宛先
      Google Cloud キー名 iamcredentials.googleapis.com ZGOOG_IAMCREDENTIALS
      Google Cloud キー名 pubsub:v1 ZGOOG_PUBSUB_V1
    5. 新しいエントリを保存します。

  11. SAP システムで認証構成を検証します。詳細については、認証構成を検証するをご覧ください。

クロス プロジェクト環境でサービス アカウントを設定する

SDK を含む SAP システムのホスト VM は、Google Cloud APIs が有効になっているプロジェクトと異なる Google Cloud プロジェクトに配置できます。この場合、SDK が別のプロジェクトから API にアクセスできるように、必要な IAM ロールを持つサービス アカウントを設定する必要があります。

次の表に、プロジェクト間で API にアクセスするためのサービス アカウントの設定例を示します。

環境 SAP ホスト VM Google Cloud APIs
Google Cloud プロジェクト project-sap-host project-google-apis
SAP ホスト VM に割り当てられたサービス アカウント sa-sap-host@project-sap-host.iam.gserviceaccount.com なし
Google Cloud APIs にアクセスするためのサービス アカウント sa-google-apis@project-sap-host.iam.gserviceaccount.com なし
サービス アカウントの IAM ロール プロジェクト project-sap-host で、サービス アカウント sa-sap-host@project-sap-host.iam.gserviceaccount.com にサービス アカウント トークン作成者のロールを付与します。 プロジェクト project-google-apis で、サービス アカウント sa-google-apis@project-sap-host.iam.gserviceaccount.com をプリンシパルとして追加し、Google Cloud APIs に接続するための適切なロールをサービス アカウントに付与します。

サービス アカウントの設定手順は次のとおりです。

  1. SAP ホスト VM を含む Google Cloud プロジェクトで、SAP ホスト VM のサービス アカウントに Service Account Token Creator ロールを付与します。手順の詳細については、単一のロールを付与するをご覧ください。
  2. SAP ホスト VM を含む Google Cloud プロジェクトで、サービス アカウントを作成します。サービス アカウントの名前をメモします。Google Cloud APIs を含む別のプロジェクトにプリンシパルとしてサービス アカウントを追加する場合、この名前を指定します。
  3. Google Cloud APIs を含む別のプロジェクトで、プリンシパルとしてサービス アカウントを追加し、適切なロールを付与して、Google Cloud APIs に接続します。Google Cloud APIs を含む Google Cloud プロジェクトにサービス アカウントを追加する手順は次のとおりです。

    1. Google Cloud コンソールで IAM の [権限] ページに移動します。

      IAM の [権限] に移動

    2. ターゲットの Google Cloud APIs を含むプロジェクトの名前がページの上部付近に表示されていることを確認します。次に例を示します。

      プロジェクト「PROJECT_NAME」の権限

      そうでない場合は、プロジェクトを切り替えます。

    3. [IAM] ページで、[アクセス権を付与] をクリックします。[PROJECT_NAME」へのアクセス権を付与します] ダイアログが開きます。

    4. [新しいプリンシパル] フィールドに、サービス アカウントの名前を指定します。

    5. [ロールを選択] フィールドで、関連するロールを指定します。たとえば、Pub/Sub でトピックとサブスクリプションを変更し、メッセージをパブリッシュして使用するには、Pub/Sub 編集者(roles/pubsub.editor)のロールを指定します。

      API 固有の事前定義ロールの詳細については、IAM の基本ロールと事前定義ロールのリファレンスをご覧ください。

    6. API の用途に応じて、さらに別のロールを追加します。最小権限の原則を適用して、Google が推奨するベスト プラクティスを実施します。

    7. [保存] をクリックします。[IAM] ページのプロジェクト プリンシパルのリストにサービス アカウントが表示されます。

認証構成を検証する

認証構成を検証するには、次の操作を行います。

  1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

    または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

  2. [ABAP SDK for Google Cloud] > [Utilities] > [Validate Authentication Configuration] をクリックします。

  3. クライアント キー名を入力します。

  4. [Execute] をクリックして、フロー全体が正しく構成されているかどうかを確認します。

    [Result] 列に緑色のチェックマークが表示されていれば、すべての構成ステップが正常に完了しています。

サポートを利用する

ABAP SDK for Google Cloud の問題を解決するには、次の操作を行います。