ウェブ ID または OpenID Connect を持つロールを引き受けて AWS SDK とツールを認証する - AWS SDK とツール

ウェブ ID または OpenID Connect を持つロールを引き受けて AWS SDK とツールを認証する

ロールでは、他の方法ではアクセスできない AWS リソースへのアクセスに、一時的なセキュリティ認証情報のセットを使用する必要があるとします。これらの一時的な認証情報は、アクセスキー ID、シークレットアクセスキー、およびセキュリティトークンで構成されています。AWS Security Token Service (AWS STS) API リクエストの詳細については、「AWS Security Token Service API リファレンス」の「アクション」を参照してください。

ロールを引き受けるように SDK またはツールを設定するには、まず引き受けるのための特定のロールを作成または特定する必要があります。IAM ロールは、ロール (Amazon リソースネーム (「ARN」 )で一意に識別されます。ロールは別のエンティティとの信頼関係を確立します。ロールを使用する信頼できるエンティティは、ウェブ ID プロバイダーまたは OpenID Connect (OIDC)、または SAML フェデレーションである可能性があります。IAM ロールの詳細については、「IAM ユーザーガイド」の「ロールを引き受けるための各種方法」を参照してください。

SDK で IAM ロールを設定した後、そのロールが ID プロバイダーを信頼するように設定されている場合は、一時的な AWS 認証情報を取得するために、そのロールを引き受けるように SDK をさらに設定できます。

注記

可能な限りリージョンエンドポイントを使用し、AWS リージョン を設定することが AWS ベストプラクティスです。

ウェブアイデンティティまたは OpenIDコネクトとのフェデレーション

Login With Amazon、Facebook、Google などのパブリック ID プロバイダーの JSON Web Tokens (JWT) を使用し、AssumeRoleWithWebIdentity を使用して一時的な AWS 認証情報を取得できます。使用方法によって、これらの JWT は ID トークンまたはアクセストークンと呼ばれます。EntraId や PingFederate などの OIDC の検出プロトコルと互換性のある ID プロバイダー (IdP) から発行された JWT を使用することもできます。

Amazon Elastic Kubernetes Service を使用している場合、この機能により、Amazon EKS クラスターのサービスアカウントごとに異なる IAM ロールを指定できます。この Kubernetes 機能により JWT がポッドに配布されます。ポッドは、一時的な AWS 認証情報を取得するためにこの認証情報プロバイダーによって使用されます。この Amazon EKS の設定の詳細については、「Amazon EKS ユーザーガイド」の「サービスアカウントの IAM ロール」を参照してください。ただし、より単純なオプションとして、SDK がサポートしている場合は、代わりに Amazon EKS Pod Identities を利用することをお勧めします。

ステップ 1: ID プロバイダーと IAM ロールを設定する

外部 IdP サービスとのフェデレーションを設定するには、IAM の ID プロバイダーを作成し、外部 IdP とその設定について AWS に通知します。これにより、AWS アカウント と外部 IdP の間の「信頼」が確立されます。認証のために JSON Web Token (JWT) を使用するように SDK を設定する前に、まず ID プロバイダー (IdP) と、それにアクセスするための IAM ロールを設定する必要があります。これらを設定するには、「IAM ユーザーガイド」の「ウェブ OpenID Connect フェデレーション用のロールの作成 (コンソール)」 を参照してください。

ステップ 2: SDK またはツールを設定する

認証に使用した JSON Web Token (JWT) を使用するように SDK またはツールを AWS STS から設定します。

これをプロファイルで指定すると、SDK またはツールは自動的に対応する AWS STSAssumeRoleWithWebIdentity API コールを行います。ウェブ ID フェデレーションを使用して一時的な認証情報を取得、使用するには、AWSconfig 共有プロファイルで以下の設定値を指定します。これらの設定の詳細については、「ロール認証情報プロバイダーを引き受けます」を参照してください。

  • role_arn - ステップ 1 で作成された IAM ロール

  • web_identity_token_file-外部 IdP から

  • (オプション) duration_seconds

  • (オプション) role_session_name

ウェブ IDを使用してロールを引き受ける config 共有ファイル設定の例を次に示します。

[profile web-identity] role_arn=arn:aws:iam::123456789012:role/my-role-name web_identity_token_file=/path/to/a/token
注記

モバイルアプリケーションに対しては、Amazon Cognito の使用をお勧めします。Amazon Cognito は ID ブローカーとして機能し、ユーザーの代わりに多くのフェデレーション作業を行います。ただし、Amazon Cognito ID プロバイダーは、他の ID プロバイダーのように SDK やツールのコアライブラリには含まれていません。Amazon Cognito API にアクセスするには、SDK またはツールのビルドまたはライブラリに Amazon Cognito サービスクライアントを含めてください。AWS SDK での使用方法については、「Amazon Cognito 開発者ガイド」の「コード例」 を参照してください。

すべての引き受けロールの認証情報プロバイダーの設定の詳細については、このガイドの「ロール認証情報プロバイダーを引き受けます」を参照してください。