🌏

AWS IAM Identity CenterでOrganization外のAWSアカウントを登録する

2023/08/30に公開

IAM Identity Center側

「IAM Identity Center」 > 「アプリケーション」から「アプリケーションの追加」をクリックします。

「アプリケーションを選択」で「External AWS Account」を選択し「次」をクリックします。

「表示名」には分かりやすい名前を設定し、「IAM Identity Center SAML メタデータファイル」をダウンロードしておいてください。

「セッション期間」がデフォルトで1時間になっています。このままだと1時間でログアウトされてしまうので煩わしいと思う人はこちらの時間を変更しておきましょう。

すべて完了したら「送信」をクリックします。

ログインしたいAWSアカウント側

こちらはAWS CLIを使って作業します。まずは先ほどダウンロードしたメタデータファイルの名前を「SAMLMetaData.xml」に変更してください。

変更したら下記コマンドを実行して、IAMのSAMLプロバイダーを作成します。プロバイダー名はわかりやすい名前を設定してください。

 aws iam create-saml-provider --saml-metadata-document file://SAMLMetaData.xml --name <プロバイダー名>

作成に成功したらArnが表示されます。

{
    "SAMLProviderArn": "arn:aws:iam::<アカウントID>:saml-provider/<プロバイダー名>"
}

次はこのSAMLプロバイダーを使ってIAMロールを作成します。
まずは「trust-policy.json」というファイル名で信頼ポリシーを作成してください。

trust-policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRoleWithSAML",
            "Principal": {
                "Federated": "arn:aws:iam::<アカウントID>:saml-provider/<プロバイダー名>"
            },
            "Condition": {
                "StringEquals": {
                    "SAML:aud": [
                        "https://signin.aws.amazon.com/saml"
                    ]
                }
            }
        }
    ]
}

上記信頼ポリシーを使用してIAMロールを作成します。ロール名はわかりやすい名前を設定してください。

aws iam create-role --role-name <ロール名> --assume-role-policy-document file://trust-policy.json

下記コマンドで適切なポリシーをアタッチしてください。

aws iam attach-role-policy --role-name <ロール名> --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

IAM Identity Center側

ロールが作成できたらIAM Identity Centerの属性マッピングを設定します。

https://aws.amazon.com/SAML/Attributes/RoleSessionName ${user:email} unspecified
https://aws.amazon.com/SAML/Attributes/Role arn:aws:iam::<アカウントID>:saml-provider/<プロバイダー名>,arn:aws:iam::<アカウントID>:role/<ロール名> unspecified

あとはユーザーを割り当ててログイン出来れば成功です。

Discussion