説明
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 なので、キーを無効化する変更ではありません。対象ユーザーの権限とキーの必要性は別途確認してください。