AWS Identity and Access Management
ユーザーガイド

サードパーティーの ID プロバイダー (フェデレーション) 用のロールの作成

AWS アカウントで IAM ユーザーを作成する代わりに、ID プロバイダーを使用できます。ID プロバイダー (IdP) を使用すると、AWS の外部のユーザー ID を管理して、これらの外部ユーザー ID にアカウント内の AWS リソースに対するアクセス許可を付与できます。フェデレーションおよび認証プロバイダーについて詳しくは、「ID プロバイダーとフェデレーション」を参照してください。

フェデレーティッドユーザーのロールの作成 (コンソール)

フェデレーティッドユーザーのロールを作成する手順は、選択したサードパーティープロバイダーによって異なります。

フェデレーションアクセス用のロールの作成 (AWS CLI)

サポートされている ID プロバイダー (OIDC または SAML) 用のロールを AWS CLI から作成するステップは同じです。違いは、前提条件のステップで作成する信頼ポリシーの内容です。使用するプロバイダーのタイプに合わせた前提条件セクションのステップに従って開始します。

AWS CLI を使用したロールの作成には、複数のステップがあります。コンソールを使用してロールを作成する場合、多くのステップは自動的に行われますが、AWS CLI を使用する場合は、各ステップを明示的に実行する必要があります。ロールを作成して、これにアクセス許可ポリシーを割り当てる必要があります。必要に応じて、ロールのアクセス許可の境界を設定することもできます。

ID フェデレーション用のロールを作成するには (AWS CLI)

  1. ロール aws iam create-role を作成します。

  2. アクセス許可ポリシー aws iam attach-role-policy をロールにアタッチします。

    または

    ロールのインラインアクセス許可ポリシーaws iam put-role-policy を作成します。

  3. (オプション) タグ (aws iam tag-role) をアタッチして、カスタム属性をロールに追加します。

    詳細については、「IAM エンティティのタグの管理 (AWS CLI または AWS API)」を参照してください。

  4. (オプション) ロールのアクセス許可の境界 aws iam put-role-permissions-boundary を設定します。

    アクセス許可の境界では、ロールに許可されるアクセス許可の上限を設定します。アクセス許可の境界は AWS のアドバンスド機能です。

次の例では、シンプルな環境で ID プロバイダーのロールを作成するための最初の 2 つのステップ (最も一般的なステップ) を示します。この例では、123456789012 アカウントの任意のユーザーに、ロールを引き受けて Amazon S3 バケット example_bucket を表示することを許可します。また、この例では、Windows が動作しているコンピュータで AWS CLI を実行していること、さらに認証情報を使って AWS CLI を設定済みであることを前提とします。詳細については、「AWS Command Line Interface の設定」を参照してください。

この例では、ロールの作成時に、次の信頼ポリシーを最初のコマンドに含めます。この信頼ポリシーでは、123456789012 アカウントのユーザーに対して、AssumeRole オペレーションを使用してロールを引き受けることを許可します。ただし、ユーザーが SerialNumber パラメータと TokenCode パラメータを使用して MFA 認証を提供することを条件とします。MFA の詳細については、「AWS での多エレメント認証 (MFA) の使用」を参照してください。

次の例では、ユーザーが Amazon Cognito を使用してサインインする場合のモバイルアプリ用の信頼ポリシーを示します。この例では、us-east:12345678-ffff-ffff-ffff-123456 は Amazon Cognito によって割り当てられた ID プールの ID を表します。

{ "Version": "2012-10-17", "Statement": { "Sid": "RoleForCognito", "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}} } }

以下のアクセス許可ポリシーでは、Amazon S3 バケット example_bucket に対して ListBucket アクションのみを実行することを、ロールを引き受ける任意のユーザーに許可します。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

この Test-Cognito-Role ロールを作成するには、まず前の信頼ポリシーを trustpolicyforcognitofederation.json という名前で、前のアクセス許可ポリシーを permspolicyforcognitofederation.json という名前で、ローカル policies ドライブの C: フォルダに保存する必要があります。次に、以下のコマンドを使用してロールを作成し、インラインポリシーをアタッチできます。

# Create the role and attach the trust policy that enables users in an account to assume the role. $ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json # Attach the permissions policy to the role to specify what it is allowed to do. aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json

フェデレーションアクセス用のロールの作成 (AWS API)

サポートされている ID プロバイダー (OIDC または SAML) 用のロールを AWS CLI から作成するステップは同じです。違いは、前提条件のステップで作成する信頼ポリシーの内容です。使用するプロバイダーのタイプに合わせた前提条件セクションのステップに従って開始します。

ID フェデレーション用のロールを作成するには (AWS API)

  1. ロールとして CreateRole を作成します。

  2. アクセス許可ポリシーとして AttachRolePolicy をロールにアタッチします。

    または

    ロールのインラインアクセス許可ポリシー PutRolePolicy を作成します。

  3. (オプション) タグ (TagRole) をアタッチして、カスタム属性をユーザーに追加します。

    詳細については、「IAM エンティティのタグの管理 (AWS CLI または AWS API)」を参照してください。

  4. (オプション) ロールのアクセス許可の境界 PutRolePermissionsBoundary を設定します。

    アクセス許可の境界では、ロールに許可されるアクセス許可の上限を設定します。アクセス許可の境界は AWS のアドバンスド機能です。