カスタマーマネージドアプリケーションで 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 スコープを有効にすると、次のワークフローが発生します。
-
ユーザーが外部 ID プロバイダー (IdP) を介してアプリケーションにサインインします。
-
アプリケーションが IdP から署名付き JWT トークンを受け取ります。
-
アプリケーションが、JWT ベアラー付与タイプ (
urn:ietf:params:oauth:grant-type:jwt-bearer) でCreateTokenWithIAMAPI を呼び出して、このトークンを IAM Identity Center トークンと交換します。この呼び出しには、Signature Version 4 (SigV4) 認証が必要です。詳細については、「IAM Identity Center OIDC API リファレンス」の「CreateTokenWithIAM」を参照してください。 -
アプリケーションは IAM Identity Center トークンを使用してポータル API オペレーション (
ListAccounts、ListAccountRoles、GetRoleCredentials) を呼び出し、ユーザーに割り当てられたアカウントとロールを検出して、ユーザーに代わって一時的な AWS 認証情報を取得します。 -
ユーザーは、追加のサインイン手順なしでアプリケーションを介して AWS リソースにアクセスします。
アプリケーションのセットアップ時に更新トークン付与を有効にした場合、CreateTokenWithIAM はアクセストークンと共に更新トークンも返します。アプリケーションは、この更新トークンを使用して、JWT ベアラートークンの交換手順全体を繰り返すことなく、新しいアクセストークンを取得できます。アクセストークンを更新するには、refresh_token 付与タイプで CreateTokenWithIAM を呼び出します。
前提条件
カスタマーマネージドアプリケーションのアカウントアクセスを有効にする前に、以下が必要です。
-
JSON Web Tokens (JWT) をサポートする、IAM Identity Center で設定されたカスタマーマネージドアプリケーション。アプリケーションには、認証情報を安全に保存できるバックエンドサーバーコンポーネントが必要です。単一ページアプリケーション (SPA) などのブラウザベースのアプリケーションやその他のパブリッククライアントは、この機能ではサポートされていません。
-
アプリケーションにアタッチされた信頼できるトークン発行者。
-
AWS Organizations 管理アカウントまたは IAM Identity Center 用の委任管理者アカウントへのアクセス。メンバーアカウントのアプリケーションビルダーが、このスコープを直接有効にすることはできません。
アカウントアクセスを有効にする
カスタマーマネージドアプリケーションの sso:account:access スコープを有効にするには
-
組織の管理アカウントまたは委任管理者アカウントを使用して AWS マネジメントコンソール にサインインします。
-
IAM アイデンティティセンターコンソール
を開きます。 -
ナビゲーションペインで、[アプリケーション] を選択します。
-
[カスタマーマネージド] タブを選択します。
-
設定するアプリケーションの名前を選択します。
-
[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 コールをモニタリングします。