説明
iam:UpdateLoginProfile を広く許可すると、他の IAM ユーザーの既存コンソールパスワードを変更できます。強い権限を持つユーザーに対してこの権限が有効で、ログイン条件も満たす場合、そのユーザーの権限が悪用されるおそれがあります。
この操作は既存のログインプロファイルを変更するもので、新規作成の権限ではありません。パスワードを変更しても、MFA や他のログイン制限を回避できるわけではありません。
想定される影響
- ユーザーアカウントを通じて、その権限範囲のデータやリソースが悪用されるおそれがあります。
- 未承認のパスワード変更により、正当なユーザーのアクセスが中断する場合があります。
対処方法
- 不要なロールから
iam:UpdateLoginProfileを削除し、必要な場合は承認されたユーザー ARN に限定してください。 - パスワード管理をヘルプデスクやセキュリティ管理者に限定し、高権限ユーザーの変更には追加承認を適用してください。
- ログインプロファイルの変更とその後のログイン記録を確認し、MFA など既存の認証制御を維持してください。
例
ロール権限の抜粋です。必須の assume_role_policy は省略しているため、承認済みの主体だけがロールを使用できるよう別途構成してください。
変更前
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:UpdateLoginProfile",
]
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 の参照に限定します。他のポリシーのプロファイル変更権限も削除し、
ec2:Describe*を必要な参照操作に絞ってください。