Bloqueo del acceso público con políticas basadas en recursos en DynamoDB
Bloquear el acceso público (BPA) es una característica que identifica y evita que se asocien políticas basadas en recursos que concedan acceso público a sus tablas, índices o secuencias de DynamoDB en sus cuentas de Amazon Web Services (AWS)
BPA utiliza un razonamiento automatizado
importante
BPA ayuda a proteger sus recursos al impedir que se conceda acceso público a través de las políticas basadas en recursos que se asocian directamente a sus recursos de DynamoDB, como tablas, índices y secuencias. Además de habilitar BPA, analice detenidamente las siguientes políticas para confirmar que no otorgan acceso público:
-
Políticas basadas en identidad asociadas a las entidades principales de AWS vinculadas (por ejemplo, los roles de IAM)
-
Políticas basadas en recursos asociadas a recursos de AWS vinculados (por ejemplo, claves AWS Key Management Service [KMS])
Debe asegurarse de que la entidad principal no incluya una entrada *
o que una de las claves de condición especificadas restrinja el acceso de las entidades principales al recurso. Si la política basada en recursos concede acceso público a la tabla, los índices o la secuencia en las Cuentas de AWS, DynamoDB le impedirá crear o modificar la política hasta que se corrija la especificación de la política y se considere no pública.
Para que una política no sea pública, especifique una o más entidades principales dentro del bloque Principal
. El siguiente ejemplo de política basada en recursos bloquea el acceso público al especificar dos entidades principales.
{ "Effect": "Allow", "Principal": { "AWS": [ "
123456789012
", "111122223333
" ] }, "Action": "dynamodb:*", "Resource": "*" }
Las políticas que restringen el acceso al especificar determinadas claves de condición tampoco se consideran públicas. Junto con la evaluación de la entidad principal especificada en la política basada en recursos, se utilizan las siguientes claves de condición fiables para completar la evaluación de una política basada en recursos para el acceso no público:
-
aws:PrincipalAccount
-
aws:PrincipalArn
-
aws:PrincipalOrgID
-
aws:PrincipalOrgPaths
-
aws:SourceAccount
-
aws:SourceArn
-
aws:SourceVpc
-
aws:SourceVpce
-
aws:UserId
-
aws:PrincipalServiceName
-
aws:PrincipalServiceNamesList
-
aws:PrincipalIsAWSService
-
aws:Ec2InstanceSourceVpc
-
aws:SourceOrgID
-
aws:SourceOrgPaths
Además, para que una política basada en recursos no sea pública, los valores del Nombre de recurso de Amazon (ARN) y las claves de cadena no deben contener comodines ni variables. Si su política basada en recursos usa la clave aws:PrincipalIsAWSService
, debe asegurarse de establecer el valor de la clave en true.
La siguiente política limita el acceso al usuario John
de la cuenta especificada. La condición limita a la Principal
y no se considera pública.
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John" } } }
El siguiente ejemplo de una política basada en recursos no pública restringe sourceVPC
al usar el operador StringEquals
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection", "Condition": { "StringEquals": { "aws:SourceVpc": [ "vpc-91237329" ] } } } ] }