首页 > 解决方案 > 根据实例标识符将 rds:DeleteDBInstance 限制为指定的 arn

问题描述

我正在为具有有限权限的脚本创建 AWS IAM 策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBSnapshots",
                "rds:RestoreDBInstanceFromDBSnapshot",
                "rds:StartDBInstance",
                "rds:DeleteDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:*:snapshot:*",
                "arn:aws:rds:*:*:subgrp:*",
                "arn:aws:rds:*:*:og:*",
                "arn:aws:rds:eu-west-1:*:db:*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "MYPUBLICIP"
                }
            }
        }
    ]
}

该脚本必须能够恢复带有prodas 标识符的 RDS 实例的快照,从而创建一个带有 as 标识符的新实例test

我希望脚本只删除具有给定标识符 ( test) 的实例。

是否可以根据标识符限制rds:DeleteDBInstance到指定的arnrds: RestoreDBInstanceFromDBSnapshot而不会阻止处理prod标识符?

标签: amazon-web-servicesamazon-rdsamazon-iam

解决方案


最好标记您的 RDS 数据库实例并根据资源标签控制访问。

标记数据库实例后,您只需更新策略并为 DeleteDBInstance 操作创建单独的语句:

{ 
  "Effect": "Allow",
  "Action": "rds:DeleteDBInstance",
  "Resource": "arn:aws:rds:*:*:db:*",
  "Condition": {
     "IpAddress": {
        "aws:SourceIp": "MYPUBLICIP"
      },
      "StringEquals": {
          "aws:RequestTag/environment": [
              "test"
          ]
       }
    }
}

只有在资源包含标签 environment=test 时,此操作才会成功。


推荐阅读