root という名前の IAM ユーザーのアクセスキーの確認

root という名前の IAM ユーザーと AWS アカウントのルートユーザーを区別し、キーの実際の所有者、権限、漏えいの有無を確認してください。

説明

aws_iam_access_key の user は IAM ユーザー名です。user = "root" と指定しても、AWS アカウントのルートユーザーの認証情報を作成するわけではありません。有効なキーが存在するだけでは、シークレットの漏えいやアカウント全体の権限を断定できません。

ただし、実際のアクセスキー ID とシークレットアクセスキーが漏えいすると、その IAM ユーザーに許可された操作が悪用される可能性があります。所有者、利用先、権限を確認し、長期キーが必要かを検討してください。

想定される影響

  • 有効なキーのペアを取得した人は、IAM ユーザーに許可された AWS 操作を実行できます。
  • 不要な有効キーは、長期認証情報が漏えいする機会を増やします。
  • 状態ファイルやデプロイ出力に広くアクセスできると、シークレットアクセスキーが漏えいする可能性があります。

対処方法

  • 自動化にはロールの一時的な認証情報を優先し、残す IAM キーには必要な権限だけを付与してください。
  • シークレットと Terraform の状態へのアクセスを制限してください。実際の漏えいが確認された場合は利用先を移行し、キーを失効して関連する API 操作を調査してください。
  • AWS アカウントのルートユーザーのアクセスキーは別途確認して削除してください。IAM ユーザー名を変えても、実際のルート認証情報は削除されません。

例

以下は、キーの関連付け先となる IAM ユーザーがすでに存在することを前提とした部分的な例です。

変更前

hcl
resource "aws_iam_access_key" "example" {
  user   = "root"
  status = "Active"
}

root という名前の IAM ユーザーに有効なキーを作成します。権限は実際のポリシーによって決まり、名前によって AWS アカウントのルート権限が与えられることはありません。

変更後

hcl
resource "aws_iam_access_key" "example" {
  user = "some-user"
}

対象ユーザーを some-user に変更しています。status を省略しても既定値は Active なので、キーを無効化する変更ではありません。対象ユーザーの権限とキーの必要性は別途確認してください。

参考資料