Amazon web services 我想让用户只对一个rds实例拥有完全访问权限
我尝试使用此策略:Amazon web services 我想让用户只对一个rds实例拥有完全访问权限,amazon-web-services,amazon-rds,amazon-iam,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开发人员未注册 授权执行:rds:DescribeBind
{
"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开发人员未注册
授权执行:rds:DescribeBindInstances(服务:AmazonRDS;
状态代码:403;错误代码:AccessDenied;请求ID:
5f1e86c6-8145-11e4-9598-27c541a5a3a7)
谢谢 可以使用调试策略 模拟器允许您选择一个用户、一个操作(例如DescribedBinInstances)和一个资源,然后确定是否允许用户对该资源调用该操作 在您的特定情况下,由于策略仅授予特定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"
}
]
}
您可能遇到的唯一问题是,如果您需要删除对多个实例的访问,除此之外,只要您同意用户查看其他数据库的总体视图,您就可以开始了。是否允许用户执行
描述数据库实例
,但将其结果列表仅限于策略指定的实例,例如,很少有db实例标识符
?descripe db instances
命令是一个“全部或无”API调用。如果有人有权拨打电话,则返回所有数据。看,这对我来说是很不幸的。我希望我能在EC2实例配置文件(在附加的角色中)中指定它应该看到哪些RDS实例。然后,我将能够使用Java SDK以编程方式发现它们,而无需向应用程序提供外部信息。现在,应用程序必须获取“匹配”数据库实例标识符列表以过滤列表。否则,当列表变大时,它将不知道应该连接到哪个RDS。我错过什么了吗?我的用例有什么变通方法吗?@programming_和_math可以随意提出一个新问题,详细说明您的需求。好主意,我在这里问过: