第 1 步 为 Amazon Redshift 创建一个 IAM 角色
您的集群需要授权才能访问您在 Amazon Glue 或 Amazon Athena 中的外部数据目录以及您在 Simple Storage Service(Amazon S3)中的数据文件。要提供授权,您需要引用附加到集群的 Amazon Identity and Access Management(IAM)角色。有关将角色用于 Amazon Redshift 的更多信息,请参阅使用 IAM 角色授权 COPY 和 UNLOAD 操作。
在某些情况下,您可以将 Athena Data Catalog 迁移到 Amazon Glue Data Catalog。如果您的集群在支持 Amazon Glue 的 Amazon 区域内,并且您在 Athena Data Catalog 中拥有 Redshift Spectrum 外部表,则可执行此操作。要将 Amazon Glue 数据目录用于 Redshift Spectrum,您可能需要更改您的 IAM 策略。有关更多信息,请参阅 Athena 用户指南中的升级到 Amazon Glue Data Catalog。
为 Amazon Redshift 创建角色时,请选择以下方法之一:
如果您将 Redshift Spectrum 与 Athena Data Catalog 或 Amazon Glue Data Catalog 结合使用,请按照 要为 Amazon Redshift 创建一个 IAM 角色 中概述的步骤操作。
如果您将 Redshift Spectrum 与为 Amazon Lake Formation 启用的 Amazon Glue Data Catalog 结合使用,请按照以下程序中概括的步骤操作:
要为 Amazon Redshift 创建一个 IAM 角色
-
打开 IAM 控制台
。 -
在导航窗格中,选择 Roles (角色)。
-
选择 Create role(创建角色)。
-
选择 Amazon service(Amazon 服务)作为可信实体,然后选择 Redshift 作为使用案例。
-
在 Use case for other Amazon Web Services(其他 Amazon 服务的使用案例)下,选择 Redshift - Customizable(Redshift - 可自定义),然后选择 Next(下一步)。
-
此时显示 Add permissions policy(添加权限策略)页面。选择
AmazonS3ReadOnlyAccess
和AWSGlueConsoleFullAccess
(如果使用的是 Amazon Glue 数据目录)。或选择AmazonAthenaFullAccess
(如果使用的是 Athena Data Catalog)。选择 Next(下一步)。注意 AmazonS3ReadOnlyAccess
策略为您的集群提供对所有 Simple Storage Service(Amazon S3)桶的只读访问。要仅授予 Amazon 示例数据桶的访问权限,请创建新策略并添加以下权限。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::redshift-downloads/*" } ] }
-
对于角色名称,输入您角色的名称,例如
myspectrum_role
。 -
检查信息,然后选择 Create role。
-
在导航窗格中,选择角色。选择新角色的名称以查看摘要,然后将 Role ARN 复制到剪贴板。该值是您刚创建的角色的 Amazon Resource Name (ARN)。您将在创建用于引用 Simple Storage Service(Amazon S3)上的数据文件的外部表时使用此值。
要使用为 Amazon Lake Formation 启用的 Amazon Glue Data Catalog 为 Amazon Redshift 创建 IAM 角色
-
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Policies (策略)。
如果这是您首次选择 Policies,则会显示 Welcome to Managed Policies 页面。选择开始使用。
-
选择 Create policy (创建策略)。
-
选择以在 JSON 选项卡上创建策略。
-
粘贴在以下 JSON 策略文档中,该策略授予对 Data Catalog 的访问权限,但拒绝对 Lake Formation 的管理员权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftPolicyForLF", "Effect": "Allow", "Action": [ "glue:*", "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
-
完成后,选择审核对策略进行审核。策略验证程序将报告任何语法错误。
-
在查看策略页面上,为名称输入
myspectrum_policy
,以命名您正在创建的策略。输入描述(可选)。查看策略摘要以查看您的策略授予的权限。然后,选择创建策略以保存您的工作。创建策略之后,您可以创建一个角色并应用该策略。
-
在 IAM 控制台的导航窗格中,选择 Roles,然后选择 Create role。
-
对于选择受信任实体的类型,选择 Amazon 服务。
-
选择 Amazon Redshift 服务来代入此角色。
-
为您的服务选择 Redshift Customizable (Redshift 可自定义)。然后选择 Next: Permissions (下一步:权限)。
-
选择您创建的
myspectrum_policy
权限策略以附加到该角色。 -
选择 Next: Tagging (下一步: 标记)。
-
选择 Next: Review (下一步:审核)。
-
对于角色名称,输入名称
myspectrum_role
。 -
(可选)对于 Role description (角色描述),输入新角色的描述。
-
检查该角色,然后选择创建角色。
授予对表的 SELECT 权限以在 Lake Formation 数据库中进行查询
-
通过 https://console.aws.amazon.com/lakeformation/
中打开 Lake Formation 控制台。 -
在导航窗格中,选择权限,然后选择 Grant (授予)。
-
提供以下信息:
-
对于 IAM 角色,选择您创建的 IAM 角色
myspectrum_role
。运行 Amazon Redshift 查询编辑器时,它使用此 IAM 角色来获取数据权限。注意 要授予对启用了 Lake Formation 的 Data Catalog 中的表的 SELECT 权限以进行查询,请执行以下操作:
在 Lake Formation 中注册数据的路径。
在 Lake Formation 中授予用户对该路径的权限。
创建的表可在 Lake Formation 中注册的路径中找到。
-
对于数据库,请选择您的 Lake Formation 数据库。
-
对于表,选择数据库中要查询的表。
-
对于列,选择 All Columns (所有列)。
-
选择 Select (选择) 权限。
-
-
选择保存。
作为最佳实践,仅允许通过 Lake Formation 权限访问底层 Simple Storage Service(Amazon S3)对象。要防止未经批准的访问,请删除授予针对 Lake Formation 以外的 Simple Storage Service(Amazon S3)对象的任何权限。如果您在设置 Lake Formation 之前曾访问了 Simple Storage Service(Amazon S3)对象,请删除之前设置的任何 IAM policy 或桶权限。有关更多信息,请参阅将 Amazon Glue 数据权限升级到 Amazon Lake Formation 模型和 Lake Formation 权限。