Uso de ABAC con DynamoDB Streams
En los pasos siguientes se muestra cómo configurar permisos con ABAC para DynamoDB Streams. En este escenario de ejemplo, se agregan etiquetas a una transmisión de DynamoDB y se crea un rol de IAM con una política que incluye condiciones basadas en etiquetas. Después, se prueban los permisos permitidos en la transmisión de DynamoDB mediante la coincidencia de las condiciones de etiqueta.
Temas
Paso 1: Adición de etiquetas a un flujo de DynamoDB
Puede agregar etiquetas a DynamoDB Streams mediante la AWS CLI o el SDK. El comando de la tag-resource CLI siguiente agrega una etiqueta a un flujo.
aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable/stream/2024-01-01T00:00:00.000 \ --tags Key=environment,Value=staging
nota
Para encontrar el ARN del flujo, use el comando describe-table y busque el campo LatestStreamArn en la respuesta.
Paso 2: Creación de un rol de IAM con una política que incluya condiciones basadas en etiquetas
Cree una política de IAM mediante la clave de condición aws:ResourceTag/{{tag-key}} para comparar el par clave-valor de la etiqueta que se especifica en la política de IAM con el par clave-valor que está asociado al flujo. La política de ejemplo siguiente permite a los usuarios obtener registros y describir un flujo si este contiene el par clave-valor de etiqueta: "environment": "staging". Si un flujo no tiene el par clave-valor de etiqueta especificado, estas acciones se deniegan.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "staging" } } } ] }
Paso 3: Prueba de los permisos permitidos
-
Asocie la política de IAM a un usuario o rol de prueba en la Cuenta de AWS. Asegúrese de que la entidad principal de IAM que utiliza no tiene ya acceso a la secuencia de DynamoDB a través de una política diferente.
-
Asegúrese de que la secuencia de DynamoDB contiene la clave de etiqueta
"environment"con un valor de"staging". -
Realice las acciones
dynamodb:DescribeStreamydynamodb:GetRecordsen la secuencia etiquetada. Estas acciones se realizan de forma correcta si el par clave-valor de etiqueta"environment": "staging"está presente.Si lleva a cabo estas acciones en una secuencia que no tiene el par clave-valor de etiqueta
"environment": "staging", se produce el errorAccessDeniedExceptionen la solicitud.