为您的 Amazon Redshift 数据仓库配置授权 - Amazon Redshift

为您的 Amazon Redshift 数据仓库配置授权

要将数据从集成源复制到 Amazon Redshift 数据仓库中,您必须首先添加以下两个实体:

  • 已授权的主体 – 标识可以在数据仓库中创建零 ETL 集成的用户或角色。

  • 已授权的集成源 – 标识可以更新数据仓库的源数据库。

您可以从 Amazon Redshift 控制台的资源策略选项卡或者使用 Amazon Redshift PutResourcePolicy API 操作,配置授权主体和授权集成源。

添加已授权的主体

要在您的 Redshift Serverless 工作组或预置集群中创建零 ETL 集成,需要授予对关联命名空间或预置集群的访问权限。

如果满足以下两个条件,则可以跳过此步骤:

  • 拥有 Redshift Serverless 工作组或预置集群的 AWS 账户也拥有源数据库。

  • 该主体与基于身份的 IAM 策略相关联,该策略使其有权在此 Redshift Serverless 命名空间或预置集群中创建零 ETL 集成。

将已授权的主体添加到 Amazon Redshift Serverless 命名空间

  1. 在 Amazon Redshift 控制台的左侧导航窗格中,选择 Redshift Serverless

  2. 选择命名空间配置,选择您的命名空间,然后转到资源策略选项卡。

  3. 选择添加已授权的主体

  4. 对于要添加的每个已授权的主体,输入您想要授予访问权限的 AWS 用户或角色的 ARN,或者 AWS 账户的 ID,以便他们能在命名空间中创建零 ETL 集成。账户 ID 存储为 ARN。

  5. 选择 Save changes(保存更改)

向 Amazon Redshift 预置集群添加已授权的主体

  1. 在 Amazon Redshift 控制台的左侧导航窗格中,选择预置集群控制面板

  2. 选择集群,然后选择集群并转到资源策略选项卡。

  3. 选择添加已授权的主体

  4. 对于要添加的每个已授权的主体,输入您想要授予访问权限的 AWS 用户或角色的 ARN,或者 AWS 账户的 ID,以便他们能在集群中创建零 ETL 集成。账户 ID 存储为 ARN。

  5. 选择 Save changes(保存更改)

添加已授权的集成源

要允许您的源更新 Amazon Redshift 数据仓库,您必须将其作为已授权的集成源添加到命名空间。

向 Amazon Redshift Serverless 命名空间添加已授权的集成源

  1. 在 Amazon Redshift 控制台中,转到无服务器控制面板

  2. 选择命名空间的名称。

  3. 转到资源策略选项卡。

  4. 选择添加已授权的集成源

  5. 指定用于零 ETL 集成的源的 ARN。

注意

移除已授权的集成源会阻止数据复制到命名空间。此操作会停用从该源到此命名空间的所有零 ETL 集成。

向 Amazon Redshift 预置集群添加已授权的集成源

  1. 在 Amazon Redshift 控制台中,转到预置集群控制面板

  2. 选择预置集群的名称。

  3. 转到资源策略选项卡。

  4. 选择添加已授权的集成源

  5. 指定作为零 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" } ] }