Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Amazon Redshift Spectrum 的 IAM 策略

默认情况下,Amazon Redshift Spectrum 将使用 Amazon Athena 数据目录。您的集群需要授权才能访问您在 Athena 中的外部数据目录和您在 Amazon S3 中的数据文件。您通过引用附加到集群的 AWS Identity and Access Management (IAM) 角色来提供授权。如果您使用 Apache Hive 元存储管理您的数据目录,则无需提供对 Athena 的访问权限。

您的集群至少需要对 Amazon S3 存储桶的 GET 和 LIST 访问权限。如果您的存储桶与您的集群没有位于同一个 AWS 账户中,则该存储桶还必须授权您的集群访问数据。有关更多信息,请参阅代表您授权 Amazon Redshift 访问其他 AWS 服务

注意

Amazon S3 存储桶不能使用将访问限制为仅通过特定 VPC 终端节点的存储桶策略。

以下策略将授予对任何 Amazon S3 存储桶的 GET 和 LIST 访问权限。该策略允许 Redshift Spectrum 访问 Amazon S3 存储桶以及执行 COPY 和 UNLOAD 操作。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "*" }] }

以下策略将授予对您的名为 myBucket 的 Amazon S3 存储桶的 GET 和 LIST 访问权限。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "s3://myBucket/*" }] }

要仅使用 Redshift Spectrum 授予对 Amazon S3 存储桶的访问权限,请包括允许访问用户代理 AWS Redshift/Spectrum 的条件。以下策略仅允许 Redshift Spectrum 访问 Amazon S3 存储桶。它排除其他访问,例如 COPY 和 UNLOAD 操作。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "s3://myBucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

同样,您可能需要创建 IAM 角色来允许 COPY 和 UNLOAD 操作,但排除 Redshift Spectrum 访问。为此,请包含拒绝用户代理“AWS Redshift/Spectrum”访问权限的条件。以下策略允许访问 Amazon S3 存储桶,但排除了 Redshift Spectrum。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "s3://myBucket/*", "Condition": {"StringNotEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

以下策略将授予对 Amazon Athena 资源的访问权限。如果您的外部数据库位于 Hive 元存储中,则您不需要 Amazon Athena 访问权限。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["athena:*"], "Resource": ["*"] }] }