S3 バケットの MFA Delete 利用の確認

重要なオブジェクトバージョンの完全削除に追加認証が必要か検討してください。

説明

バージョニングを有効にしたバケットの MFA Delete は、オブジェクトバージョンの完全削除とバージョニング状態の変更に追加認証を要求します。使用しない場合、その権限を持つ主体は MFA の確認なしでこれらを実行できます。通常のオブジェクト削除要求すべてに MFA を要求する機能ではありません。

想定される影響

  • 権限の悪用や操作ミスによって、復旧に必要なバージョンが完全に削除される可能性があります。
  • バージョニングだけでは、すべてのバージョンの削除を防げません。

対処方法

データ保持要件に合わせて MFA Delete の導入を検討してください。有効化はバケット所有アカウントのルートユーザーが MFA デバイスを使い、AWS CLI または API で行う必要があります。実際の有効状態を確認し、ルートアクセスを厳格に管理してください。MFA Delete は S3 ライフサイクル設定と併用できません。

例

AWS provider 3.75.2 の従来のインライン構文による例です。この版の mfa_delete は AWS の実際の状態を反映するため、Terraform の値を変えるだけでは MFA Delete を有効にできません。

変更前

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  versioning {
    enabled = true
  }
}

変更後

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  versioning {
    enabled    = true
    mfa_delete = true
  }
}

変更後は AWS で別途有効にした MFA Delete の状態を宣言します。適用前に実際のバージョニングと MFA Delete の状態を確認してください。

参考資料