TL;DR
- aws-vaultを利用してセキュアにIICアカウントからジャンプアカウントを行い、CLI操作を実行する
概要
aws-vaultはAWSのアクセスキーをセキュアに保管してくれるOSSです。
従来、aws cli 利用時にはIAMユーザーのアクセスキーを ~/.aws/credentials
に平文で保管して使用します。
また、現在はIAMユーザーは非推奨であり、IAM Identity Centerの使用が推奨されています。
ref: https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp
この記事ではaws-vaultでIAM Identity Centerを使用し、ジャンプアカウントを行う方法について紹介します。
Version
- aws-vault
- 7.2.0
- macOS
- 15.1
インストール
$ brew install aws-vault
設定
~/.aws/config
に設定する項目について説明します。
初めに、SSOセクション(IAM Identity Center)(以降IIC)の設定を行います。
[sso-session my-organization] sso_start_url = https://<ACCOUNT NAME>.awsapps.com/start sso_region = ap-northeast-1 sso_registration_scopes = sso:account:access
- sso-session
- IICセッションの命名
- sso_start_url
- IICのstart url
- sso_regon
- IICを有効化したリージョン
- 別リージョンを指定してしまうとログインに失敗してしまう為注意です。
- sso_registration_scopes
- アクセススコープを設定します。
- 基本的に
sso:account:access
を設定して問題ありません。
自分のOrganizationのアカウントを設定します。
[profile account-a] sso_session = my-organization sso_account_id = <ACCOUNT A ID> sso_role_name = AdministratorAccess region = ap-northeast-1 output = json
- sso_session
- SSOセクションを指定します。
- 今回は
my-organization
という名前のSSOセクションを設定した為、それを指定しています。
- sso_account_id
- アカウントのIDを指定します。
- sso_role_name
- 使用するロールを指定します。
- region
- コマンドを実行するデフォルトのリージョンをしていします。
- output
- aws cliのアウトプットフォーマットを指定します。
次にジャンプアカウント先の設定をします。
[profile account-b] role_arn = arn:aws:iam::<ACCOUNT B ID>:role/JumpRole source_profile = account-a region = ap-northeast-1 output = json
- role_arn
- ジャンプアカウント用ロールを指定します
- source_profile
- 最初にログインするアカウントを指定します。
- 今回は
account-a
と命名している為、それを指定しています。
- region
- コマンドを実行するデフォルトのリージョンをしていします。
- output
- aws cliのアウトプットフォーマットを指定します。
実行
$ aws-vault exec account-b -- aws s3 ls