【问题标题】:I want to make users have full access only on ONE rds instance我想让用户仅对一个 rds 实例具有完全访问权限
【发布时间】:2016-10-22 05:54:21
【问题描述】:

我尝试使用此政策:

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

响应是:

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    例如,从 CLI 会失败:

    aws rds describe-db-instances
    

    但是,这将起作用:

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

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

    【讨论】:

    • 是否可以允许用户执行describe-db-instances 但将他的结果列表仅限于策略指定的实例,例如几个db-instance-identifiers?
    • describe-db-instances 命令是一个“全有或全无”的 API 调用。如果有人有权拨打电话,则返回所有数据。见:Amazon RDS Actions That Don't Support Resource-Level Permissions
    • 这对我来说很不幸。我希望我可以在 EC2 实例配置文件(在附加角色中)指定它应该看到哪些 RDS 实例。然后,我将能够使用 Java SDK 以编程方式发现它们,而没有外部信息传递给应用程序。现在,应用程序必须获取“匹配”列表db-instance-identifier 来过滤列表。否则,当列表变大时,它将不知道应该连接到哪个 RDS。我错过了什么吗?我的用例有什么解决方法吗?
    • @programming_and_math 随时提出新问题,详细说明您的需求。
    • 好主意,我已经在这里问过了:stackoverflow.com/questions/55937597/…
    【解决方案2】:

    这对我有用。这种方式让用户查看所有数据库,然后拒绝访问您不希望用户进行调整的数据库。用户将能够看到其他实例,但无法影响它们。他们将甚至能够看到日志、标签等。

       {
        "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"
            }
        ]
    }
    

    您可能遇到的唯一问题是,如果您有许多实例需要删除访问权限,除此之外,只要您对用户看到其他数据库的整体视图感到满意,您应该可以继续使用.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2021-02-15
      • 2014-08-11
      相关资源
      最近更新 更多