Bloquear o acesso público com políticas baseadas em recurso no DynamoDB
O Bloqueio de Acesso Público (BPA) é um recurso que identifica e impede a associação de políticas baseadas em recursos que concedem acesso público às tabelas, aos índices ou aos fluxos do DynamoDB em suas contas da Amazon Web Services (AWS)
O BPA usa raciocínio automatizado
Importante
O BPA ajuda a proteger os recursos impedindo que o acesso público seja concedido por meio de políticas baseadas em recursos que estão diretamente associadas aos recursos do DynamoDB, como tabelas, índices e fluxos. Além de usar o BPA, inspecione com cuidado as seguintes políticas para garantir que elas não concedam acesso público:
-
Políticas baseadas em identidade vinculadas a entidades principais da AWS associadas (por exemplo, perfis do IAM).
-
Políticas baseadas em recursos vinculadas a recursos da AWS associados (por exemplo, chaves do AWS Key Management Service).
Você deve garantir que a entidade principal não inclua uma entrada *
ou que uma das chaves de condição especificadas restrinja o acesso das entidades principais ao recurso. Se a política baseada em recursos conceder acesso público à tabela, aos índices ou ao fluxo entre Contas da AWS, o DynamoDB impedirá que você crie ou modifique a política até que a especificação dentro da política seja corrigida e considerada não pública.
É possível tornar uma política não pública especificando uma ou mais entidades principais no bloco Principal
. O exemplo de política baseada em recursos a seguir bloqueia o acesso público ao especificar duas entidades principais.
{ "Effect": "Allow", "Principal": { "AWS": [ "
123456789012
", "111122223333
" ] }, "Action": "dynamodb:*", "Resource": "*" }
Políticas que restringem o acesso especificando determinadas chaves de condição também não são consideradas públicas. Junto com a avaliação da entidade principal especificada na política baseada em recursos, as seguintes chaves de condição confiáveis são usadas para concluir a avaliação de uma política baseada em recursos para acesso não 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
Além disso, para que uma política baseada em recursos não seja pública, os valores de nome do recurso da Amazon (ARN) e das chaves de string não devem conter curingas nem variáveis. Se a política baseada em recursos usa a chave aws:PrincipalIsAWSService
, você deve garantir que tenha definido o valor da chave como verdadeiro.
A seguinte política limita o acesso ao usuário John
na conta especificada. A condição faz com que a Principal
seja restrita e não seja considerada pública.
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John" } } }
O exemplo a seguir de uma política baseada em recursos não pública restringe sourceVPC
usando o 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" ] } } } ] }