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

如何在AWS中无需标签基于资源名称前缀配置访问权限限制

RDS前缀名权限限制实现方案

你之前的策略配置不生效,核心是两点错误:一是Resource字段未使用标准ARN格式,IAM会把非ARN格式字符串里的*识别为普通字面字符;二是部分RDS操作不支持资源级权限,无法直接通过资源字段做限制。

支持资源级权限的操作配置

IAM原生支持*作为任意长度字符串的通配符(不需要写正则,IAM采用简化的字符串匹配规则,不是标准正则匹配模式),只需要在Resource字段填写对应资源的完整ARN,带前缀通配的匹配规则就可以正常生效。

RDS实例的标准ARN格式为arn:aws:rds:<区域标识>:<账号ID>:db:<实例名称>,匹配所有以new-database-change-开头的RDS实例的配置示例如下:

{
    "Sid": "AllowRDSOperationOnMatchInstances",
    "Effect": "Allow",
    "Action": [
        "rds:AddTagsToResource",
        "rds:RestoreDBClusterToPointInTime",
        "rds-db:connect",
        "rds:DeleteDBInstance"
    ],
    "Resource": "arn:aws:rds:*:*:db:new-database-change-*"
}

ARN中各通配符的作用:

  • 第一个*:匹配所有AWS区域,如果需要限定到指定区域,替换成对应区域码(如cn-north-1、us-east-1)即可
  • 第二个*:匹配所有AWS账号ID,需要限定到自有账号时,直接替换成你的12位账号ID即可
  • 末尾的new-database-change-*:匹配所有名称以指定字符串开头的RDS实例

如果需要同时匹配Aurora集群,只需要在Resource字段中新增集群对应的ARN条目arn:aws:rds:*:*:cluster:new-database-change-*即可,整个配置完全不需要依赖资源标签。

不支持资源级权限的操作处理

你之前策略里列出的rds:DescribeDBInstances、rds:DescribeDBClusters、rds:CreateDBInstance三个操作属于不支持资源级权限的类型,不能直接通过Resource字段限定访问范围,需要单独处理:

  • rds:DescribeDBInstances、rds:DescribeDBClusters属于列表查询类操作,这类操作必须设置Resource: "*"才能正常调用,IAM本身不支持对这类接口的返回结果做过滤,无法直接限制用户只能查询到指定前缀的实例。如果需要做可见范围限制,只能通过自定义权限边界或者上层应用的逻辑做过滤,IAM策略原生不支持该能力。
  • rds:CreateDBInstance操作同样需要设置Resource: "*",但可以通过IAM条件键,强制用户创建的实例名称必须符合前缀要求,配置示例:
{
    "Sid": "RestrictCreatedInstanceNamePrefix",
    "Effect": "Allow",
    "Action": "rds:CreateDBInstance",
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "rds:DatabaseName": "new-database-change-*"
        }
    }
}

添加该条件后,用户调用创建实例接口时,如果传入的实例名不符合new-database-change-前缀要求,请求会被直接拒绝。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:36:18