View a markdown version of this page

Ejemplo 3: Denegación del acceso a la transmisión a menos que esté presente una etiqueta específica - Amazon DynamoDB

Ejemplo 3: Denegación del acceso a la transmisión a menos que esté presente una etiqueta específica

Con la clave de condición aws:TagKeys, puede denegar el etiquetado de un flujo a menos que se incluya una clave de etiqueta obligatoria en la solicitud.

Uso de la CLI de AWS

  1. Agregue una política administrada por el cliente a un rol que tenga acceso a DynamoDB, como se muestra en el siguiente ejemplo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:TagResource" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "Null": { "aws:TagKeys": "false" }, "ForAllValues:StringNotEquals": { "aws:TagKeys": "CostCenter" } } } ] }
  2. Asuma el rol e intente etiquetar un flujo con una clave de etiqueta que no sea CostCenter.

    aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable/stream/2024-01-01T00:00:00.000 \ --tags Key=Department,Value=Engineering

Comportamiento con y sin ABAC de Streams

Sin ABAC de Streams

Si ABAC de Streams no está habilitado para la Cuenta de AWS, DynamoDB no envía las claves de etiqueta en la solicitud a IAM. La condición Null garantiza que la condición se evalúe como false si no hay claves de etiqueta en la solicitud. Como la política de denegación no coincide, el comando tag-resource se completa correctamente.

Con ABAC de Streams

Si ABAC de Streams está habilitado para la Cuenta de AWS, la clave de etiqueta Department se evalúa con respecto a la clave de etiqueta basada en condiciones CostCenter presente en la política de denegación. La clave de etiqueta Department no coincide con la clave de etiqueta presente en la política de denegación debido al operador StringNotEquals. Por lo tanto, la acción TagResource produce un error y devuelve una AccessDeniedException.