>我尝试使用此策略:
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"rds:*",
"Resource":"arn:aws:rds:sa-east-1:442617300818:db:databasename"
}]
}
回应是:
User: arn:aws:iam::442617300818:user/wa-DB-developers 不是 授权执行:RDS:DescribeDBInstances (服务:AmazonRDS; 状态代码:403;错误代码:访问被拒绝;请求 ID: 5F1E86C6-8145-11E4-9598-27C541A5A3A7)
谢谢!
可以使用 IAM 策略模拟器调试策略。
模拟器允许您选择用户、操作(例如 DescribeDbInstances)和资源,然后确定是否允许用户对该资源调用该操作。
在您的特定情况下,由于策略仅授予对特定 RDS 实例的权限,因此在不指定特定实例的情况下调用DescribeDBIntances
将失败。
例如,从 CLI 中,这将失败:
aws rds describe-db-instances
但是,这将起作用:
aws rds describe-db-instances --db-instance-identifier databasename
这是因为您尚未授予查看所有数据库的权限。仅查询策略已授予访问权限的特定数据库将成功。
我有用。这种方式允许用户查看所有数据库,然后拒绝访问您不希望用户进行调整的数据库。用户将能够看到其他实例,但无法影响它们。 他们甚至无法看到日志、标签等。
{
"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"
}
]
}
您可能遇到的唯一问题是,如果您有许多实例需要删除访问权限,除此之外,只要您同意用户看到其他数据库的整体视图,您应该很高兴。