我想让用户只能在一个rds实例上拥有完全访问权限

时间:2014-12-11 14:56:33

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

我尝试使用此政策:

{
  "Version":"2012-10-17",  
  "Statement":[{
    "Effect":"Allow",
    "Action":"rds:*",
    "Resource":"arn:aws:rds:sa-east-1:442617300818:db:databasename"
    }]
}

响应是:

  

用户:arn:aws:iam :: 442617300818:用户/ wa-DB-developers不是   授权执行:rds:DescribeDBInstances(服务:AmazonRDS;   状态代码:403;错误代码:AccessDenied;请求ID:   5f1e86c6-8145-11e4-9598-27c541a5a3a7)

谢谢!

2 个答案:

答案 0 :(得分:3)

可以使用IAM Policy Simulator调整策略。

模拟器允许您选择用户,操作(例如DescribeDbInstances)和资源,然后确定是否允许用户在该资源上调用该操作。

在您的特定情况下,由于策略仅授予特定RDS实例的权限,因此在未指定特定实例的情况下调用DescribeDBIntances将失败。

例如,从CLI中将失败:

aws rds describe-db-instances

然而,这将有效:

aws rds describe-db-instances --db-instance-identifier databasename

这是因为您未授予查看所有数据库的权限。仅查询策略已授予访问权限的特定数据库将成功。

答案 1 :(得分:1)

这对我有用。这样,用户就可以看到所有数据库,然后拒绝访问您不希望用户进行调整的数据库。用户将能够看到其他实例但无法实现它们。他们甚至能够看到日志,标签等。

   {
    "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": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "rds:*"
            ],
            "Resource": "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
        }
    ]
}

您可能遇到的唯一问题是,如果您有许多需要删除访问权限的实例,除此之外,只要您对用户看到其他数据库的整体视图没有问题就应该很好