授予 IAM 用户访问一个 RDS 实例的权限

Grant an IAM user access to one RDS instance

我创建了一个 RDS 实例,并希望授予我的一位用户访问该 RDS 实例的权限。我想知道如何授予此权限。

我已经在我的 IAM 用户的附加策略中授予了 RDSFULLACESS,然后像这样模拟它:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "rds:*",
            "cloudwatch:DescribeAlarms",
            "cloudwatch:GetMetricStatistics",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "sns:ListSubscriptions",
            "sns:ListTopics",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
    }
]
}

但是我的用户仍然无法访问这个RDS实例,请问是什么问题?他可以自己做,但我不想让他再做一个!

如有任何帮助,我们将不胜感激。

如果上述策略具有正确的数据库 ARN 并附加到 IAM 用户,则它将允许对 RDS 数据库执行完全管理操作,例如停止数据库或恢复备份。

要明确排除 "Create" 权限,基于此页面上的列表 http://docs.aws.amazon.com/IAM/latest/UserGuide/list_rds.html 例如,包括您确实需要的所有权限。在这种情况下 "Deny" 总是胜过 "Allow"。 "Create" 权限与现有数据库相比没有问题,但不适用于其他地方。

    {
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "rds:*",
            "cloudwatch:DescribeAlarms",
            "cloudwatch:GetMetricStatistics",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "sns:ListSubscriptions",
            "sns:ListTopics",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
    },
    {
      "Effect": "Deny",
      "Action": [
        "rds:Create*"
      ],
      "NotResource": [
         "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
       ] 
    }
    ]
    }

我没有测试过这个政策,这只是一个例子

如果用户作为数据消费者需要访问数据库,则不会以这种方式进行管理。为此他们需要有两件事

# 通过正确的网络和正确设置的安全组网络访问 RDS 实例

# 数据库的用户帐户凭证

对于mysql,这里描述了初始连接的过程http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html

请查看以下针对单用户单 rds 启停访问的策略。

创建以下策略并在资源部分提供 rds arn。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "rds:AddTagsToResource",
                "rds:ListTagsForResource",
                "rds:DescribeDBSnapshots",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBParameters",
                "rds:DescribeDBParameterGroups",
                "rds:StopDBInstance",
                "rds:StartDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:us-east-1:accountnumber:db:dbidentifier"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBInstances"
            ],
            "Resource": "*"
        }
    ]
}

将此策略附加到您要授予访问权限的用户。