You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AWS全局条件键创建IAM策略限制EC2密钥对名称

解决方案:限制IAM用户仅创建特定前缀的EC2密钥对

我明白你的需求——要限制IAM实体只能创建名称以test-key-pair*开头的EC2密钥对,而且遇到了EC2:CreateKeyPair不支持资源级权限的问题。其实不用依赖全局标签键,EC2提供了专门针对密钥对名称的条件键来实现这个限制,下面是具体的实现方法:

完整IAM策略示例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:CreateKeyPair",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "ec2:KeyPairName": "test-key-pair*"
                }
            }
        },
        // 可选:如果需要允许用户查看已有的密钥对,可以添加下面的语句
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeKeyPairs",
            "Resource": "*"
        }
    ]
}

关键细节解释

  • 为什么用Resource: "*"?:EC2:CreateKeyPair确实不支持资源级权限,所以必须用通配符覆盖所有资源,这是该动作的正常配置要求。
  • Condition块的作用:这里用StringLike操作符匹配请求中的密钥对名称参数,只有当提交的名称以test-key-pair开头时,这个权限才会生效,直接从请求源头限制不符合规则的创建操作。
  • 为什么不用全局标签键?:CreateKeyPair动作创建密钥对时标签是可选参数,无法保证用户一定会添加标签,而且标签限制没法直接约束密钥对本身的名称。而ec2:KeyPairName是直接校验用户提交的密钥对名称,精准度和可靠性更高。

测试验证

把这个策略附加到目标IAM用户或角色后,你可以做以下测试:

  • 尝试创建名为test-key-pair-dev的密钥对:应该成功执行
  • 尝试创建名为prod-key-2024的密钥对:会收到权限不足的错误提示,符合预期

内容的提问来源于stack exchange,提问作者user389955

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:02:06