

# 将基于资源的策略附加到 DynamoDB 流
<a name="rbac-attach-resource-policy-streams"></a>

您可以使用 DynamoDB 控制台、[PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html) API、AWS CLI、AWS SDK 或 [CloudFormation 模板](rbac-create-table.md#rbac-create-table-cfn)将基于资源的策略附加到现有表的流中或修改现有策略。

**注意**  
在使用 [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) 或 [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) API 创建流时，您无法将策略附加到该流。但是，您可以在删除表之后修改或删除策略。您也可以修改或删除已禁用流的策略。



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

以下 IAM 策略示例使用 `put-resource-policy` AWS CLI 命令将基于资源的策略附加到名为 *MusicCollection* 的表的流中。此示例支持用户 *John* 对流执行 [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)、[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) 和 [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) API 操作。

切记用特定资源信息替换*斜体*文本。

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## AWS 管理控制台
<a name="rbac-attach-policy-stream-console"></a>

1. 登录 AWS 管理控制台，并打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)。

1. 在 DynamoDB 控制台控制面板上，选择**表**，然后选择现有表。

   确保您选择的表已开启流。有关为表开启流的信息，请参阅[启用流](Streams.md#Streams.Enabling)。

1. 选择**权限**选项卡。

1. 在**活跃流的基于资源的策略**中，选择**创建流策略**。

1. 在**基于资源的策略**编辑器中，添加策略来定义流的访问权限。在此策略中，您可以指定谁有权访问流，以及允许他们对流执行的操作。要添加策略，请执行以下操作之一：
   + 键入或粘贴一个 JSON 策略文档。有关 IAM 策略语言的详细信息，请参阅《IAM 用户指南》中的**[使用 JSON 编辑器创建策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)。
**提示**  
要查看《Amazon DynamoDB 开发人员指南》中基于资源的策略示例，请选择**策略示例**。
   + 选择**添加语句**来添加新的语句并在提供的字段中输入信息。对所有您想添加的语句重复执行此步骤。
**重要**  
确保在保存策略之前解决任何安全警告、错误或建议。

1. （可选）选择右下角的**预览外部访问**，以预览新策略如何影响对资源的公有和跨账户访问。在保存策略之前，您可以检查策略是引入了新的 IAM Access Analyzer 发现结果还是解析了现有的发现结果。如果您没有看到活动的分析器，请在 IAM Access Analyzer 中选择**转至 Access Analyzer** 以[创建账户分析器](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling)。有关更多信息，请参阅[预览访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html)。

1. 选择**创建策略**。

以下 IAM 策略示例将基于资源的策略附加到名为 *MusicCollection* 的表的流中。此示例支持用户 *John* 对流执行 [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)、[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) 和 [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) API 操作。

切记用特定资源信息替换*斜体*文本。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------