ロールの割り当て - AWS SDKsとツール

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ロールの割り当て

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

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

IAM ロールが特定されると、そのロールから信頼されている場合は、そのロールによって付与された権限を使用するように SDK またはツールを設定できます。これを実行するには、IAM ロールの継承 または ウェブアイデンティティまたは OpenIDコネクトとのフェデレーション のいずれかを使用します。

IAM ロールの継承

ロールを引き受けると、 AWS STS は一時的なセキュリティ認証情報のセットを返します。これらの認証情報は、別のプロファイル、またはコードが実行されているインスタンスまたはコンテナから取得されます。ロールを引き受ける他の例としては、Amazon EC2 から複数の AWS アカウント を管理したり、AWS アカウント にわたって AWS CodeCommit を使用したり、 AWS CodeBuild から別のアカウントにアクセスしたりすることが挙げられます。

ステップ 1: IAM ロールを設定する

ロールを引き受けるように SDK またはツールを設定するには、まず引き受けるのための特定のロールを作成または特定する必要があります。IAM ロールはロール「ARN」 を使用して一意に識別されます。ロールは別のエンティティとの信頼関係を確立します。通常はアカウント内またはクロスアカウントアクセス用です。詳細については、「IAM ユーザーガイド」の「IAM ロールの作成」を参照してください。

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

credential_source または source_profile から認証情報を取得するように SDK またはツールを設定します。

credential_source を使用してAmazon ECS コンテナ、Amazon EC2 インスタンス、または環境変数から認証情報を取得します。

source_profile を使用して別のプロファイルから認証情報を取得します。 source_profile はまた、ロールチェイニングもサポートしています。ロールチェイニングとは、引き受けたロールを使って別のロールを引き受けるプロファイルの階層構造です。

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

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

  • source_profile または credential_source のいずれかを設定します

  • (オプション) duration_seconds

  • (オプション) external_id

  • (オプション) mfa_serial

  • (オプション) role_session_name

次の例は、 config 共有ファイル内の 2 つの引き受けロールオプションの設定を示しています。

role_arn = arn:aws:iam::123456789012:role/my-role-name source_profile = profile-name-with-user-that-can-assume-role
role_arn = arn:aws:iam::123456789012:role/my-role-name credential_source = Ec2InstanceMetadata

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

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

AWS へのアクセスを必要とするモバイルアプリケーションまたはクライアントベースのウェブアプリケーションを作成すると、 AWS STS はパブリックID プロバイダー (IdP) を通じて認証されたフェデレーションユーザーの一時的なセキュリティ認証情報を返します。パブリック ID プロバイダーの例としては、Login with Amazon、Facebook、Google、または OpenID Connect (OIDC) に対応している任意の ID プロバイダーがあります。この方法では、ユーザーは自分の AWS や IAM ID を必要としません。

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

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

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

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

認証に使用したウェブ ID トークンを使用するように 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 開発者ガイド」の「コード例」 を参照してください。

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