

# 为 DynamoDB Streams 启用 ABAC
<a name="abac-enable-streams"></a>

对于大多数 Amazon Web Services 账户，DynamoDB Streams ABAC 默认处于启用状态。对于现有客户，Streams ABAC 默认处于禁用状态，您可以在审计策略后将其启用。使用 DynamoDB 控制台，您可以确认是否已为您的账户启用了 Streams ABAC。使用具有 `dynamodb:GetAbacStatus` 权限的角色打开 DynamoDB 控制台。然后，打开 DynamoDB 控制台的**设置**页面。

仅当您在当前 Amazon 区域中有 DynamoDB 表时，**适用于 Streams 的基于属性的访问权限控制**卡片才会显示在**设置**页面上。如果您有表，状态为**开启**（或没有卡片）表示 Streams ABAC 已启用；状态为**关闭**（如下图所示）表示未启用。如果区域中没有表，则卡片的缺失并不能指示状态。

## 适用于 Streams 的基于属性的访问权限控制：未启用
<a name="abac-streams-enable-image"></a>

![DynamoDB 控制台设置页面，显示适用于 Streams 的基于属性的访问权限控制卡片，状态为关闭，表示该账户未启用 Streams ABAC。](https://docs.amazonaws.cn/amazondynamodb/latest/developerguide/images/abac-stream-enable-console.png)


要为您的账户启用 Streams ABAC，我们建议您首先按照[在启用 Streams ABAC 之前审计策略](#policy-audit-for-stream-abac)一节中所述来审计您的策略。然后，在您的 IAM 策略中加入 [Streams ABAC 所需的权限](#required-permissions-stream-abac)。最后，执行[在控制台中启用 Streams ABAC](#stream-abac-enable-console) 中介绍的步骤，以便在当前 Amazon 区域中为您的账户启用 Streams ABAC。启用 Streams ABAC 后，您可以在选择加入后的七个日历日内选择退出。

**Topics**
+ [在启用 Streams ABAC 之前审计策略](#policy-audit-for-stream-abac)
+ [启用 Streams ABAC 所需的 IAM 权限](#required-permissions-stream-abac)
+ [在控制台中启用 Streams ABAC](#stream-abac-enable-console)

## 在启用 Streams ABAC 之前审计策略
<a name="policy-audit-for-stream-abac"></a>

在启用 Streams ABAC 之前，审计您的策略。确认您的账户策略中所有基于标签的条件均已按预期针对流资源进行设置。在启用 Streams ABAC 之前审计策略，有助于避免在启用后在 DynamoDB Streams 工作流程中出现意外的授权变更。

审计时，请查找符合以下条件的策略：
+ 在流 ARN 上使用 `aws:ResourceTag` 条件（格式：`arn:aws:dynamodb:*:*:table/*/stream/*`）
+ 对流资源使用 `aws:RequestTag` 或 `aws:TagKeys` 条件以及 `dynamodb:TagResource` 或 `dynamodb:UntagResource` 操作
+ 将通配符资源 ARN (`arn:aws:dynamodb:*:*:*`) 与基于标签的条件结合使用，这些条件可能会无意中应用于流

要查看将基于属性的条件与标签结合使用的示例，以及实施 ABAC 之前和之后的行为，请参阅[将 ABAC 与 DynamoDB Streams 结合使用的示例](abac-examples-streams.md)。

## 启用 Streams ABAC 所需的 IAM 权限
<a name="required-permissions-stream-abac"></a>

您需要 `dynamodb:UpdateAbacStatus` 权限才能在当前区域中为您的账户启用 Streams ABAC。要确认是否为您的账户启用了 Streams ABAC，您还必须拥有 `dynamodb:GetAbacStatus` 权限。有了此权限，您就可以查看任何区域中账户的 Streams ABAC 状态。除了访问 DynamoDB 控制台所需的权限外，您还需要这些权限。

以下 IAM 策略授予在当前区域中为账户启用 Streams ABAC 并查看其状态的权限。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateAbacStatus",
        "dynamodb:GetAbacStatus"
      ],
      "Resource": "*"
    }
  ]
}
```

## 在控制台中启用 Streams ABAC
<a name="stream-abac-enable-console"></a>

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

1. 从顶部导航窗格中，选择要为其启用 Streams ABAC 的区域。

1. 在左侧导航窗格中，选择**设置**。

1. 在**设置**页面上，执行以下操作：

   1. 在**适用于 Streams 的基于属性的访问权限控制**卡片中，选择**启用**。

   1. 在**确认适用于 Streams 的基于属性的访问权限控制设置**对话框中，选择**启用**以确认您的选择。

      这将为当前区域启用 Streams ABAC，**适用于 Streams 的基于属性的访问权限控制**卡片将显示状态为**开启**。

      如果您想在控制台上启用 Streams ABAC 后选择退出，则可以在选择加入后的七个日历日内选择退出。要选择退出，请在**设置**页面上的**适用于 Streams 的基于属性的访问权限控制**卡片中选择**禁用**。
**注意**  
更新 Streams ABAC 的状态是一项异步操作。如果 DynamoDB 未立即评估策略中的标签，请等待几分钟后重试。标签评估变更是最终一致的。