y-ohgi's blog

TODO: ここになにかかく

aws-vaultを使用してIAM Identity Center経由でジャンプアカウントを実行する

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

インストール

$ 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