TIP プラグインを使用して AWS のサービスへアクセスする
信頼できる ID の伝播 (TIP) は、AWS のサービスの管理者がグループの関連付けなどのユーザー属性に基づいてアクセス許可を付与できるようにする AWS IAM Identity Center の機能です。信頼できる ID の伝播では、ID コンテキストが IAM ロールに追加され、AWS リソースへのアクセスをリクエストするユーザーを識別します。このコンテキストは他の AWS のサービスに伝播されます。
ID コンテキストは、AWS のサービスがアクセスリクエストを受信したときに承認の決定を行うために使用する情報で構成されます。この情報には、リクエスタ (IAM Identity Center ユーザーなど)、アクセスがリクエストされる AWS のサービス (Amazon Redshift など)、アクセス範囲 (読み取り専用アクセスなど) を識別するメタデータが含まれます。受信側の AWS のサービスは、このコンテキストとユーザーに割り当てられたアクセス許可を使用して、リソースへのアクセスを承認します。詳細については、「AWS IAM Identity Center ユーザーガイド」の「Trusted identity propagation overview」を参照してください。
TIP プラグインは、信頼できる ID の伝播をサポートする AWS のサービスで使用できます。リファレンスユースケースとして、「Amazon Q Business User Guide」の「Configuring an Amazon Q Business application using AWS IAM Identity Center」を参照してください。
注記
Amazon Q Business を使用している場合は、「Configuring an Amazon Q Business application using AWS IAM Identity Center」でサービス固有の手順を参照してください。
TIP プラグインを使用するための前提条件
プラグインを機能させるには、次のリソースが必要です。
-
AWS SDK for Java または AWS SDK for JavaScript のいずれかを使用している必要があります。
-
使用しているサービスが信頼できる ID の伝播をサポートしていることを確認します。
「AWS IAM Identity Center ユーザーガイド」にある「AWS managed applications that integrate with IAM Identity Center」の表の「Enables trusted identity propagation through IAM Identity Center」列を参照してください。
-
IAM Identity Center と信頼できる ID の伝播を有効にします。
「AWS IAM Identity Center ユーザーガイド」の「TIP prerequisites and considerations」を参照してください。
-
Identity-Center-integrated アプリケーションが必要です。
「AWS IAM Identity Center ユーザーガイド」の「AWS managed applications」または「Customer managed applications」を参照してください。
-
信頼できるトークン発行者 (TTI) を設定し、サービスを IAM Identity Center に接続する必要があります。
「AWS IAM Identity Center ユーザーガイド」の「Prerequisites for trusted token issuers」および「Tasks for setting up a trusted token issuer」を参照してください。
コードで TIP プラグインを使用するには
-
信頼できる ID の伝播プラグインのインスタンスを作成します。
-
AWS のサービスとやり取りするためのサービスクライアントインスタンスを作成し、信頼できる ID の伝播プラグインを追加してサービスクライアントをカスタマイズします。
TIP プラグインは以下の入力パラメータを使用します。
-
webTokenProvider: 外部 ID プロバイダーから OpenID トークンを取得するためにお客様が実装する関数。 -
accessRoleArn: ユーザーの ID コンテキストを使用してプラグインが引き受ける IAM ロール ARN。ID 拡張認証情報を取得します。 -
applicationArn: クライアントまたはアプリケーションの一意の識別子文字列。この値は、OAuth 許可が設定されたアプリケーション ARN です。 -
ssoOidcClient: (オプション)SsoOidcClientfor Java や client-sso-oidcfor JavaScript など、お客様が定義した設定の SSO OIDC クライアント。指定しない場合、applicationRoleArnを使用する OIDC クライアントがインスタンス化されて使用されます。 -
stsClient: (オプション) お客様が定義した設定の AWS STS クライアント。ユーザーの ID コンテキストでaccessRoleArnを引き受けるために使用されます。指定しない場合、applicationRoleArnを使用する AWS STS クライアントがインスタンス化されて使用されます。 -
applicationRoleArn: (オプション) OIDC クライアントと AWS STS クライアントをブートストラップできるようにAssumeRoleWithWebIdentityで引き受ける IAM ロール ARN。-
指定しない場合は、
ssoOidcClientとstsClientのパラメータの両方を指定する必要があります。 -
指定した場合、
applicationRoleArnはaccessRoleArnのパラメータと同じ値にすることはできません。applicationRoleArnは accessRole を引き受けるために使用される stsClient の構築に使用されます。同じロールがapplicationRoleとaccessRoleの両方に使用される場合、ロールを使用してそれ自体を引き受けることになります (自己ロールの引き受け)。これは AWS では推奨されません。詳細については、お知らせを参照してください。
-
ssoOidcClient、stsClient、および applicationRoleArn のパラメータに関する考慮事項
TIP プラグインを設定するときは、指定するパラメータに基づいて、次のアクセス許可要件を考慮してください。
-
ssoOidcClientとstsClientを指定する場合:-
ssoOidcClientの認証情報には、アイデンティティセンターを呼び出してアイデンティティセンター固有のユーザーコンテキストを取得するためのoauth:CreateTokenWithIAMアクセス許可が必要です。 -
stsClientの認証情報には、sts:AssumeRoleと、accessRoleのsts:SetContextのアクセス許可が必要です。また、accessRoleには、stsClientの認証情報との信頼関係を構成する必要があります。
-
-
applicationRoleArnを指定する場合:-
applicationRoleは OIDC および STS クライアントの構築に使用されるため、必要なリソース (IdC インスタンス、accessRole) でのoauth:CreateTokenWithIAM、sts:AssumeRole、およびsts:SetContextのアクセス許可が必要です。 -
webTokenはプラグインによる AssumeRoleWithWebIdentity 呼び出しを介して applicationRole を引き受けるために使用されるため、applicationRoleは、webTokenの生成に使用される ID プロバイダーとの信頼関係が必要です。
-
ApplicationRole 構成の例:
ウェブトークンプロバイダーとの信頼ポリシー:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/IDENTITY_PROVIDER_URL" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "IDENTITY_PROVIDER_URL:aud": "CLIENT_ID_TO_BE_TRUSTED" } } } ] }
アクセス許可ポリシー:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Resource": [ "accessRoleArn" ] }, { "Effect": "Allow", "Action": [ "sso-oauth:CreateTokenWithIAM" ], "Resource": [ "*" ] } ] }
TIP を使用したコードの例
以下の例は、AWS SDK for Java または AWS SDK for JavaScript を使用してコードに TIP プラグインを実装する方法を示しています。