0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

terraformerをmaster accountからassume roleでアクセス&MFA必須なAWS環境で使う

TL:DR

  • AWSではMaster AccountにIAM Userでログインし、他のアカウント(OU)へアクセスできる権限をもったRoleへSwitch/AssumeRoleして必要な作業を行うケースが多いです。
  • ポリシーとしてSwitch/AssumeRoleの際に、"MFAが有効化"されていることを必須としていることも多いです。
  • 上記環境にてSwitch/AssumeRole先の情報をterraformerで引っ張る場合、AssumeRoleとMFAへの対応を行う必要があります。
  • STSのToken管理はaws-vaultにお任せ。aws-vaultでAssumeRoleとMFA対応をします。
  • なので実態としては、aws-vaultでterraformerをAssumeRole&MFA対応させるお話です。

aws-vaultでterraformerをAssumeRole&MFA対応させる

aws-vault
https://github.com/99designs/aws-vault

terraformer
https://github.com/GoogleCloudPlatform/terraformer

terraformerのインストール

リポジトリのREADMEにあるこの辺を参考にどうぞ。

今回はhomebrewで
brew install terraformer

aws-vaultでMFAするための設定

  • 事前に必要なもの

    • terraformerが利用するMaster Account上のIAM UserのAccess KeyとSecrets(A)
    • (A)に紐付いたMFAデバイスのARN(B)
      • こういうやつ → arn:aws:iam::xxxxxxxxxxxx:mfa/yourIAM
    • (A)からAssume/SwitchRole可能なRoleのARN(C)
      • こういうやつ → arn:aws:iam::xxxxxxxxxxxx:role/hoge-prov
  • aws-vaultで使うprofile追加

$ aws-vault add hoge-prov
※Access KeyとSecretsを聞かれるので(A)を登録する
  • profileに下記を登録する
    • MFAデバイスのARN(B)
    • AssumeRoleするRoleのARN(C)
~/.aws/config
~(snip)~

[profile hoge-prov] ← 先程追加したprofileの項
mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/yourIAM ←ここに(B)を登録する
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/hoge-prov ←ここに(C)を登録する

aws-vaultでMFAしつつterraformer importを実行してみる

$ aws-vault exec hoge-prov -- terraformer import aws --resources=s3 --regions=ap-northeast-1
Enter token for arn:aws:iam::xxxxxxxxxxxx:mfa/yourIAM: 
※^ MFAデバイスのTokenを入力してあげましょう

以下実行結果
2019/12/26 16:26:24 aws importing region ap-northeast-1
2019/12/26 16:26:24 aws importing... s3
2019/12/26 16:26:30 Refreshing state... aws_s3_bucket_policy.xxxx
2019/12/26 16:26:30 Refreshing state... aws_s3_bucket.xxxx
2019/12/26 16:26:31 aws Connecting.... 
2019/12/26 16:26:31 aws save s3
2019/12/26 16:26:31 aws save tfstate for s3

こんな感じにterraformerでのimport対象リソースのtfが ./generated 以下に生成されていればok
Screen Shot 2019-12-26 at 18.17.52.png

terraformerの処理に時間がかかりすぎてセッション切れしちゃう場合

execの下記オプションでセッションの有効期限を変更できるようなのでお試しあれ

$ aws-vault exec --help
~(snip)~

  -t, --session-ttl=4h           Expiration time for aws session
      --assume-role-ttl=15m      Expiration time for aws assumed role

~(snip)~

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?