MFA認証かつスイッチロールの環境でTerraformを実行する

こんにちは。akippa株式会社のエンジニア奥山です。

前回Terraformの導入について書きました。今回はその導入の際のTipsを記事にします。

こちらの記事でまとめられていますが、弊社のAWSではジャンプアカウントからスイッチロールで各環境へアクセスするようになっています。
また、スイッチにはMFA(2段階認証)が必須になっています。

この環境下でTerraformを実行するためにAWS Vaultを使う必要がありました。その方法を簡潔にまとめます。

AWS Vaultをインストール・プロファイル登録

こちらを参考にインストールしたら、まずはジャンプ元アカウントの認証情報を登録します。

下記はakippa-jumpというプロファイル名で登録する例です。アクセスキーとシークレットキーを求められるので入力します。

$ aws-vault add akippa-jump

下記は登録したプロファイルでawsのcliを実行する例です。

$ aws-vault exec akippa-jump -- aws s3 ls

MFAを用いてスイッチしTerraform実行

~/.aws/configにスイッチ先のプロファイルを追加します。akippa-jumpからakippa-devへスイッチする例です。

[profile akippa-dev]
source_profile = akippa-jump # スイッチ元のプロファイル。今回はakippa-jumpを指定
role_arn = arn:aws:iam::[スイッチ先AWSのID]:role/xxxxx # スイッチ先のroleの識別子
mfa_serial = arn:aws:iam::[スイッチ元AWSのID]:mfa/xxxxx # スイッチ元のMFAの識別子

そして追加したakippa-devのプロファイルでaws-vault経由でterrafromを実行します。

$ aws-vault exec akippa-dev -- terrafrom plan

MFA認証コードを入力すると、akippa-devでTerraformが実行できました。

AWS Vaultについて

今回初めてAWS Vaultを使いましたが、セキュアな上に便利だなと思いました。
弊社ではアクセスキーを定期的にローテーションしていますが、それもコマンド1回で行えます。

$ aws-vault rotate akippa-jump

Terraformの利用有無問わず、個人端末でawsのアクセスキーを管理するなら使うようにしようと思います。

この記事が気に入ったらサポートをしてみませんか?