説明
glue:UpdateDevEndpoint では、Glue 開発エンドポイントの公開キーやライブラリを変更できます。この権限を持つロールの利用者が接続可能なエンドポイントを制御すると、関連付けられたロールの権限で処理を実行できる場合があります。
エンドポイントのロールに強い権限があると、間接的な権限昇格につながるおそれがあります。実際の許可範囲は、ポリシーのリソース、条件、その他の権限制限にも左右されます。
想定される影響
- 権限昇格: エンドポイントを制御し、より強い権限で処理を実行できる場合があります。
- データの露出: 関連付けられたロールに許可されたストレージや内部データへアクセスできる可能性があります。
- 環境の改変: 正常な開発環境が意図しないコードを実行するよう変更されるおそれがあります。
対処方法
- 開発エンドポイントを管理しないロールから
glue:UpdateDevEndpointを削除してください。 - 必要な管理権限を専用ロールと承認済みエンドポイントに限定し、エンドポイントのロールにも最小権限を適用してください。
- CloudTrail と承認手順でエンドポイントの変更を管理してください。
例
ロールの権限ポリシーを比較する抜粋です。誰がロールを使用できるかを決める信頼ポリシーは、別途設定してください。
変更前
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 = [
"glue:UpdateDevEndpoint",
]
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 の情報取得権限だけを残します。実際の業務に必要な権限を選び、他の関連付けられたポリシーも確認してください。