

# Uso del control de acceso basado en atributos con DynamoDB Streams
<a name="abac-streams"></a>

DynamoDB Streams admite el control de acceso basado en atributos (ABAC), la misma estrategia de autorización que se describe en [Uso de políticas basadas en recursos para DynamoDB](attribute-based-access-control.md). Con ABAC de DynamoDB Streams, puede adjuntar etiquetas a los flujos y utilizar condiciones basadas en etiquetas en las políticas de IAM para controlar el acceso a ellos.

Los recursos de transmisión no heredan las etiquetas de su tabla principal y puede administrarlas en las transmisiones de forma independiente. Puede agregar un máximo de 50 etiquetas para cada flujo de DynamoDB. El tamaño máximo admitido para todas las etiquetas de un flujo es de 10 KB. Para obtener más información sobre el etiquetado de recursos de DynamoDB y las restricciones de etiquetado, consulte [Cómo agregar etiquetas a los recursos en DynamoDB](Tagging.md) y [Restricciones de etiquetado en DynamoDB](Tagging.md#TaggingRestrictions).

Puede utilizar la clave de condición [aws:ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) para permitir o denegar el acceso a un flujo en función de las etiquetas que estén asociadas a dicho flujo. Por ejemplo, la siguiente política permite la acción `GetRecords` en cualquier flujo que incluya la clave de etiqueta `environment` con el valor `production`.

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetRecords"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

**Topics**
+ [Claves de condición para implementar ABAC con DynamoDB Streams](#condition-keys-implement-abac-streams)
+ [Consideraciones para utilizar ABAC con DynamoDB Streams](#abac-considerations-streams)
+ [Habilitación de ABAC para DynamoDB Streams](abac-enable-streams.md)
+ [Uso de ABAC con DynamoDB Streams](abac-implementation-streams.md)
+ [Ejemplos para usar ABAC con DynamoDB Streams](abac-examples-streams.md)
+ [Solución de errores de ABAC comunes en DynamoDB Streams](abac-troubleshooting-streams.md)

## Claves de condición para implementar ABAC con DynamoDB Streams
<a name="condition-keys-implement-abac-streams"></a>

El ABAC de DynamoDB Streams utiliza las mismas claves de condición que las tablas de DynamoDB: `aws:ResourceTag/tag-key`, `aws:RequestTag/tag-key` y `aws:TagKeys`. Para obtener una descripción de cada clave de condición, consulte [Claves de condición para implementar ABAC con DynamoDB](attribute-based-access-control.md#condition-keys-implement-abac). El siguiente comportamiento es específico de DynamoDB Streams:
+ Las claves de condición se aplican a las API de DynamoDB Streams que operan en un flujo, incluidas [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html), `UntagResource` y las API de lectura como `GetRecords`.
+ Cuando ABAC de DynamoDB Streams no está activado en la cuenta, las condiciones de `aws:ResourceTag` se evalúan como si no hubiera etiquetas adjuntas al recurso de transmisión.

## Consideraciones para utilizar ABAC con DynamoDB Streams
<a name="abac-considerations-streams"></a>

Cuando utilice ABAC con DynamoDB Streams, se aplicarán las siguientes consideraciones:
+ ABAC para DynamoDB Streams es independiente de ABAC para tablas de DynamoDB. Al habilitar ABAC para las tablas, no se habilita automáticamente para las transmisiones de la cuenta. Debe habilitar cada uno de ellos de forma independiente.
+ Puede etiquetar o desetiquetar una transmisión después de eliminar su tabla principal mediante los comandos `tag-resource`, `untag-resource` y `list-tags-of-resource` de la CLI o el SDK en el ARN de la transmisión. La transmisión sigue existiendo durante 24 horas después de eliminar la tabla antes de la eliminación. Esta capacidad no está disponible a través de la consola o CloudFormation después de eliminar la tabla.
+ Si usa CloudFormation para administrar los recursos de DynamoDB, asegúrese de que el rol de servicio tenga los permisos `dynamodb:TagResource`, `dynamodb:UntagResource` y `dynamodb:ListTagsOfResource` para los recursos de transmisión.