我尝试使用此政策:
{
"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)
谢谢!
答案 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"
}
]
}
您可能遇到的唯一问题是,如果您有许多需要删除访问权限的实例,除此之外,只要您对用户看到其他数据库的整体视图没有问题就应该很好