説明
IAM ユーザーが iam:PutRolePolicy でロールのインラインポリシーを追加・上書きすると、そのロールを使うサービスやセッションの権限が拡大する可能性があります。ユーザーがロールを引き受けるか、ロールを使うワークロードを制御できれば、拡大した権限を悪用できるおそれがあります。
ポリシーの編集は、ロールの信頼ポリシーを変更する権限や利用権限を得ることとは別です。境界、組織ポリシー、明示的な拒否も実際の操作を制限する場合があります。
想定される影響
- アプリケーションの実行ロールが、必要以上のリソースにアクセスできる可能性があります。
- 一つのロールの変更が、複数のサービスインスタンスの権限に影響するおそれがあります。
対処方法
一般ユーザーに不要な iam:PutRolePolicy を削除してください。必要な変更は承認済みのデプロイ用ロールや管理ロールで行い、Resource を対象ロール ARN に限定してください。ポリシー内容とロールを使う経路を確認し、正常な作業が成功し、未承認の変更が阻止されることを確認してください。
例
同じユーザーとインラインポリシーの比較です。別の管理ポリシーアタッチリソースを追加する必要はありません。
変更前
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:PutRolePolicy",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
ユーザーが、ロール全体のインラインポリシーを追加・更新できます。
変更後
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
この許可文には EC2 の参照操作だけを残します。他のポリシーの変更権限と不要な参照権限も確認してください。