概要
外部ID(外部キー)付きでAssumeRoleをする機会があったので、メモです。
外部キーについて
AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法 - AWS Identity and Access Management
- 外部IDはAccessKeyのペアなどと違い、機密情報として扱われないので注意。
- 外部IDはランダムな文字列が良い
- 外部IDは該当のロールの「信頼関係」で確認できます。
- 外部IDは「混乱した代理」問題を防ぐためにある
- 外部IDは「CLI」もしくは「API」で利用する
- Management Consoleからはできないので注意
CLIでのassume-roleのやり方
今回は外部IDがある時の話なので、--external-id
オプションをつけます
aws sts assume-role --role-arn <引き受けたいロールのARN> --role-session-name <セッション名(なんでもいい)> --external-id <外部ID>
これを許可されたアカウントのIAM Userで叩くと、以下の情報が返ってきます
- AccessKeyId
- SecretAccessKey
- SessionToken
以下のように環境変数に設定することで、引き受けたロールでcliを操作できるようになります。
export AWS_ACCESS_KEY_ID=RoleAccessKeyID
export AWS_SECRET_ACCESS_KEY=RoleSecretKey
export AWS_SESSION_TOKEN=RoleSessionToken
引き受けたことの確認
aws sts get-caller-identity
元のIAMユーザーに戻す
環境変数を削除する
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN