Ejemplo 1: Permitir el acceso de lectura a la secuencia mediante aws:ResourceTag
Con la clave de condición aws:ResourceTag/tag-key, puede comparar el par clave-valor de etiqueta que está especificado en una política de IAM con el par clave-valor asociado a una secuencia de DynamoDB. Por ejemplo, puede permitir las operaciones GetRecords de transmisión si las condiciones de la etiqueta coinciden.
Uso de la CLI de AWS
-
Cree una tabla con un flujo habilitado y agregue una etiqueta.
aws dynamodb create-table \ --table-name myMusicTable \ --attribute-definitions AttributeName=id,AttributeType=S \ --key-schema AttributeName=id,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-1 -
Agregue una etiqueta al flujo. En primer lugar, obtenga el ARN del flujo de la descripción de la tabla.
STREAM_ARN=$(aws dynamodb describe-table \ --table-name myMusicTable \ --query "Table.LatestStreamArn" \ --output text \ --region us-east-1) aws dynamodb tag-resource \ --resource-arn $STREAM_ARN \ --tags Key=Team,Value=Analytics \ --region us-east-1 -
Cree una política insertada y agréguela a un rol, como se muestra en el siguiente ejemplo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Analytics" } } } ] }Esta política permite las operaciones
DescribeStreamyGetRecordscuando la etiqueta de la transmisión coincide con la clave “Equipo” y el valor “Análisis” especificados en la política. -
Asuma el rol con la políticas descrita en el paso 3.
-
Utilice el comando
describe-streamde la AWS CLI en el flujo.aws dynamodb describe-stream \ --stream-arn $STREAM_ARN \ --region us-east-1
Comportamiento con y sin ABAC de Streams
- Sin ABAC de Streams
-
Si ABAC de Streams no está habilitado para la Cuenta de AWS, las condiciones de etiquetado de la política de IAM y el flujo de DynamoDB no coinciden. La acción
DescribeStreamdevuelve unaAccessDeniedExceptionporque ninguna política permite la acción sin que las condiciones de la etiqueta coincidan. - Con ABAC de Streams
-
Si ABAC de Streams está habilitado para la Cuenta de AWS, la acción
DescribeStreamse completa correctamente. Esto se debe a que la política insertada permite la acción si coinciden las condiciones de etiqueta de la política de IAM y del flujo.