Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 我想让用户只对一个rds实例拥有完全访问权限_Amazon Web Services_Amazon Rds_Amazon Iam - Fatal编程技术网

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可以随意提出一个新问题,详细说明您的需求。好主意,我在这里问过: