1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSのスイッチロール/MFA設定されているアカウントでTerraformCLIを使う

Posted at

はじめに

TerraformCLIを利用する際に、スイッチロールやMFAを設定しているアカウントの設定方法について調べたので、その際の設定方法についての備忘。
(TerraformCLIというよりかは、AWSの設定方法)

環境

  • MacOS12(Monterey)
  • CLI
    • Terraform: v1.5.7
    • aws-vault: 7.2.0
    • aws-cli: 2.13.21

設定

いきなりですが、最終的な.aws/configの設定は以下の通り

config.
[profile hoge-origin]
region = ap-northeast-1
output = json

[profile hoge-vault]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::{スイッチ先アカウントID}:role/{ロール名}
source_profile = hoge-origin
mfa_serial = arn:aws:iam::{スイッチ元アカウントID}:mfa/{ユーザーアカウント}

[profile hoge]
region = ap-northeast-1
output = json
credential_process = aws-vault exec hoge-vault --json --prompt=osascript

ここではhoge-originをスイッチ元のアカウント(credentialsが設定されているアカウント)
hoge-vaultはスイッチ先アカウントとして、hogeを最終的にAWS_PROFILEとして設定するアカウントとします。(defaultで運用されている場合は適宜読み替えてください)

AWSCLIの利用だけであれば、上記で言うところのhoge-vaultAWS_PROFILEに設定すれば、問題なく利用できると思いますが、terraformを実行すると

Error: error configuring S3 Backend: Error creating AWS session: AssumeRoleTokenProviderNotSetError: assume role with MFA enabled, but AssumeRoleTokenProvider session option not set.

というエラーが発生するため、後述するaws-vaultというツールを利用して、これを回避しました。

aws-vault

aws-vaultはAWSアクセスキーをキーチェーン等で暗号化して安全に扱うことができるツールです。
Macであればhomebrewでインストールします。

$ brew install aws-vault
$ aws-vault --version
7.2.0-Homebrew

設定

aws-vaultに認証情報を設定します。
credentialsが設定されているのはhoge-originのため、以下のように設定します。

$ aws-vault add hoge-origin
Enter Access Key ID: {aws_access_key_id}
Enter Secret Access Key: {aws_secret_access_key}
Added credentials to profile "hoge-origin" in vault

登録ができているか確認

$ aws-vault list
Profile                  Credentials              Sessions                 
=======                  ===========              ========                 
default                   -                        -                        
hoge-origin               hoge-origin              -                        
hoge-vault                -                        -   
hoge                      -                        -   

設定は以上です。
あとは、実際にhogeプロファイルに切り替えて、いつも通りにawsコマンド及びterraformコマンドが実行できます。
※MFAを設定しているため、コードの入力は必要です

$ export AWS_PROFILE=hoge
$ aws s3 ls
2023-02-08 12:06:02 xxx
2022-05-18 19:21:10 yyy

その他

実行に関して、都度キーチェーンのパスワードの入力を求められる場合があります。
その場合は、以下のように設定変更することで、無効化 or 時間を変更することができます。

$ open ~/Library/Keychains/aws-vault.keychain-db

キーチェーンの設定を変更する
image.png

実行時間の変更かロック事態を無効化する
image.png

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?