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

时间:2016-08-25 07:14:28

标签: amazon-web-services permissions amazon-rds amazon-iam

我创建了一个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实例,问题是什么?他可以自己做,但我不想让他再做一个!

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

根据此页面上的列表明确排除“创建”权限 http://docs.aws.amazon.com/IAM/latest/UserGuide/list_rds.html 例如,包括您需要的所有权限。在这种情况下,“拒绝”总是击败“允许”。 <创建'权限与现有数据库相比是可以的,但不适用于其他地方。

    {
"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实例进行网络访问

数据库的#user帐户凭据

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

答案 1 :(得分:0)

请为单用户单次起止访问找到以下政策。

创建以下策略,并在“资源”部分提供rds信息。

{
    "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": "*"
        }
    ]
}

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