サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する
AWS アカウント で IAM ユーザーを作成する代わりに、ID プロバイダーを使用できます。ID プロバイダー (IdP) を使用すると、AWS の外部のユーザー ID を管理して、これらの外部ユーザー ID にアカウント内の AWS リソースに対するアクセス許可を付与できます。フェデレーションおよび認証プロバイダーについて詳しくは、「ID プロバイダーとフェデレーション」を参照してください。
フェデレーティッドユーザーのロールの作成 (コンソール)
フェデレーティッドユーザーのロールを作成する手順は、選択したサードパーティープロバイダーによって異なります。
-
OpenID Connect (OIDC) については、「OpenID Connect フェデレーション用のロールを作成する (コンソール)」を参照してください。
-
SAML 2.0 については、「SAML 2.0 フェデレーション用のロールを作成する (コンソール)」を参照してください。
フェデレーションアクセス用のロールの作成 (AWS CLI)
サポートされている ID プロバイダー (OIDC または SAML) 用のロールを AWS CLI から作成するステップは同じです。違いは、前提条件のステップで作成する信頼ポリシーの内容です。使用するプロバイダーのタイプに合わせた前提条件セクションのステップに従って開始します。
-
OIDC プロバイダーについては、「OIDC 用のロールを作成するための前提条件」を参照してください。
-
SAML プロバイダーについては、「SAML 用のロールを作成するための前提条件」を参照してください。
AWS CLI を使用したロールの作成には、複数のステップがあります。コンソールを使用してロールを作成する場合、多くのステップは自動的に行われますが、AWS CLI を使用する場合は、各ステップを明示的に実行する必要があります。ロールを作成して、これにアクセス許可ポリシーを割り当てる必要があります。必要に応じて、ロールのアクセス許可の境界を設定することもできます。
ID フェデレーションのロールを作成するには (AWS CLI)
-
ロール aws iam create-role を作成します。
-
アクセス許可ポリシー aws iam attach-role-policy をロールにアタッチします。
または
ロールのインラインアクセス許可ポリシーaws iam put-role-policy を作成します。
-
(オプション) タグ (aws iam tag-role) をアタッチして、カスタム属性をロールに追加します。
詳細については、「IAM ロールのタグの管理 (AWS CLI または AWS API)」を参照してください。
-
(オプション) ロールのアクセス許可の境界 aws iam put-role-permissions-boundary を設定します。
アクセス許可の境界では、ロールに許可されるアクセス許可の上限を設定します。アクセス許可の境界は AWS のアドバンスド機能です。
次の例では、シンプルな環境で ID プロバイダーのロールを作成するための最初の 2 つのステップ (最も一般的なステップ) を示します。この例では、123456789012
アカウントの任意のユーザーに、ロールを引き受けて Amazon S3 バケット example_bucket
を表示することを許可します。また、この例では、Windows が動作しているコンピュータで AWS CLI を実行していること、さらに認証情報を使って AWS CLI を設定済みであることを前提とします。詳細については、「Configuring the AWS Command Line Interface」を参照してください。
次の例では、ユーザーが 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 から作成するステップは同じです。違いは、前提条件のステップで作成する信頼ポリシーの内容です。使用するプロバイダーのタイプに合わせた前提条件セクションのステップに従って開始します。
-
OIDC プロバイダーについては、「OIDC 用のロールを作成するための前提条件」を参照してください。
-
SAML プロバイダーについては、「SAML 用のロールを作成するための前提条件」を参照してください。
ID フェデレーションのロールを作成するには (AWS API)
-
ロールとして CreateRole を作成します。
-
アクセス許可ポリシーとして AttachRolePolicy をロールにアタッチします。
または
ロールのインラインアクセス許可ポリシー PutRolePolicy を作成します。
-
(オプション) タグ (TagRole) をアタッチして、カスタム属性をユーザーに追加します。
詳細については、「IAM ユーザーのタグの管理 ( AWS CLI または AWS API)」を参照してください。
-
(オプション) ロールのアクセス許可の境界 PutRolePermissionsBoundary を設定します。
アクセス許可の境界では、ロールに許可されるアクセス許可の上限を設定します。アクセス許可の境界は AWS のアドバンスド機能です。