View a markdown version of this page

カスタマーマネージドアプリケーションで AWS アカウントアクセスを有効にする - AWS IAM アイデンティティセンター

カスタマーマネージドアプリケーションで AWS アカウントアクセスを有効にする

IAM Identity Center でカスタマーマネージドアプリケーションの AWS アカウントアクセスを有効にするには、信頼できるトークン発行者を設定します。信頼できるトークン発行者とは、認証されたユーザーに代わって署名付きトークンを発行する OAuth 2.0 認可サーバーです。IAM Identity Center は、これらのトークンを認証情報と交換して、それらのユーザーに割り当てられた AWS アカウントとロールにアプリケーションからアクセスできるようにします。信頼できるトークン発行者は、AWS マネージドアプリケーションへのアクセスにも使用できます。詳細については、「信頼できるトークン発行者によるアプリケーションの使用」を参照してください。

注記

この機能は、IAM Identity Center の組織インスタンスに対してのみ有効にできます。カスタマーマネージドアプリケーションの sso:account:access スコープを有効にできるのは、管理アカウント管理者または委任管理者だけです。メンバーアカウントのアプリケーションビルダーの場合は、IAM Identity Center 管理者に連絡して、アプリケーションのこのスコープを有効にしてください。

仕組み

管理者がカスタマーマネージドアプリケーションの sso:account:access スコープを有効にすると、次のワークフローが発生します。

  1. ユーザーが外部 ID プロバイダー (IdP) を介してアプリケーションにサインインします。

  2. アプリケーションが IdP から署名付き JWT トークンを受け取ります。

  3. アプリケーションが、JWT ベアラー付与タイプ (urn:ietf:params:oauth:grant-type:jwt-bearer) で CreateTokenWithIAM API を呼び出して、このトークンを IAM Identity Center トークンと交換します。この呼び出しには、Signature Version 4 (SigV4) 認証が必要です。詳細については、「IAM Identity Center OIDC API リファレンス」の「CreateTokenWithIAM」を参照してください。

  4. アプリケーションは IAM Identity Center トークンを使用してポータル API オペレーション (ListAccounts、ListAccountRoles、GetRoleCredentials) を呼び出し、ユーザーに割り当てられたアカウントとロールを検出して、ユーザーに代わって一時的な AWS 認証情報を取得します。

  5. ユーザーは、追加のサインイン手順なしでアプリケーションを介して AWS リソースにアクセスします。

アプリケーションのセットアップ時に更新トークン付与を有効にした場合、CreateTokenWithIAM はアクセストークンと共に更新トークンも返します。アプリケーションは、この更新トークンを使用して、JWT ベアラートークンの交換手順全体を繰り返すことなく、新しいアクセストークンを取得できます。アクセストークンを更新するには、refresh_token 付与タイプで CreateTokenWithIAM を呼び出します。

前提条件

カスタマーマネージドアプリケーションのアカウントアクセスを有効にする前に、以下が必要です。

  • JSON Web Tokens (JWT) をサポートする、IAM Identity Center で設定されたカスタマーマネージドアプリケーション。アプリケーションには、認証情報を安全に保存できるバックエンドサーバーコンポーネントが必要です。単一ページアプリケーション (SPA) などのブラウザベースのアプリケーションやその他のパブリッククライアントは、この機能ではサポートされていません。

  • アプリケーションにアタッチされた信頼できるトークン発行者。

  • AWS Organizations 管理アカウントまたは IAM Identity Center 用の委任管理者アカウントへのアクセス。メンバーアカウントのアプリケーションビルダーが、このスコープを直接有効にすることはできません。

アカウントアクセスを有効にする

カスタマーマネージドアプリケーションの sso:account:access スコープを有効にするには
  1. 組織の管理アカウントまたは委任管理者アカウントを使用して AWS マネジメントコンソール にサインインします。

  2. IAM アイデンティティセンターコンソールを開きます。

  3. ナビゲーションペインで、[アプリケーション] を選択します。

  4. [カスタマーマネージド] タブを選択します。

  5. 設定するアプリケーションの名前を選択します。

  6. [AWS アカウントアクセス] セクションで、[AWS アカウントアクセスを有効にする] をオンにします。

アカウントアクセスを有効にすると、アプリケーションから Identity ポータル API オペレーションを呼び出して、アカウントとロールをリストし、認証ユーザーがアクセスを許可されているロールの一時的な AWS 認証情報を取得できます。

重要

アプリケーションの sso:account:access スコープを有効にすると、そのアプリケーションは、アクセス許可セットの割り当てを介して、認証ユーザーが利用できるすべてのアカウントとロールにアクセスできます。アプリケーションを特定のアカウントやロールに制限することはできません。この機能を有効にする前に、このアクセスレベルを十分に理解してください。

プログラム的なアクセス

PutApplicationAccessScope API を使用すると、カスタマーマネージドアプリケーションの sso:account:access スコープをプログラムで有効にできます。組織の管理アカウントまたは委任管理者アカウントから API を呼び出す必要があります。

AWS CLI

aws sso-admin put-application-access-scope \ --application-arn arn:aws:sso::123456789012:application/ssoins-1234567890abcdef/apl-1234567890abcdef \ --scope "sso:account:access"

API リクエスト:

{ "ApplicationArn": "arn:aws:sso::123456789012:application/ssoins-1234567890abcdef/apl-1234567890abcdef", "Scope": "sso:account:access" }

アカウントアクセスを無効にするには、同じアプリケーション ARN とスコープ値で DeleteApplicationAccessScope API を使用します。

詳細については、「IAM Identity Center API リファレンス」の「PutApplicationAccessScope」と「DeleteApplicationAccessScope」を参照してください。

セキュリティのベストプラクティス

  • sso:account:access スコープは、認証ユーザーが利用できるすべてのアカウントとロールへのアクセス権をアプリケーションに付与します。特定のアカウントやロールへのアクセスを制限することはできません。このスコープは、このレベルのアクセスを必要とするアプリケーションに対してのみ有効にします。

  • IAM Identity Center のアクセストークンと更新トークンはバックエンドサーバーに保持します。クライアント側のコードには絶対に公開しないでください。

  • アプリケーションログ、エラーメッセージ、またはデバッグ出力にトークンや認証情報を記録しないでください。

  • URL クエリパラメータでトークンを渡さないでください。アクセストークンには x-amz-sso_bearer_token ヘッダーを使用します。

  • AWS CloudTrail を使用して、アプリケーションによる API コールをモニタリングします。