Terraform AWS Provider の allowed_account_ids でオペミスを防ぐ

Terraform AWS Provider の allowed_account_ids でオペミスを防ぐ

まだ使ってないなら今すぐ導入することをおすすめします
Clock Icon2025.07.14

AWSで複数のアカウントを使い分けている環境では、間違ったアカウントでTerraformを実行してしまうという事故が発生しがちです。例えば、開発環境のつもりで作業していたのに、実は本番環境のクレデンシャルを使用していて、本番環境にリソースを作成してしまう、といったミスです。 あるいは逆に本番環境のリソースを誤って削除してしまうようなケースも考えられます。

Terraform AWS Provider の allowed_account_ids 設定を使用することで、このような危険なオペレーションミスを事前に防ぐことができます。

allowed_account_ids とは

allowed_account_ids は、Terraformの実行を特定のAWSアカウントIDに制限するためのホワイトリスト機能です。この設定により、指定されたアカウントID以外でTerraformを実行しようとした場合、実行前にエラーで止めることができます。

設定方法

基本的な設定

provider "aws" {
  region = "ap-northeast-1"
  allowed_account_ids = [
    "123456789012"  # 開発環境のアカウントID
  ]
}

複数アカウントを許可する場合

provider "aws" {
  region = "ap-northeast-1"
  allowed_account_ids = [
    "123456789012",  # 開発環境
    "987654321098"   # ステージング環境
  ]
}

変数を使用した設定

variable "allowed_account_ids" {
  description = "許可するAWSアカウントIDのリスト"
  type        = list(string)
  default     = ["123456789012"]
}

provider "aws" {
  region = "ap-northeast-1"
  allowed_account_ids = var.allowed_account_ids
}

※ allowed_account_idsを動的にする必要がある場合は殆どない気がしますが…

実際の動作例

正常なケース

# 許可されたアカウントIDでの実行
$ terraform plan
# 正常にプランが実行される
()

エラーケース

# 許可されていないアカウントIDでの実行
$ terraform plan
│ Error: AWS account ID not allowed: 999999999999
│ 
│   with provider["registry.terraform.io/hashicorp/aws"],
│   on providers.tf line 1, in provider "aws":1: provider "aws" {

まとめ

allowed_account_ids は、Terraformによるインフラストラクチャ管理において重要な安全機能です。適切に設定することで:

  • 間違ったアカウントでの実行を防げる
  • 本番環境での意図しない変更を防げる
  • チーム開発でのオペレーションミスを減らせる

特に複数のAWSアカウントを使用している環境では、必須の設定として導入することをお勧めします。

参考リンク

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.