AWS環境で複数アカウントを管理する際、SwitchRoleを活用すると便利です。
よくある運用として、アカウントを発行されて、それをベースに環境にSwitchロールして使う使われ方は結構多いのではないかと思います。
その際にはaws-vaultを使ってました。今も使っており、前職でも使っていました。
今日はAWS Vaultを使ってSwitchRoleを簡単かつ安全に設定する方法をメモっておきます。
AWS Vaultとは?
AWS Vaultは、AWS CLIの資格情報を安全に管理するためのツールです。ローカルストレージに保存される資格情報を暗号化し、セッションベースでアクセスすることでセキュリティを向上させます。
SwitchRoleの設定方法
まずはaws configureにて初期設定をしておきます。
まずはいつも通りawscliをインストールして、アクセスキー、シークレットキーを設定しておきます。そうすると、~/.aws/configに以下が追加されます。
[profile default] region = ap-northeast-1 output = json
やったことないですが、直接aws-vaultにて設定することも可能みたいです。
aws-vault add base-profile
Access Key ID と Secret Access Key を入力します。
- SwitchRole用プロファイルの設定
次に、スイッチ先のロールを指定したプロファイルを設定します。
[profile switch-role-profile] source_profile = default role_arn = arn:aws:iam::123456789012:role/YourRoleName region = ap-northeast-1
ここでは、source_profileにはアクセスキーを設定したプロファイル名を指定します。role_arnにはスイッチ先のロールのARNを入力してください。
- SwitchRoleプロファイルの使用 設定が完了したら、AWS Vaultを使って実行してみます。
aws-vault exec switch-role-profile -- aws sts get-caller-identity
このコマンドで、スイッチ先のロールを使用してAWSリソースにアクセスできます。
よくある問題と対処法
1. ロールにアクセスできない
原因: ベースプロファイルのIAMユーザーに適切な権限がない、またはスイッチ先ロールの信頼関係ポリシーに問題がある。 対策: ベースプロファイルのIAMユーザーにsts:AssumeRoleの権限を付与し、スイッチ先ロールの信頼関係ポリシーで元のプロファイルを許可してください。
2. 毎回パスフレーズを聞かれる
キーリングを指定した際には、毎回パスフレーズが聞かれるようになってしまいます。それを避ける場合にはバックエンドをファイルベースにすると聞かれなくなるそうです。
登録の際に--backend=file
をつけて実施します。
ファイルバックエンドの設定: コマンドラインで指定する場合:
aws-vault add switch-role-profile
もしくは環境変数で以下を設定後にaddすれば大丈夫です。
export AWS_VAULT_BACKEND=file
3. セッション有効期限を延長したい
AWS Vaultのデフォルトセッション時間は1時間です。これを延長するには、duration_secondsを設定します。
[profile switch-role-profile] source_profile = base-profile role_arn = arn:aws:iam::123456789012:role/YourRoleName region = us-east-1 duration_seconds = 3600
便利なコマンド集
プロファイル一覧を確認:
aws-vault list
一時的な認証情報を確認:
aws-vault exec switch-role-profile -- env | grep AWS
まとめ
何かと使うことが多いaws-vault。
環境が変わると再設定しなおさないといけなくなって、そのやり方がわからなくなったので、メモとして残しておくことにしました。
もっと便利な使い方があるっぽいので、これからもちょくちょくメモっておこうと思います。