目的
- AWS Organizationsで各メンバーアカウントの権限をマスターアカウントに移譲し、マスターアカウントのIAMユーザーから参照・制御できるようにする。後付けでJoinさせた場合にはRoleを作らないといけないっぽい。
- クロスアカウントを使っているだけなんだけど、AWS Organizationsから対応方法を探すと時間かかるので、まとめてみた。
メンバーアカウントでのコンソール上でのRoleの追加手順
- IAM->ロールに行きます。
- 「新しいロールの作成」を押下
- 「クロスアカウントアクセスのロール」を選択
- アカウントIDにマスターアカウントのIDを入力する。
- アタッチするポリシーを選択します。
- 今回はViewOnlyAccessにします。
- Role名などを入力します。
- 私は「OrganizationAccountReadOnlyRole」と入力しました。
- OrganizationsのコンソールからメンバーアカウントをCreateした場合には「OrganizationAccountAccessRole」が作られているようです。
AWS CLIでの動作確認
- マスターアカウントのIAMユーザーで動作確認します。
- xxxxxxxxxxはメンバーアカウントのIDです。
- プロファイルで切り分けている方は「--profile」オプションを使ってください。
aws sts assume-role --role-arn arn:aws:iam::xxxxxxxxxx:role/OrganizationAccountReadOnlyRole --role-session-name "RoleSession"
- 以下のような応答が戻ってきたらOKです。
{
"AssumedRoleUser": {
"AssumedRoleId": "xxxxxxxxxx:RoleSession",
"Arn": "arn:aws:sts::xxxxxxxxxx:assumed-role/OrganizationAccountAccessRole/RoleSession"
},
"Credentials": {
"SecretAccessKey": "xxxxxxxxxx",
"SessionToken": xxxxxxxxxxxxxxxxxxxx",
"Expiration": "2017-06-15T09:23:23Z",
"AccessKeyId": "xxxxxxxxxx"
}
}
主な用途
- メンバーアカウントのCloudWatchの値などを一元的に収集する。
- メンバーアカウントのリザーブドインスタンスの更新日時の収集
参考
AWS Organizationsを利用したアカウント作成の自動化
AWS OrganizationsをAWS CLIでひととおり操作してみた