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

如何用单条IAM策略语句拒绝AWS所有含-prod-的生产资源访问?

解决同一AWS账户下拒绝所有生产环境资源的IAM策略问题

我们团队在同一AWS账户内通过资源名称区分开发与生产环境(比如S3桶example-dev-bucket和example-prod-bucket),需要创建IAM角色实现“允许访问所有资源,但拒绝所有生产资源”的权限控制。

配置基础允许策略

先设置允许所有资源访问的策略,语句如下:

{
    "Effect": "Allow",
    "Action": "*",
    "Resource": "*"
}

遇到的问题

单独针对S3配置拒绝生产资源的策略可以正常生效:

{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "arn:aws:s3:::*-prod-*"
}

但尝试用单条语句覆盖所有服务时,*-prod-*或arn:aws:*:*:*:*:*-prod-*这类格式会提示语法无效——这是因为AWS IAM的ARN通配符必须符合ARN的标准结构,不能随意添加多余的分隔符。

通用解决方案

要通过单条语句匹配所有ARN中包含-prod-的资源,可使用如下符合ARN规则的通配符策略:

{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "arn:aws:*:*:*:*prod*"
}

策略说明

  • arn:aws:* 匹配AWS所有服务
  • 中间的*分别匹配任意区域、任意账户ID(如果是固定账户,可替换为具体账户ID提升安全性)
  • 最后的*prod*匹配资源名称/路径中包含prod的内容,覆盖不同服务的ARN结构差异(比如S3桶的ARN无区域/账户段,EC2实例的ARN包含区域和账户段)

如果需要更严格的匹配(仅命中包含-prod-的资源,避免误匹配如myprod这类名称),可补充覆盖边界场景:

{
    "Effect": "Deny",
    "Action": "*",
    "Resource": [
        "arn:aws:*:*:*:*prod*",
        "arn:aws:*:*:*:prod*",
        "arn:aws:*:*:*:*prod"
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:20:29