アイデンティティとセキュリティ

SAML を使用した Google Cloud へのワークロードの連携を発表

security summit 2022

※この投稿は米国時間 2022 年 5 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud は、セキュリティ体制を強化する新しい手段をお客様に提供することに重点を置いています。多くの組織では、サービス アカウント キーを使用して Google Cloud Platform API アクセスを認証していますが、特にマルチクラウドのシナリオでは、鍵の管理が難しい場合があります。このサポートのために昨年、Workload Identity 連携をリリースしました。これにより、オンプレミスまたは他のクラウドで実行しているワークロードが外部 ID プロバイダ(IdP)と連携し、サービス アカウント キーを使用せずに Google Cloud リソースを呼び出せるようになります。

当初は、Open ID Connect(OIDC)認証プロトコル経由のワークロードの連携をサポートしていました。本日、SAML 連携のサポートも一般提供が開始になったことをお知らせします。現在、SAML ベースの ID プロバイダを使用しているお客様は、Workload Identity 連携を活用して、サービス アカウント キーの長期にわたる使用を減らせます。

SAML を使用した Workload Identity 連携の設定方法

現在の OIDC を使用した連携の構成と同じような方法で、SAML を使用した Workload Identity 連携を構成できます。唯一の違いは、次のコマンドを使用して SAML プロバイダを作成する点です。

  gcloud iam workload-identity-pools providers create-saml PROVIDER_ID \
    --location="global" \
    --workload-identity-pool="POOL_ID" \
    --idp-metadata-path="IDP_METADATA_PATH" \
    --attribute-mapping="MAPPINGS" \
    --attribute-condition="CONDITIONS"

ここで、--idp-metadata-path は SAML IDP のメタデータ ドキュメントへのローカル ファイル パスです。

SAML を使用した Workload Identity 連携の完全な設定ガイドと、ADFS などの ID プロバイダの特定のガイダンスについては、Configuring Workload Identity 連携の構成のドキュメントをご覧ください。

SAML 連携の暗号化サポートのプレビュー版もリリースします。SAML アサーションの暗号化により、ユーザーの機密情報が保護され、Workload Identity 連携にセキュリティ レイヤが追加されます。SAML 暗号化のプレビュー版へのアクセスをリクエストするには、このフォームにご記入ください。

SAML 連携を使用した Google Cloud へのアクセス方法

Workload Identity 連携でサポートされているその他の連携プロトコルの場合のように、まずワークロードを ID プロバイダに認証し、認証情報を取得する必要があります。その後、ワークロードは Security Token Service を使用して Google Cloud アクセス トークンの認証情報を交換できるようになります。

Workload Identity 連携を Google Cloud クライアント ライブラリで使用するために、ワークロードを ID プロバイダにより発行された認証情報を含むローカル ファイルを利用できるようにする必要があります。このファイルの認証情報を更新することは、大きな負担になり得ます。また、そのファイル自体が保護される必要があります。Google Cloud クライアント ライブラリで、Workload Identity 連携を使用する場合のセキュリティを簡素化して改善するために、複数のクライアント ライブラリが外部プロセスを呼び出し、認証情報を取得する機能をまもなく発表する予定です。

外部プロセスを呼び出して認証情報を取得する方法

クライアント ライブラリを使用して、簡単に ID プロバイダから認証情報を取得する外部プロセスを呼び出せます。認証情報の構成ファイルを生成する際に、いくつかのパラメータを追加して、呼び出す外部プロセスを指定できます。次に例を示します。
  gcloud iam workload-identity-pools create-cred-config projects/$PROJECT_NUMBER/locations/$LOCATION/workloadIdentityPools/$WORKLOAD_POOL_ID/providers/$PROVIDER_ID \
    --service-account=$EMAIL --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
    --executable-command "/path/to/get/credentials.sh --arg1=value1 --arg2=value2" \ 
    --executable-timeout-millis 5000

ここで、executable-command は、認証情報を取得する呼び出しのパスと引数です。また、executable-timeout-millis は、クライアント ライブラリがエラーになる前に実行可能ファイルを待機する時間(ミリ秒単位)です。

認証情報の構成ファイルを生成すると、GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定して、そのファイルを示せるようになるので、クライアント ライブラリは自動的に認証されるようになります。

Google Cloud クライアント ライブラリが Workload Identity 連携を使用して、Google Cloud サービスを呼び出すと、構成されたパラメータを使用して構成されたパスにプロセスを実行します。作成するこのプロセスでは、ワークロードが Google Cloud に認証されるように、ID プロバイダから認証情報を取得する必要があります。外部プロセスを使用した認証情報の取得についての詳細は、そのドキュメントがクライアント ライブラリでそれぞれ利用可能になり次第ご覧いただけます。

SAML Workload Identity 連携の Google Cloud クライアント ライブラリの構成に関する完全ガイドは、クライアント ライブラリ、gcloud CLI、または Terraform を使用した認証をご覧ください。REST API を使用した SAML Workload Identity 連携に関する完全ガイドは、REST API を使用した認証をご覧ください。

次のステップ

サービス アカウント キーから、Workload Identity 連携によって実現する鍵なしのアプリケーション認証メカニズムに移行することで、アプリケーション認証の際の有効期間の長い鍵の管理に伴うリスクを環境全体で軽減できます。Workload Identity 連携の詳細については、Google のドキュメントをご覧ください。Cloud Security のその他の発表については、Google Cloud Security Summit をご確認ください。ライブで、また後からオンデマンドでもご視聴いただけます。

- プロダクト マネージャー Shaun Liu