IAM Identity Center 認証情報プロバイダー
注記
設定ページのレイアウトを理解したり、以下の AWS SDK とツールによるサポートの表を解釈したりするには、「このガイドの設定ページについて」を参照してください。
この認証メカニズムは、AWS IAM Identity Center を使ってコードの AWS のサービス のためのシングルサインオン (SSO) アクセスを取得します。
注記
AWS SDK API ドキュメントでは、IAM Identity Center の認証情報プロバイダーは SSO 認証情報プロバイダーと呼ばれています。
IAM Identity Center を有効にしたら、 AWS config 共有ファイル内の設定用のプロファイルを定義します。このプロファイルは IAM Identity Center アクセスポータルへの接続に使用されます。ユーザーが IAM Identity Center で正常に認証されると、ポータルはそのユーザーに関連付けられた IAM ロールの短期認証情報を返します。SDK が設定から一時的な認証情報を取得して AWS のサービス リクエストに使用する方法については、 AWS SDK とツールの IAM Identity Center 認証の解決方法 を参照してください。
config ファイルを使用して IAM Identity Center を設定するには 2 つの方法があります。
-
(推奨) SSO トークンプロバイダー設定 – セッション期間が延長されます。カスタムセッション期間のサポートが含まれています。
-
更新不可のレガシー構成 — 固定の 8 時間のセッションを使用します。
どちらの構成でも、セッションの有効期限が切れたら再度サインインする必要があります。
次の 2 つのガイドには、IAM Identity Center に関する追加情報が含まれています。
SDK とツールがこの構成を使用して認証情報を使用および更新する方法の詳細については、「AWS SDK とツールの IAM Identity Center 認証の解決方法」を参照してください。
前提条件
最初に IAM Identity Center を有効にしておく必要があります。IAM アイデンティティセンターの認証を有効にする方法の詳細については、「AWS IAM Identity Center ユーザーガイド」の「Enabling AWS IAM Identity Center」を参照してください。
注記
または、完全な前提条件と、このページで説明されている必要な共有 config ファイル設定について、「IAM Identity Center を使用して AWS SDK とツールを認証する」のセットアップガイドを参照してください。
SSO トークンプロバイダー設定
SSO トークンプロバイダー設定を使用すると、AWS SDK またはツールは延長されたセッション期間までセッションを自動的に更新します。セッション期間および最大期間の詳細は、「AWS IAM Identity Center ユーザーガイド」の「Configure the session duration in IAM Identity Center」を参照してください。
config ファイルの sso-session セクションを使用して、SSO アクセストークンを取得するための設定変数をグループ化します。これらを使用して、AWS 認証情報を取得できます。config ファイル内のこのセクションの詳細については、「設定ファイルの形式」を参照してください。
次の共有 config ファイルの例では、dev プロファイルを使用して SDK またはツールを設定し、IAM Identity Center の認証情報をリクエストします。
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/startsso_registration_scopes =sso:account:access
前の例は sso-session セクションの定義とプロファイルへの関連付けを示しています。SDK が AWS 認証情報をリクエストできるように、通常、sso_account_id と sso_role_name は profile セクション内に設定する必要があります。sso_region、sso_start_url、および sso_registration_scopes は sso-session セクション内に設定する必要があります。
sso_account_id と sso_role_name は SSO トークン設定のすべてのシナリオで必須というわけではありません。アプリケーションでベアラー認証をサポートする AWS のサービス のサービスのみを使用する場合、従来の AWS 認証情報は必要ありません。ベアラー認証は、ベアラートークンと呼ばれるセキュリティトークンを使用する HTTP 認証スキームです。このシナリオでは、sso_account_id と sso_role_name は必須ではありません。サービスがベアラートークン認可をサポートしているかどうかについては、個別の AWS のサービスのガイドを参照してください。
登録スコープは sso-session の一部として設定されます。スコープは、ユーザーのアカウントに対するアプリケーションのアクセスを制限する OAuth 2.0 のメカニズムです。前の例では、アカウントとロールを一覧表示するために必要なアクセスを許可するように sso_registration_scopes を設定しています。
次の例は、複数のプロファイルで同じ sso-session 設定を再利用する方法を示しています。
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[profile prod] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole2[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/startsso_registration_scopes =sso:account:access
認証トークンは、セッション名に基づいたファイル名を使用して、~/.aws/sso/cache ディレクトリの下のディスクにキャッシュされます。
更新不可のレガシー設定
トークンの自動更新は、更新不可のレガシー設定ではサポートされていません。代わりに、SSO トークンプロバイダー設定 の使用をお勧めします。
更新不可のレガシー設定を使用するには、プロファイル内で次の設定を指定する必要があります。
-
sso_start_url -
sso_region -
sso_account_id -
sso_role_name
プロファイルのユーザーポータルは、 sso_start_url および sso_region 設定を使用して指定します。アクセス許可は sso_account_id および sso_role_name 設定で指定します。
次の例では、 config ファイルに 4 つの必要となる値を設定します。
[profilemy-sso-profile] sso_start_url =https://my-sso-portal.awsapps.com/startsso_region =us-west-2sso_account_id =111122223333sso_role_name =SSOReadOnlyRole
認証トークンは、sso_start_url に基づいたファイル名を使用して、~/.aws/sso/cache ディレクトリの下のディスクにキャッシュされます。
IAM Identity Center 認証情報プロバイダーの設定
この機能は以下を使用して設定します。
sso_start_url- AWSconfig共有ファイル設定-
組織の IAM Identity Center の発行者 URL またはアクセスポータル URL を指す URL。詳しくは、「AWS IAM Identity Center ユーザーガイド」の「Setting up and using the AWS access portal」を参照してください。
この値を確認するには、IAM Identity Center コンソール
を開き、[ダッシュボード] を表示して、[AWS アクセスポータル URL] を検索します。 -
または、バージョン 2.22.0 以降の AWS CLI では、代わりに AWS 発行者 URL の値を使用できます。
-
sso_region- AWSconfig共有ファイル設定-
AWS リージョン は、IAM Identity Centerポータルホスト、つまり IAM Identity Centerを有効にする前に選択したリージョンを格納するものです。これはデフォルトの AWS リージョンとは独立しており、異なる場合もあります。
AWS リージョン の完全なリストとそれらのコードについては、Amazon Web Services 全般のリファレンス の 「リージョナルエンドポイント」を参照してください。この値を確認するには、IAM Identity Centerコンソール
を開いて[ダッシュボード]を表示し、[リージョン]を探します。 sso_account_id- AWSconfig共有ファイル設定-
認証に使用するために AWS Organizations サービスを通じて追加された AWS アカウント の数値 ID。
使用可能なアカウントのリストを確認するには、IAM Identity Center コンソール
に移動して[AWS アカウント] ページを開きます。AWS IAM Identity Center ポータル API リファレンスの 「ListAccounts」 API メソッドを使用して利用可能なアカウントのリストを確認することもできます。たとえば、 「list-accounts 」 AWS CLI メソッドを呼び出すことができます。 sso_role_name- AWSconfig共有ファイル設定-
ユーザーのアクセス許可を定義するIAM ロールとしてプロビジョニングされたアクセス許可セットの名前。ロールは
sso_account_idに指定された AWS アカウント に存在する必要があります。ロールの Amazon リソースネーム (ARN) ではなく、ロール名を使用してください。アクセス許可セットには IAM ポリシーとカスタムアクセス許可ポリシーがアタッチされており、ユーザーに割り当てられた AWS アカウント に付与されるアクセスレベルを定義します。
各 AWS アカウント の使用可能なアクセス許可セットのリストを確認するには、「IAM Identity Center コンソール
」 に移動して[ AWS アカウント ] ページを開きます。AWS アカウント表に表示されている正しいアクセス許可セット名を選択してください。AWS IAM Identity Center ポータル API リファレンスの 「ListAccountRoles」 API メソッドを使用して、使用可能なアクセス許可セットのリストを確認することもできます。たとえば、「list-account-roles 」 AWS CLI メソッドを呼び出すことができます。 sso_registration_scopes- AWSconfig共有ファイル設定-
sso-sessionに許可するスコープのカンマ区切りのリストです。アプリケーションは 1 つ以上のスコープをリクエストでき、アプリケーションに発行されたアクセストークンは付与されたスコープに限定されます。IAM Identity Center サービスから更新トークンを取得するには、sso:account:accessの最低限のスコープを付与する必要があります。利用可能なアクセススコープのオプションのリストについては、「AWS IAM Identity Center ユーザーガイド」の「Access scopes」を参照してください。これらのスコープは、登録された OIDC クライアントがリクエストできるアクセス許可と、クライアントが取得するアクセストークンを定義します。スコープは、IAM Identity Center ベアラートークンで承認されたエンドポイントへのアクセスを許可します。
この設定は、更新できない従来の設定には適用されません。レガシー構成を使用して発行されたトークンは、暗黙的に
sso:account:accessスコープに制限されます。
AWS SDK とツールによるサポート
以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。
| SDK | サポート | 注意または詳細情報 |
|---|---|---|
| AWS CLI v2 | あり | |
| SDK for C++ | あり | |
| SDK for Go V2 (1.x) |
あり | |
| SDK for Go 1.x (V1) | あり | 共有 config ファイル設定を使用するには、設定ファイルからの読み込みを有効にする必要があります。「セッション」を参照してください。 |
| SDK for Java 2.x | あり | 設定値はcredentialsファイルでもサポートされています。 |
| SDK for Java 1.x | なし | |
| SDK for JavaScript 3.x | あり | |
| SDK for JavaScript 2.x | あり | |
| SDK for Kotlin | あり | |
| SDK for .NET 4.x | あり | |
| SDK for .NET 3.x | あり | |
| SDK for PHP 3.x | あり | |
| SDK for Python (Boto3) |
あり | |
| SDK for Ruby 3.x | あり | |
| SDK for Rust | 部分的 | 更新不可のレガシー設定のみ。 |
| SDK for Swift | あり | |
| Tools for PowerShell V5 | あり | |
| Tools for PowerShell V4 | あり |