説明
広範な iam:CreateAccessKey 権限があると、ロールの利用者が他の IAM ユーザーのアクセスキーを発行し、そのユーザーの権限で API を呼び出せる場合があります。発行と使用には、対象ユーザーや実効ポリシーの制限が適用されます。
特に、より強い権限を持つユーザーのキーを作成できると、新たな長期認証情報を通じた権限の悪用につながります。
想定される影響
- 高権限ユーザーへのなりすまし: 発行したキーで、そのユーザーに許可された操作を行える場合があります。
- 長期認証情報の生成: キーが長期間残り、継続的に悪用されるおそれがあります。
- 発見の遅れ: 未承認の発行を通常の管理作業と区別しにくい場合があります。
対処方法
- キー管理を行わないロールから
iam:CreateAccessKeyを削除してください。 - 必要な発行権限を専用管理者と承認済みの対象ユーザーに限定してください。
- キー作成イベントを監視し、可能な場合はロールによる一時認証情報へ切り替えてください。
例
権限ポリシーの抜粋です。ロールの信頼ポリシーは別途設定してください。
変更前
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:CreateAccessKey",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
変更後
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "inline_policy_run_instances"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
変更後は、同じロールのこのポリシーからキー発行権限を削除し、EC2 の情報取得権限だけを残します。他の関連付けられたポリシーと発行済みキーは別途確認してください。