As etapas a seguir demonstram como configurar permissões usando o ABAC. Neste cenário de exemplo, você adicionará tags a uma tabela do DynamoDB e criará um perfil do IAM com uma política que inclui condições baseadas em tags. Depois, você testará as permissões permitidas na tabela do DynamoDB combinando as condições da tag.
Tópicos
Etapa 1: adicionar tags a uma tabela do DynamoDB
É possível adicionar tags a tabelas novas ou existentes do DynamoDB usando o AWS Management Console, a API da AWS, a AWS Command Line Interface (AWS CLI), o SDK da AWS ou o AWS CloudFormation. Por exemplo, o comando da CLI tag-resource a seguir adiciona uma tag a uma tabela chamada MusicTable
.
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:
us-east-1
:123456789012
:table/MusicTable —tags Key=environment,Value=staging
Etapa 2: criar um perfil do IAM com uma política que inclui condições baseadas em tags
Crie uma política do IAM usando a chave de condição aws:ResourceTag/tag-key para comparar o par de chave-valor da tag especificado na política do IAM com o par de chave-valor anexado à tabela. O exemplo de política a seguir permite que os usuários coloquem ou atualizem itens em tabelas caso essas tabelas contenham o par de chave-valor de tag: "environment": "staging"
. Se uma tabela não tiver o par de chave-valor de tag especificado, essas ações serão negadas.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:PutItem",
"dynamodb:UpdateItem"
],
"Resource": "arn:aws:dynamodb:*:*:table/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "staging"
}
}
}
]
}
Etapa 3: testar permissões
-
Anexe a política do IAM a um usuário ou um perfil de teste à sua Conta da AWS. Assegure-se de que a entidade principal do IAM utilizada não tenha acesso à tabela do DynamoDB por meio de uma política diferente.
-
Assegure-se de que sua tabela do DynamoDB contenha a chave de tag
"environment"
com um valor de"staging"
. -
Realize as ações
dynamodb:PutItem
edynamodb:UpdateItem
na tabela marcada. Essas ações devem ser bem-sucedidas caso o par de chave-valor de tag"environment": "staging"
esteja presente.Se você realizar essas ações em uma tabela que não tenha o par de chave-valor de tag
"environment": "staging"
, sua solicitação falhará com umaAccessDeniedException
.
Você também pode analisar os outros exemplos de casos de uso descritos na seção a seguir para implementar o ABAC e realizar mais testes.