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のアクセスキーを管理するなら使うようにしようと思います。
この記事が気に入ったらサポートをしてみませんか?