とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Terraform実行対象のAWSアカウントを絞る

TerraformのAWSプロバイダーにはallowed_account_idsという設定項目があるのをご存知でしょうか?コードを実行する対象のAWSアカウントを絞れる設定です。

registry.terraform.io

コードに直接IAMユーザーのクレデンシャルを書いておけば、環境の取り違えは発生しないのですが、このコードはGitなどにコミットしづらいですよね。そこでよくやるのが、AWS CLIで対象のAWSを操作できるようにしておいて、AWS_PROFILEで環境を切り替えるという方法です。

しかし、この方法では環境の取り違えが発生する可能性があります。例えば、自分ではtest_1というAWSアカウントに対してTerraformを実行しているつもりが、AWS_PROFILEにはtest_2というAWSアカウントがセットされている、なんてことが簡単に想像できます。

allowed_account_idsに対象のAWSアカウントIDをセットしておくことで、このような取り違えを防止できます。

設定方法

特に難しいことはありません。プロバイダーの設定にallowed_account_idsを追加するだけです。

provider "aws" {
  allowed_account_ids = ["123456789012", "210987654321", ...]
}

ここに列挙されたAWSアカウントに対してのみTerraformが実行できます。それ以外の環境にはエラーが出て処理が失敗します。

まとめ

これを設定しておくだけで環境の取り違えをある程度防止できるので、手動でTerraformを実行する時には設定しておくといいですね。