亚马逊AWS官方博客

授予对 Amazon Redshift 管理控制台的细粒度访问权限

Original URL: https://amazonaws-china.com/blogs/big-data/granting-fine-grained-access-to-the-amazon-redshift-management-console/

Amazon Redshift 访问控制概述

自 2013 年 2 月发布的版本开始,Amazon Redshift 已快速成为备受全球数千家客户青睐的云数据仓库平台。

访问 Amazon Redshift 需要凭证,AWS 可根据此凭证对您的请求进行身份验证。这些凭证必须有权访问 Amazon Redshift 资源,例如 Amazon Redshift 集群或快照。有关这些凭证的更多详细信息,请参阅 Amazon Redshift 文档的 Amazon Redshift 中的 Identity and Access Management 部分。

所有 AWS 资源均归 AWS 账户所有,创建或访问资源的权限受 AWS Identity and Access Management (IAM) 策略控制。AWS 账户管理员可将权限策略附加到 IAM 身份(用户、组和角色)。特别是,AWS 账户管理员还可将 IAM 权限策略附加到特定用户。此类策略可为用户授予管理 Amazon Redshift 资源(例如快照或事件订阅)的权限。

授予权限时,您可以决定可获得权限的用户及其可获得哪些 Amazon Redshift 资源的权限。您还可以决定允许对这些资源执行的具体操作。附加到 IAM 身份的策略称为基于身份的 IAM 策略,附加到资源的策略称为基于资源的策略。Amazon Redshift 仅支持基于身份的 IAM 策略。

使用案例:为用户设置有限的访问权限

请考虑下面的使用案例。假设有一位 IAM 用户是客户运营组的成员,该用户需要监控和终止在 Amazon Redshift 集群中运行的查询。最佳方式是通过 Amazon Redshift 控制台实现此目的。此用户无权修改或删除任何其他 Amazon Redshift 资源。

为实施此使用案例,我们需要实施一项自定义 IAM 策略,用于确保此 IAM 用户拥有对 Amazon Redshift 控制台的只读权限。此操作意味着该用户可以获得可用集群的描述,并可导航到查询选项卡。此外,我们希望此 IAM 用户能够通过 Amazon Redshift 控制台取消正在运行的查询。为实现此目的,我们使用 redshift:CancelQuerySession IAM 操作。有关 IAM 策略允许的其他 Amazon Redshift 操作的描述以及每项操作的意义,请参阅 Amazon Redshift 文档中的 Amazon Redshift 定义的操作

要创建此类自定义 IAM 策略,请按照以下说明进行操作:

  1. 访问 https://console.aws.amazon.com/iam/ 登录 AWS 管理控制台,并打开 IAM 控制台。
  2. 在左侧的导航窗格中,选择策略
  3. 选择创建策略
  4. 选择 JSON 选项卡并输入以下策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "redshift:Describe*",
                "redshift:CancelQuerySession",
                "redshift:ViewQueriesInConsole",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeInternetGateways",
                "sns:Get*",
                "sns:List*",
                "cloudwatch:Describe*",
                "cloudwatch:List*",
                "cloudwatch:Get*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

  1. 查看策略页面,为您要创建的策略输入名称值,并可选择输入描述。查看策略摘要以查看您的策略授予的权限。然后选择创建策略以保存您的工作。
  2. 将此策略附加到现有或新的 IAM 用户。

借助此权限策略,IAM 用户可以选择 Amazon Redshift 集群,在查询选项卡中列出所有运行的查询,并根据需要终止查询。所有权限都是只读权限。因此,用户无法新建 Amazon Redshift 集群,或者修改或删除现有集群。但是,用户可以查看可用集群、集群快照、参数组和集群子网组,还可查看现有集群的其他属性。

验证使用案例

上述 IAM 策略就绪,该 IAM 用户登录 Amazon Redshift 管理控制台后,可以在账户中选择并查看关于 Amazon Redshift 集群或其他集群的详细信息。导航到查询选项卡后,该用户可以看到正在运行和已完成的查询。

要取消或终止长时间运行的查询,该用户可从列表中选择查询并选择终止查询。但是,该用户无法在 Amazon Redshift 控制台中执行任何修改或删除操作。例如,如果该用户尝试修改 Amazon Redshift 集群(以更改其终端节点),则会遇到以下错误。

小结

在本博文中,我们详细介绍了提供 Amazon Redshift 控制台细粒度访问权限的客户使用案例。借助一组精心定制的 IAM 策略,客户的运营人员可以获得对 Amazon Redshift 控制台的只读访问权限。这些员工可以取消或终止正在运行的查询,但无法修改、添加或删除任何其他 Amazon Redshift 资源。

我们要向我们的 AWS 同事 Ryan Mich、Sulay Shah 和 Hunter Grider 表达感谢,他们提供了许多有价值的意见和建议。

如果您有任何问题或建议,请在评论区留下反馈。如果您需要任何进一步帮助来优化您的 Amazon Redshift 实施,请联系您的 AWS 客户团队或可信的 AWS 合作伙伴。

 


关于作者

Raj Jayaraman 是 Amazon Web Services 的 AWS Support 云支持工程师。

 

 

 

 

Po Hong 博士是 AWS 专业服务 Global Data & Analytics Specialty Practice 方面的高级数据架构师。