为您的 Amazon Redshift 数据仓库配置授权
要将数据从集成源复制到 Amazon Redshift 数据仓库中,您必须首先添加以下两个实体:
-
已授权的主体 – 标识可以在数据仓库中创建零 ETL 集成的用户或角色。
-
已授权的集成源 – 标识可以更新数据仓库的源数据库。
您可以从 Amazon Redshift 控制台的资源策略选项卡或者使用 Amazon Redshift PutResourcePolicy
API 操作,配置授权主体和授权集成源。
添加已授权的主体
要在您的 Redshift Serverless 工作组或预置集群中创建零 ETL 集成,需要授予对关联命名空间或预置集群的访问权限。
如果满足以下两个条件,则可以跳过此步骤:
-
拥有 Redshift Serverless 工作组或预置集群的 AWS 账户也拥有源数据库。
-
该主体与基于身份的 IAM 策略相关联,该策略使其有权在此 Redshift Serverless 命名空间或预置集群中创建零 ETL 集成。
将已授权的主体添加到 Amazon Redshift Serverless 命名空间
-
在 Amazon Redshift 控制台的左侧导航窗格中,选择 Redshift Serverless。
-
选择命名空间配置,选择您的命名空间,然后转到资源策略选项卡。
-
选择添加已授权的主体。
-
对于要添加的每个已授权的主体,输入您想要授予访问权限的 AWS 用户或角色的 ARN,或者 AWS 账户的 ID,以便他们能在命名空间中创建零 ETL 集成。账户 ID 存储为 ARN。
-
选择 Save changes(保存更改)。
向 Amazon Redshift 预置集群添加已授权的主体
-
在 Amazon Redshift 控制台的左侧导航窗格中,选择预置集群控制面板。
-
选择集群,然后选择集群并转到资源策略选项卡。
-
选择添加已授权的主体。
-
对于要添加的每个已授权的主体,输入您想要授予访问权限的 AWS 用户或角色的 ARN,或者 AWS 账户的 ID,以便他们能在集群中创建零 ETL 集成。账户 ID 存储为 ARN。
-
选择 Save changes(保存更改)。
添加已授权的集成源
要允许您的源更新 Amazon Redshift 数据仓库,您必须将其作为已授权的集成源添加到命名空间。
向 Amazon Redshift Serverless 命名空间添加已授权的集成源
-
在 Amazon Redshift 控制台中,转到无服务器控制面板。
-
选择命名空间的名称。
-
转到资源策略选项卡。
-
选择添加已授权的集成源。
-
指定用于零 ETL 集成的源的 ARN。
注意
移除已授权的集成源会阻止数据复制到命名空间。此操作会停用从该源到此命名空间的所有零 ETL 集成。
向 Amazon Redshift 预置集群添加已授权的集成源
-
在 Amazon Redshift 控制台中,转到预置集群控制面板。
-
选择预置集群的名称。
-
转到资源策略选项卡。
-
选择添加已授权的集成源。
-
指定作为零 ETL 集成的数据来源的源 ARN。
注意
移除已授权的集成源会阻止数据复制到预置集群。此操作会停用从该源到此 Amazon Redshift 预置集群的所有零 ETL 集成。
使用 Amazon Redshift API 配置授权
您可以使用 Amazon Redshift API 操作来配置用于零 ETL 集成的资源策略。
要控制可以在命名空间中创建入站集成的源,请创建资源策略并将其附加到命名空间。使用资源策略,您可以指定有权访问集成的源。资源策略附加到目标数据仓库的命名空间,以允许源创建入站集成,将数据从源中复制到 Amazon Redshift。
以下是资源策略示例。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Condition": { "StringEquals": { "aws:SourceArn": "
source_arn
" } } }, { "Effect": "Allow", "Principal": { "AWS": "source_principal
" }, "Action": "redshift:CreateInboundIntegration" } ] }
以下总结了可用于为集成配置资源策略的 Amazon Redshift API 操作:
-
使用 PutResourcePolicy API 操作来使资源策略生效。当您提供其他资源策略时,将替换该资源上之前的资源策略。使用前面的资源策略示例,该策略授予执行以下操作的权限:
-
CreateInboundIntegration
– 允许源主体创建入站集成,以便将数据从源复制到目标数据仓库。 -
AuthorizeInboundIntegration
– 允许 Amazon Redshift 持续验证目标数据仓库是否能够接收从源 ARN 复制的数据。
-
-
使用 GetResourcePolicy API 操作可查看现有资源策略。
-
使用 DeleteResourcePolicy API 操作可从资源中移除资源策略。
要更新资源策略,您也可以使用 put-resource-policy AWS CLI 命令。例如,要在 DynamoDB 源的 Amazon Redshift 命名空间 ARN 上设置资源策略,请运行类似于以下内容的 AWS CLI 命令。
aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"
其中 rs-rp.json
包含:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/test_ddb" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433" } ] }