

# Usar políticas baseadas em recursos para o DynamoDB
<a name="access-control-resource-based"></a>

O DynamoDB é compatível com políticas baseadas em recursos para tabelas, índices e fluxos. Com as políticas baseadas em recursos, é possível definir as permissões de acesso especificando quem tem acesso a cada recurso e as ações que podem ser realizadas em cada recurso.

É possível associar uma política baseada em recursos aos recursos do DynamoDB, como uma tabela ou um fluxo. Nessa política, você deve especificar permissões para as [entidades principais](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) do Identity and Access Management (IAM) que podem realizar ações específicas nesses recursos do DynamoDB. Por exemplo, a política associada a uma tabela conterá permissões para acesso à tabela e seus índices. Como resultado, as políticas baseadas em recursos podem ajudar a simplificar o controle de acesso às tabelas, aos índices e aos fluxos do DynamoDB, definindo permissões em nível de recurso. O tamanho máximo de uma política que pode ser associada a um recurso do DynamoDB é de 20 KB.

Um benefício significativo do uso de políticas baseadas em recursos é simplificar o controle de acesso entre contas para conceder acesso entre contas a entidades principais do IAM em diferentes Contas da AWS. Para obter mais informações, consulte [Política baseada em recursos para acesso entre contas](rbac-examples.md#rbac-examples-cross-account).

As políticas baseadas em recursos também comportam integrações com recursos do analisador de acesso externo [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) e do [Bloqueio de Acesso Público (BPA)](rbac-bpa-rbp.md). O IAM Access Analyzer relata o acesso entre contas a entidades externas especificadas em políticas baseadas em recursos. Ele também fornece visibilidade para ajudar a refinar as permissões e se adequar ao princípio de privilégio mínimo. O BPA ajuda a impedir o acesso público às tabelas, aos índices e aos fluxos do DynamoDB e é habilitado automaticamente nos fluxos de trabalho de criação e modificação de políticas baseadas em recursos.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5)


**Topics**
+ [Criar uma tabela com uma política baseada em recursos](rbac-create-table.md)
+ [Associar uma política a uma tabela existente do DynamoDB](rbac-attach-resource-based-policy.md)
+ [Associar uma política baseada em recurso a um fluxo do DynamoDB](rbac-attach-resource-policy-streams.md)
+ [Remover uma política baseada em recurso de uma tabela do DynamoDB](rbac-delete-resource-based-policy.md)
+ [Acesso entre contas com políticas baseadas em recurso no DynamoDB](rbac-cross-account-access.md)
+ [Bloquear o acesso público com políticas baseadas em recurso no DynamoDB](rbac-bpa-rbp.md)
+ [Operações de API do DynamoDB aceitas por políticas baseadas em recurso](rbac-iam-actions.md)
+ [Autorização com políticas baseadas em identidade do IAM e políticas baseadas em recursos do DynamoDB](rbac-auth-iam-id-based-policies-DDB.md)
+ [Exemplos de políticas baseadas em recurso do DynamoDB](rbac-examples.md)
+ [Considerações sobre políticas baseadas em recurso do DynamoDB](rbac-considerations.md)
+ [Práticas recomendadas para políticas baseadas em recurso do DynamoDB](rbac-best-practices.md)

# Criar uma tabela com uma política baseada em recursos
<a name="rbac-create-table"></a>

É possível adicionar uma política baseada em recursos ao criar uma tabela usando o console do DynamoDB, a API [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html), a AWS CLI, o [AWS SDK](rbac-attach-resource-based-policy.md#rbac-attach-policy-java-sdk) ou um modelo do CloudFormation.

## AWS CLI
<a name="rbac-create-table-CLI"></a>

O exemplo a seguir cria uma tabela chamada *MusicCollection* usando o comando `create-table` da AWS CLI. Esse comando também inclui o parâmetro `resource-policy` que adiciona uma política baseada em recursos à tabela. Essa política possibilita que o usuário *John* realize as ações de API [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) e [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) na tabela.

Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

```
aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --resource-policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::123456789012:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:RestoreTableToPointInTime\",
                        \"dynamodb:GetItem\",
                        \"dynamodb:DescribeTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Console de gerenciamento da AWS
<a name="rbac-create-table-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. No painel, selecione **Criar tabela**.

1. Em **Detalhes da tabela**, insira o nome da tabela, a chave de partição e os detalhes da chave de classificação.

1. Em **Configurações da tabela**, selecione **Personalizar configurações**.

1. (Opcional) Especifique as opções para **Classe de tabela**, **Calculadora de capacidade**, **Configurações de capacidade de leitura/gravação**, **Índices secundários**, **Criptografia em repouso** e **Proteção contra exclusão**.

1. Em **Política baseada em recursos**, adicione uma política para definir as permissões de acesso para a tabela e seus índices. Nessa política, você especifica quem tem acesso a esses recursos e as ações que podem realizar em cada recurso. Para adicionar uma política, siga um destes procedimentos:
   + Digite ou cole um documento de política JSON. Para ter detalhes sobre a linguagem de política do IAM, consulte [Criar políticas usando o editor de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) no *Guia do usuário do IAM*.
**dica**  
Para ver exemplos de políticas baseadas em recursos no Guia do desenvolvedor do Amazon DynamoDB, selecione **Exemplos de políticas**.
   + Selecione **Adicionar nova declaração** para adicionar uma nova declaração e insira as informações nos campos fornecidos. Repita esta etapa para todas as instruções que deseja adicionar.
**Importante**  
Solucione avisos de segurança, erros ou sugestões antes de salvar a política.

   O exemplo de política do IAM a seguir possibilita que o usuário *John* realize as ações da API [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) e [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) na tabela *MusicCollection*.

   Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/username"
         },
         "Action": [
           "dynamodb:RestoreTableToPointInTime",
           "dynamodb:GetItem",
           "dynamodb:PutItem"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

1. (Opcional) Escolha **Preview external access** (Pré-visualizar o acesso externo) na canto inferior direito para pré-visualizar a forma como sua nova política afetará o acesso público e entre contas ao seu recurso. Antes de salvar sua política, você pode verificar se ela introduz novas descobertas do IAM Access Analyzer ou resolve as descobertas existentes. Se você não vir um analisador ativo, escolha **Go to Access Analyzer** (Acessar o Access Analyzer) para [criar um analisador de contas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) no IAM Access Analyzer. Para ter mais informações, consulte [Acesso de visualização](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Escolha **Criar tabela**.

## Modelo do AWS CloudFormation
<a name="rbac-create-table-cfn"></a>

------
#### [ Using the AWS::DynamoDB::Table resource ]

O modelo do CloudFormation a seguir cria uma tabela com um fluxo usando o recurso [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html). Esse modelo também inclui políticas baseadas em recursos que são associadas à tabela e ao fluxo.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "MusicCollectionTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "AttributeDefinitions": [
                    {
                        "AttributeName": "Artist",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "Artist",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 5
                },
                "StreamSpecification": {
                  "StreamViewType": "OLD_IMAGE",
                  "ResourcePolicy": {
                    "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [
                        {
                            "Principal": {
                                "AWS": "arn:aws:iam::111122223333:user/John"
                            },
                            "Effect": "Allow",
                            "Action": [
                                "dynamodb:GetRecords",
                                "dynamodb:GetShardIterator",
                                "dynamodb:DescribeStream"
                            ],
                            "Resource": "*"
                        }
                      ]
                    }
                  }
                },
                "TableName": "MusicCollection",
                "ResourcePolicy": {
                    "PolicyDocument": {
                        "Version": "2012-10-17",		 	 	 
                        "Statement": [
                            {
                                "Principal": {
                                    "AWS": [
                                        "arn:aws:iam::111122223333:user/John"
                                    ]
                                },
                                "Effect": "Allow",
                                "Action": "dynamodb:GetItem",
                                "Resource": "*"
                            }
                        ]
                    }
                }
            }
           
        }
    }
}
```

------
#### [ Using the AWS::DynamoDB::GlobalTable resource ]

O modelo do CloudFormation a seguir cria uma tabela com o recurso [AWS::DynamoDB::GlobalTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) e associa uma política baseada em recursos à tabela e ao seu fluxo.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalMusicCollection": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "Properties": {
                "TableName": "MusicCollection",
                "AttributeDefinitions": [{
                    "AttributeName": "Artist",
                    "AttributeType": "S"
                }],
                "KeySchema": [{
                    "AttributeName": "Artist",
                    "KeyType": "HASH"
                }],
                "BillingMode": "PAY_PER_REQUEST",
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "ResourcePolicy": {
                            "PolicyDocument": {
                                "Version": "2012-10-17",		 	 	 
                                "Statement": [{
                                    "Principal": {
                                        "AWS": [
                                            "arn:aws:iam::111122223333:user/John"
                                        ]
                                    },
                                    "Effect": "Allow",
                                    "Action": "dynamodb:GetItem",
                                    "Resource": "*"
                                }]
                            }
                        },
                        "ReplicaStreamSpecification": {
                            "ResourcePolicy": {
                                "PolicyDocument": {
                                    "Version": "2012-10-17",		 	 	 
                                    "Statement": [{
                                        "Principal": {
                                            "AWS": "arn:aws:iam::111122223333:user/John"
                                        },
                                        "Effect": "Allow",
                                        "Action": [
                                            "dynamodb:GetRecords",
                                            "dynamodb:GetShardIterator",
                                            "dynamodb:DescribeStream"
                                        ],
                                        "Resource": "*"
                                    }]
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
}
```

------

# Associar uma política a uma tabela existente do DynamoDB
<a name="rbac-attach-resource-based-policy"></a>

É possível associar uma política baseada em recursos a uma tabela existente ou modificar uma política existente usando o console do DynamoDB, a API [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html), a AWS CLI, o SDK da AWS ou um [modelo do CloudFormation](rbac-create-table.md#rbac-create-table-cfn).

## Exemplo de AWS CLI para associar uma nova política
<a name="rbac-attach-policy-CLI"></a>

O exemplo de política do IAM a seguir usa o comando `put-resource-policy` da AWS CLI para associar uma política baseada em recursos a uma tabela existente. Este exemplo possibilita que o usuário *John* realize as ações da API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) e [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) em uma tabela existente chamada *MusicCollection*.

Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:PutItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Exemplo de AWS CLI para atualizar condicionalmente uma política existente
<a name="rbac-update-policy-CLI"></a>

Para atualizar condicionalmente uma política existente baseada em recursos de uma tabela, é possível usar o parâmetro `expected-revision-id` opcional. O exemplo a seguir só atualizará a política se ela existir no DynamoDB e se o ID de revisão atual corresponder ao parâmetro `expected-revision-id` fornecido.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --expected-revision-id 1709841168699 \ 
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Console de gerenciamento da AWS
<a name="rbac-attach-policy-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. No painel, selecione uma tabela existente.

1. Navegue até a guia **Permissões** e selecione **Criar política de tabela**.

1. No editor de políticas baseadas em recursos, adicione a política que você gostaria de associar e selecione **Criar política**.

   O exemplo de política do IAM a seguir possibilita que o usuário *John* realize as ações da API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) e [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) em uma tabela existente chamada *MusicCollection*.

   Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/username"
         },
         "Action": [
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:UpdateItem",
           "dynamodb:UpdateTable"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

## AWS SDK for Java 2.x
<a name="rbac-attach-policy-java-sdk"></a>

O exemplo de política do IAM a seguir usa o método `putResourcePolicy` para associar uma política baseada em recursos a uma tabela existente. Essa política possibilita que um usuário realize a ação da API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) em uma tabela existente.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * [Get started with the AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)
 */
public class PutResourcePolicy {

    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <tableArn> <allowedAWSPrincipal>

                Where:
                    tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection.
                    allowedAWSPrincipal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String tableArn = args[0];
        String allowedAWSPrincipal = args[1];
        System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " +
                tableArn);
        Region region = Region.US_WEST_2;
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(region)
                .build();

        String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal);
        System.out.println("Revision ID for the attached policy is " + result);
        ddb.close();
    }

    public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) {
        String policy = generatePolicy(tableArn, allowedAWSPrincipal);
        PutResourcePolicyRequest request = PutResourcePolicyRequest.builder()
                .policy(policy)
                .resourceArn(tableArn)
                .build();

        try {
            return ddb.putResourcePolicy(request).revisionId();
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }

        return "";
    }

    private static String generatePolicy(String tableArn, String allowedAWSPrincipal) {
        return "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +,		 	 	 
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" +
                "            \"Action\": [\n" +
                "                \"dynamodb:GetItem\"\n" +
                "            ],\n" +
                "            \"Resource\": \"" + tableArn + "\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
    }
}
```

# Associar uma política baseada em recurso a um fluxo do DynamoDB
<a name="rbac-attach-resource-policy-streams"></a>

É possível associar uma política baseada em recursos ao fluxo de uma tabela existente ou modificar uma política existente usando o console do DynamoDB, a API [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html), a AWS CLI, o SDK da AWS ou um [modelo do CloudFormation](rbac-create-table.md#rbac-create-table-cfn).

**nota**  
Não é possível associar uma política a um fluxo ao criá-lo usando as APIs [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) ou [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html). No entanto, é possível modificar ou excluir uma política após a exclusão de uma tabela. Também é possível modificar ou excluir a política de um fluxo desabilitado.



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

O exemplo de política do IAM a seguir usa o comando `put-resource-policy` da AWS CLI para associar uma política baseada em recursos ao fluxo de uma tabela denominada *MusicCollection*. Este exemplo possibilita que o usuário *John* realize as ações de API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) e [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) no fluxo.

Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## Console de gerenciamento da AWS
<a name="rbac-attach-policy-stream-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. No painel do console do DynamoDB, selecione **Tabelas** e, depois, uma tabela existente.

   Verifique se a tabela selecionada tem fluxos ativados. Para ter informações sobre como ativar fluxos para uma tabela, consulte [Habilitar um fluxo](Streams.md#Streams.Enabling).

1. Escolha a aba **Permissões**.

1. Em **Política baseada em recursos para fluxo ativo**, selecione **Criar política de fluxo**.

1. No editor **Política baseada em recursos**, adicione uma política para definir as permissões de acesso para o fluxo. Nessa política, você deve especificar quem tem acesso ao fluxo e as ações que podem realizar no fluxo. Para adicionar uma política, siga um destes procedimentos:
   + Digite ou cole um documento de política JSON. Para ter detalhes sobre a linguagem de política do IAM, consulte [Criar políticas usando o editor de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) no *Guia do usuário do IAM*.
**dica**  
Para ver exemplos de políticas baseadas em recursos no Guia do desenvolvedor do Amazon DynamoDB, selecione **Exemplos de políticas**.
   + Selecione **Adicionar nova declaração** para adicionar uma nova declaração e insira as informações nos campos fornecidos. Repita esta etapa para todas as instruções que deseja adicionar.
**Importante**  
Solucione avisos de segurança, erros ou sugestões antes de salvar a política.

1. (Opcional) Escolha **Preview external access** (Pré-visualizar o acesso externo) na canto inferior direito para pré-visualizar a forma como sua nova política afetará o acesso público e entre contas ao seu recurso. Antes de salvar sua política, você pode verificar se ela introduz novas descobertas do IAM Access Analyzer ou resolve as descobertas existentes. Se você não vir um analisador ativo, escolha **Go to Access Analyzer** (Acessar o Access Analyzer) para [criar um analisador de contas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) no IAM Access Analyzer. Para ter mais informações, consulte [Acesso de visualização](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Escolha **Criar política**.

O exemplo de política do IAM a seguir associa uma política baseada em recursos ao fluxo de uma tabela denominada *MusicCollection*. Este exemplo possibilita que o usuário *John* realize as ações de API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) e [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) no fluxo.

Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

# Remover uma política baseada em recurso de uma tabela do DynamoDB
<a name="rbac-delete-resource-based-policy"></a>

É possível excluir uma política baseada em recursos de uma tabela existente usando o console do DynamoDB, a API [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html), a AWS CLI, o SDK da AWS ou um modelo do CloudFormation.

## AWS CLI
<a name="rbac-delete-policy-CLI"></a>

O exemplo a seguir usa o comando `delete-resource-policy` da AWS CLI para remover uma política baseada em recursos de uma tabela denominada *MusicCollection*.

Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

```
aws dynamodb delete-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection
```

## Console de gerenciamento da AWS
<a name="rbac-delete-policy-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. No painel do console do DynamoDB, selecione **Tabelas** e, depois, uma tabela existente.

1. Escolha **Permissões**.

1. No menu suspenso **Gerenciar política**, selecione **Excluir política**.

1. Na caixa de diálogo **Excluir política baseada em recursos para tabela**, digite **confirm** para confirmar a ação de exclusão.

1. Escolha **Excluir**.

# Acesso entre contas com políticas baseadas em recurso no DynamoDB
<a name="rbac-cross-account-access"></a>

Usando uma política baseada em recursos, é possível fornecer acesso entre contas a recursos disponíveis em diferentes Contas da AWS. Todo o acesso entre contas permitido pelas políticas baseadas em recursos será relatado por meio das descobertas de acesso externo do IAM Access Analyzer, se você tiver um analisador na mesma Região da AWS que o recurso. O IAM Access Analyzer executa verificações de política para validar sua política em relação à [gramática das políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) e às [práticas recomendadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) do IAM. Essas verificações geram descobertas e fornecem recomendações práticas que ajudam a criar políticas que sejam funcionais e estejam em conformidade com as práticas recomendadas de segurança. É possível ver as descobertas ativas do IAM Access Analyzer na guia **Permissões** do [console do DynamoDB](https://console.aws.amazon.com/dynamodb/).

Para ter informações sobre a validação de políticas usando o IAM Access Analyzer, consulte [Validação de política do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) no *Guia do usuário do IAM*. Para visualizar uma lista de avisos, erros e sugestões retornados pelo IAM Access Analyzer, consulte [Referência de verificação de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Para conceder permissão [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) a um usuário A na conta A para acessar uma tabela B na conta B, realize as seguintes etapas:

1. Associe uma política baseada em recursos à tabela B que conceda permissão ao usuário A para realizar a ação `GetItem`.

1. Associe uma política baseada em recursos ao usuário A que conceda permissão para realizar a ação `GetItem` na tabela B.

Usando a opção **Visualizar acesso externo** disponível no [console do DynamoDB](https://console.aws.amazon.com/dynamodb/), é possível visualizar como sua nova política afetará o acesso público e entre contas ao seu recurso. Antes de salvar sua política, você pode verificar se ela introduz novas descobertas do IAM Access Analyzer ou resolve as descobertas existentes. Se você não vir um analisador ativo, escolha **Go to Access Analyzer** (Acessar o Access Analyzer) para [criar um analisador de contas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) no IAM Access Analyzer. Para ter mais informações, consulte [Acesso de visualização](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

O parâmetro do nome da tabela nas APIs do plano de dados e do ambiente de gerenciamento do DynamoDB aceita o nome do recurso da Amazon (ARN) completo da tabela para comportar operações entre contas. Se você fornecer apenas o parâmetro do nome da tabela em vez de um ARN completo, a operação da API será realizada na tabela da conta à qual o solicitante pertence. Para ter um exemplo de política de use acesso entre contas, consulte [Política baseada em recursos para acesso entre contas](rbac-examples.md#rbac-examples-cross-account).

A conta do proprietário do recurso será cobrada mesmo quando uma entidade principal de outra conta estiver lendo ou gravando na tabela do DynamoDB na conta do proprietário. Se a tabela tiver um throughput provisionado, a soma de todas as solicitações das contas do proprietário e dos solicitantes em outras contas determinará se a solicitação terá controle de utilização (se o ajuste de escala automático estiver desabilitado) ou se a escala será reduzida ou aumentada verticalmente se o ajuste de escala automático não estiver habilitado.

As solicitações serão registradas nos logs do CloudTrail das contas do proprietário e do solicitante para que as duas contas possam rastrear qual conta acessou quais dados.

## Compartilhamento de acesso com funções do AWS Lamba entre contas
<a name="rbac-analyze-cross-account-lambda-access"></a>

**Funções do Lambda na conta A**

1. Acesse o [console do IAM](https://console.aws.amazon.com/iam/) para criar um perfil do IAM que será usado como [perfil de execução do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) para sua função do AWS Lambda na conta A. Adicione a política gerenciada `AWSLambdaDynamoDBExecutionRole` do IAM que tem as permissões necessárias de invocação do DynamoDB Streams e do Lambda. Essa política também concede acesso a todos os possíveis recursos do DynamoDB Streams aos quais você possa ter acesso na conta A.

1. No [console do Lambda](https://console.aws.amazon.com/lambda/), crie uma função do AWS Lamba para processar registros em um fluxo do DynamoDB e, durante a configuração do perfil de execução, escolha aquele que você criou na etapa anterior.

1. Forneça o perfil de execução da função do Lambda ao proprietário da conta B do DynamoDB Streams a fim de configurar a política baseada em recursos para acesso de leitura entre contas.

1. Conclua a configuração da função do Lambda.

**Fluxo do DynamoDB na conta B**

1. Obtenha o perfil de execução entre contas do Lambda da conta A que invocará a função do Lambda.

1. No console do Amazon DynamoDB na conta B, escolha a tabela para o acionador entre contas do Lambda. Na guia **Exportações e streams**, localize o ARN do seu fluxo do DynamoDB. Observe que o status do DynamoDB Stream deve ser Ativado. Além disso, anote o ARN completo do fluxo, conforme necessário para a política de recursos.

1. Na guia **Permissões**, clique no botão **Criar política de transmissão** para iniciar o editor visual de políticas. Clique no botão **Adicionar nova instrução** ou edite a política, caso já exista.

1. Crie uma política que especifique o perfil de execução do Lambda na conta A como entidade principal e conceda as ações necessárias do DynamoDB Streams. É necessário incluir as ações `dynamodb:DescribeStream`, `dynamodb:GetRecords`, `dynamodb:GetShardIterator` e `dynamodb:ListShards`. Para ter mais informações sobre exemplos de política de recursos para o DynamoDB Streams, consulte [Exemplos de políticas baseadas em recurso do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).

**nota**  
O acesso entre contas das [APIs do ambiente de gerenciamento](HowItWorks.API.md#HowItWorks.API.ControlPlane) tem um limite menor de transações por segundo (TPS) de quinhentas solicitações.

# Bloquear o acesso público com políticas baseadas em recurso no DynamoDB
<a name="rbac-bpa-rbp"></a>

O [Bloqueio de Acesso Público (BPA)](#rbac-bpa-rbp) é 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)](https://aws.amazon.com/). Com o BPA, é possível impedir o acesso público aos recursos do DynamoDB. O BPA realiza verificações durante a criação ou a modificação de uma política baseada em recursos e ajuda a melhorar o procedimento de segurança com o DynamoDB.

O BPA usa [raciocínio automatizado](https://aws.amazon.com/what-is/automated-reasoning/) para analisar o acesso concedido por sua política baseada em recursos e alerta você se essas permissões forem encontradas no momento da administração de uma política baseada em recursos. A análise verifica o acesso a todas as declarações de políticas baseadas em recursos, ações e ao conjunto de chaves de condição usadas nas políticas.

**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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 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`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dynamodb:*",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

------

# Operações de API do DynamoDB aceitas por políticas baseadas em recurso
<a name="rbac-iam-actions"></a>

Este tópico lista as operações de API aceitas por políticas baseadas em recursos. No entanto, em relação ao acesso entre contas, só é possível usar determinado conjunto de APIs do DynamoDB por meio de políticas baseadas em recursos. Não é possível associar políticas baseadas em recursos a tipos de recursos, como backups e importações. As ações do IAM, as quais correspondem às APIs que operam nesses tipos de recurso, são excluídas das ações do IAM aceitas nas políticas baseadas em recursos. Como os administradores da tabela definem as configurações internas da tabela na mesma conta, as APIs, como [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html) e [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html), não comportam o acesso entre contas por meio de políticas baseadas em recursos.

As APIs do plano de dados e do ambiente de gerenciamento do DynamoDB que comportam o acesso entre contas também aceitam sobrecarga de nomes de tabelas, o que permite especificar o ARN em vez do nome da tabela. É possível especificar o ARN da tabela no parâmetro `TableName` dessas APIs. No entanto, nem todas essas APIs são compatíveis com o acesso entre contas.

**Topics**
+ [Operações de API do plano de dados](#rbac-data-plane-actions)
+ [Operações de API PartiQL](#rbac-partiql-actions)
+ [Operações de API do ambiente de gerenciamento](#rbac-control-plane-actions)
+ [Operações de API de tabelas globais da versão 2019.11.21 (atual)](#rbac-current-global-table-actions)
+ [Operações de API de tabelas globais versão 2017.11.29 (herdada)](#rbac-legacy-global-table-actions)
+ [Operação de API de tags](#rbac-tags-actions)
+ [Operações de API de backup e restauração](#rbac-backup-restore-actions)
+ [Operações de API de backup contínuo/restauração (PITR)](#rbac-continuous-backup-restore-actions)
+ [Operações de API do Contributor Insights](#rbac-contributor-insights-actions)
+ [Operações API de exportação](#rbac-export-actions)
+ [Operações de API de importação](#rbac-import-actions)
+ [Operações de API do Amazon Kinesis Data Streams](#rbac-kinesis-actions)
+ [Operações de API de políticas baseadas em recursos](#rbac-rbp-actions)
+ [Operações de API de vida útil](#rbac-ttl-actions)
+ [Outras operações de API](#rbac-other-actions)
+ [Operações de API do DynamoDB Streams](#rbac-ds-actions)

## Operações de API do plano de dados
<a name="rbac-data-plane-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API do [plano de dados](HowItWorks.API.md#HowItWorks.API.DataPlane) para políticas baseadas em recursos e acesso entre contas.


| Plano de dados: APIs de tabelas/índices | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)   | Sim | Sim | 
|   [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)   | Sim | Sim | 
|   [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)   | Sim | Sim | 
|   [Consulta](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)   | Sim | Sim | 
|   [Verificar](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)   | Sim | Sim | 
|   [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)   | Sim | Sim | 
|   [TransactGetItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)   | Sim | Sim | 
|   [TransactWriteItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)   | Sim | Sim | 
|   [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)   | Sim | Sim | 
|   [BatchWriteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)   | Sim | Sim | 

## Operações de API PartiQL
<a name="rbac-partiql-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API [PartiQL](HowItWorks.API.md#HowItWorks.API.DataPlane.partiql) para políticas baseadas em recursos e acesso entre contas.


| APIs PartiQL | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [BatchExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchExecuteStatement.html)   | Sim | Não | 
|   [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html)   | Sim | Não | 
|   [ExecuteTransaction](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteTransaction.html)   | Sim | Não | 

## Operações de API do ambiente de gerenciamento
<a name="rbac-control-plane-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API do [ambiente de gerenciamento](HowItWorks.API.md#HowItWorks.API.ControlPlane) para políticas baseadas em recursos e acesso entre contas.


| Ambiente de gerenciamento: APIs de tabelas | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)   | Não | Não | 
|   [DeleteTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html)   | Sim | Sim | 
|   [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)   | Sim | Sim | 
|   [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)   | Sim | Sim | 

## Operações de API de tabelas globais da versão 2019.11.21 (atual)
<a name="rbac-current-global-table-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de [tabelas globais da versão 2019.11.21 (atual)](GlobalTables.md) para políticas baseadas em recursos e acesso entre contas.


| APIs de tabelas globais versão 2019.11.21 (atual) | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTableReplicaAutoScaling.html)   | Sim | Não | 
|   [UpdateTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTableReplicaAutoScaling.html)   | Sim | Não | 

## Operações de API de tabelas globais versão 2017.11.29 (herdada)
<a name="rbac-legacy-global-table-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de [tabelas globais da versão 2017.11.29 (herdada)](globaltables.V1.md) para políticas baseadas em recursos e acesso entre contas.


| APIs de tabelas globais versão 2017.11.29 (herdada) | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)   | Não | Não | 
|   [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)   | Não | Não | 
|   [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)   | Não | Não | 
|   [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)   | Não | Não | 
|   [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)   | Não | Não | 
|   [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)   | Não | Não | 

## Operação de API de tags
<a name="rbac-tags-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API relacionadas a [tags](Tagging.Operations.md) para políticas baseadas em recursos e acesso entre contas.


| APIs de tags | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)   | Sim | Sim | 
|   [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)   | Sim | Sim | 
|   [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)   | Sim | Sim | 

## Operações de API de backup e restauração
<a name="rbac-backup-restore-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API relacionadas a [backup e restauração](Backup-and-Restore.md) para políticas baseadas em recursos e acesso entre contas.


| APIs de backup e restauração | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [CreateBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateBackup.html)   | Sim | Não | 
|   [DescribeBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeBackup.html)   | Não | Não | 
|   [DeleteBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteBackup.html)   | Não | Não | 
|  [RestoreTableFromBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableFromBackup.html)  | Não | Não | 

## Operações de API de backup contínuo/restauração (PITR)
<a name="rbac-continuous-backup-restore-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido por operações de API relacionadas a [backup contínuo/restauração (PITR)](Point-in-time-recovery.md) para políticas baseadas em recursos e acesso entre contas.


| APIs de backup contínuo/restauração (PITR) | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContinuousBackups.html)   | Sim | Não | 
|   [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html)   | Sim | Não | 
|   [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html)   | Sim | Não | 

## Operações de API do Contributor Insights
<a name="rbac-contributor-insights-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido por operações de API relacionadas a [backup contínuo/restauração (PITR)](Point-in-time-recovery.md) para políticas baseadas em recursos e acesso entre contas.


| APIs do Contributor Insights | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html)   | Sim | Não | 
|   [ListContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListContributorInsights.html)   | Não | Não | 
|   [UpdateContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContributorInsights.html)   | Sim | Não | 

## Operações API de exportação
<a name="rbac-export-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de exportação para políticas baseadas em recursos e acesso entre contas.


| APIs de exportação | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeExport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeExport.html)   | Não | Não | 
|   [ExportTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExportTableToPointInTime.html)   | Sim | Não | 
|   [ListExports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListExports.html)   | Não | Não | 

## Operações de API de importação
<a name="rbac-import-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de importação para políticas baseadas em recursos e acesso entre contas.


| APIs de importação | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeImport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeImport.html)   | Não | Não | 
|   [ImportTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ImportTable.html)   | Não | Não | 
|   [ListImports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListImports.html)   | Não | Não | 

## Operações de API do Amazon Kinesis Data Streams
<a name="rbac-kinesis-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API do Kinesis Data Streams para políticas baseadas em recursos e acesso entre contas.


| APIs do Kinesis | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeKinesisStreamingDestination.html)   | Sim | Não | 
|   [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html)   | Sim | Não | 
|   [EnableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_EnableKinesisStreamingDestination.html)   | Sim | Não | 
|   [UpdateKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateKinesisStreamingDestination.html)   | Sim | Não | 

## Operações de API de políticas baseadas em recursos
<a name="rbac-rbp-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de políticas baseadas em recursos para políticas baseadas em recursos e acesso entre contas.


| APIs de políticas baseadas em recursos | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [GetResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetResourcePolicy.html)   | Sim | Não | 
|   [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)   | Sim | Não | 
|   [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)   | Sim | Não | 

## Operações de API de vida útil
<a name="rbac-ttl-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido pelas operações de API de [vida útil](TTL.md) (TTL) para políticas baseadas em recursos e acesso entre contas.


| APIs de TTL | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTimeToLive.html)   | Sim | Não | 
|   [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)   | Sim | Não | 

## Outras operações de API
<a name="rbac-other-actions"></a>

A tabela a seguir lista o suporte em nível de API fornecido por outras operações de API variadas para políticas baseadas em recursos e acesso entre contas.


| Outras APIs | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeLimits](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeLimits.html)   | Não | Não | 
|   [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html)   | Não | Não | 
|   [ListBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListBackups.html)   | Não | Não | 
|   [ListTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html)   | Não | Não | 

## Operações de API do DynamoDB Streams
<a name="rbac-ds-actions"></a>

A tabela a seguir lista o suporte em nível de API de APIs do DynamoDB Streams para políticas baseadas em recursos e acesso entre contas.


| APIs do DynamoDB Streams | Suporte a políticas baseadas em recursos. | Suporte entre contas. | 
| --- | --- | --- | 
|   [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)   | Sim | Sim | 
|   [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)   | Sim | Sim | 
|   [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)   | Sim | Sim | 
|   [ListStreams](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_ListStreams.html)   | Não | Não | 

# Autorização com políticas baseadas em identidade do IAM e políticas baseadas em recursos do DynamoDB
<a name="rbac-auth-iam-id-based-policies-DDB"></a>

As **políticas baseadas em identidade** são associadas a uma identidade, como usuários, grupos de usuários e perfis do IAM. São os documentos da política do IAM que controlam quais ações uma identidade pode realizar, em quais recursos e em que condições. As políticas baseadas em identidade podem ser políticas [gerenciadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) e [em linha](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies).

As **políticas baseadas em recursos** são documentos de política do IAM que você associa a um recurso, como uma tabela do DynamoDB. Essas políticas concedem permissão à entidade principal especificada para executar ações específicas nesse recurso e definem em que condições isso se aplica. Por exemplo, a política baseada em recursos para uma tabela do DynamoDB também inclui o índice associado à tabela. As políticas baseadas em recursos são políticas em linha. Não há políticas baseadas em recursos gerenciadas.

Para ter mais informações sobre essas políticas, consulte [Políticas baseadas em identidade e em recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) no *Guia do usuário do IAM*.

Se a entidade principal do IAM for da mesma conta que o proprietário do recurso, uma política baseada em recursos é suficiente para especificar as permissões de acesso ao recurso. Você ainda pode optar por uma política baseada em identidade do IAM além de uma política baseada em recursos. Em relação ao acesso entre contas, é necessário possibilitar o acesso de forma explícita nas políticas de identidade e de recursos, conforme especificado em [Acesso entre contas com políticas baseadas em recurso no DynamoDB](rbac-cross-account-access.md). Ao usar os dois tipos de políticas, uma política é avaliada conforme descrito em [Determinar se uma solicitação é permitida ou negada em uma conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Importante**  
Se uma política baseada em identidade conceder acesso incondicional a uma tabela do DynamoDB (por exemplo, `dynamodb:GetItem` sem nenhuma condição), uma política baseada em recursos que permita acesso com condições em `dynamodb:Attributes` não restringirá esse acesso. A permissão incondicional da política baseada em identidade tem precedência, e as condições da política baseada em recursos não são aplicadas como restrições. Para restringir o acesso a atributos específicos, use uma instrução `Deny` explícita em vez de se fiar somente em instruções `Allow` condicionais na política baseada em recursos.

# Exemplos de políticas baseadas em recurso do DynamoDB
<a name="rbac-examples"></a>

Ao especificar um ARN no campo `Resource` de uma política baseada em recursos, a política entrará em vigor somente se o ARN especificado corresponder ao ARN do recurso do DynamoDB ao qual está associado.

**nota**  
Lembre-se de substituir o texto em *itálico* pelas informações específicas do recurso.

## Política baseada em recursos para uma tabela
<a name="rbac-examples-get"></a>

A política baseada em recursos a seguir, anexada a uma tabela do DynamoDB chamada *MusicCollection*, oferece aos usuários do IAM *John* e *Jane* permissão para realizar as ações [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) e [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html) no recurso *MusicCollection*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::111122223333:user/username",
            "arn:aws:iam::111122223333:user/Jane"
          ]
        },
        "Action": [
          "dynamodb:GetItem",
          "dynamodb:BatchGetItem"
        ],
        "Resource": [
          "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
        ]
    }
  ]
}
```

------

## Política baseada em recursos para um fluxo
<a name="rbac-examples-streams"></a>

A política baseada em recursos a seguir, anexada a um fluxo do DynamoDB chamado `2024-02-12T18:57:26.492`, oferece aos usuários do IAM *John* e *Jane* permissão para realizar as ações de API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) e [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) no recurso `2024-02-12T18:57:26.492`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/username",
          "arn:aws:iam::111122223333:user/Jane"
        ]
      },
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

## Política baseada em recursos para acesso a fim de realizar todas as ações em recursos especificados
<a name="rbac-examples-wildcard"></a>

Para permitir que um usuário realize todas as ações em uma tabela e em todos os índices associados a uma tabela, é possível usar um caractere curinga (\$1) para representar as ações e os recursos associados à tabela. O uso de um caractere curinga para os recursos permitirá que o usuário acesse a tabela do DynamoDB e todos os índices associados, incluindo aqueles que ainda não foram criados. Por exemplo, a política a seguir concederá permissão ao usuário *John* para realizar qualquer ação na tabela *MusicCollection* e em todos os seus índices, incluindo quaisquer índices que serão criados no futuro.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/role-name"
      },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name"
      ]
    }
  ]
}
```

------

## Política baseada em recursos para acesso entre contas
<a name="rbac-examples-cross-account"></a>

É possível especificar permissões para uma identidade do IAM entre contas para acessar os recursos do DynamoDB. Por exemplo, talvez seja necessário que um usuário de uma conta confiável tenha acesso para ler o conteúdo da sua tabela, com a condição de que ele acesse somente itens e atributos específicos nesses itens. A política a seguir concede acesso ao usuário *John* por meio de um ID de Conta da AWS confiável *111111111111* para acessar dados de uma tabela na conta *123456789012* usando a API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html). A política garante que o usuário possa acessar somente itens com uma chave primária *Jane* e que o usuário só possa recuperar os atributos `Artist` e `SongTitle`, mas nenhum outro atributo.

**Importante**  
Se você não especificar a condição `SPECIFIC_ATTRIBUTES`, verá todos os atributos dos itens exibidos.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountTablePolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/John"
            },
            "Action": "dynamodb:GetItem",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

Além da política anterior baseada em recursos, a política baseada em identidade associada ao usuário *John* também precisa permitir a ação da API `GetItem` para que o acesso entre contas funcione. Veja a seguir um exemplo de política baseada em identidade que deve ser associada ao usuário *John*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountIdentityBasedPolicy",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

O usuário John pode fazer uma solicitação `GetItem` especificando o ARN da tabela no parâmetro `table-name` para acessar a tabela *MusicCollection* na conta *123456789012*.

```
aws dynamodb get-item \
    --table-name arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --key '{"Artist": {"S": "Jane"}' \
    --projection-expression 'Artist, SongTitle' \
    --return-consumed-capacity TOTAL
```

## Política baseada em recursos com condições de endereço IP
<a name="rbac-examples-conditions"></a>

É possível aplicar uma condição para restringir endereços IP de origem, nuvens privadas virtuais (VPCs) e endpoint da VPC (VPCE). É possível especificar permissões com base nos endereços de origem da solicitação de origem. Por exemplo, convém permitir que um usuário acesse os recursos do DynamoDB somente se eles estiverem sendo acessados de uma fonte IP específica, como um endpoint de VPN corporativo. Especifique esses endereços IP na declaração `Condition`.

O exemplo a seguir permite que o usuário *John* acesse qualquer recurso do DynamoDB quando os IPs de origem são `54.240.143.0/24` e `2001:DB8:1234:5678::/64`.

------
#### [ JSON ]

****  

```
{
  "Id":"PolicyId2",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowIPmix",
      "Effect":"Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/username"
      },
      "Action":"dynamodb:*",
      "Resource":"*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "54.240.143.0/24",
            "2001:DB8:1234:5678::/64"
          ]
        }
      }
    }
  ]
}
```

------

Também é possível negar todo o acesso aos recursos do DynamoDB, exceto quando a origem é um endpoint da VPC específico, por exemplo, *vpce-1a2b3c4d*.

**Importante**  
Quando você usa o DAX com tabelas do DynamoDB que têm políticas de recursos baseadas em IP em ambientes somente IPv6, deve configurar regras de acesso adicionais. Se sua política de recursos restringir o acesso ao espaço de endereço IPv4 `0.0.0.0/0` nas tabelas, você deverá permitir o acesso ao perfil do IAM associado ao seu cluster do DAX. Adicione uma condição `ArnNotEquals` à sua política para garantir que o DAX mantenha o acesso às suas tabelas do DynamoDB. Para acessar mais informações, consulte [DAX e IPv6](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.create-cluster.DAX_and_IPV6.html).

------
#### [ JSON ]

****  

```
{
  "Id":"PolicyId",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToSpecificVPCEOnly",
      "Principal": "*",
      "Action": "dynamodb:*",
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals":{
          "aws:sourceVpce":"vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

------

## Política baseada em recursos usando um perfil do IAM
<a name="rbac-examples-iam"></a>

Você também pode especificar um perfil de serviço do IAM na política baseada em recursos. As entidades do IAM que assumem esse perfil são limitadas pelas ações permitidas especificadas para o perfil e para o conjunto específico de recursos dentro da política baseada em recursos.

O exemplo a seguir permite que uma entidade do IAM realize todas as ações do DynamoDB nos recursos *MusicCollection* e *MusicCollection* do DynamoDB.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*"
      ]
    }
  ]
}
```

------

# Considerações sobre políticas baseadas em recurso do DynamoDB
<a name="rbac-considerations"></a>

Ao definir políticas baseadas em recursos para os recursos do DynamoDB, são feitas as seguintes considerações:

**Considerações gerais**
+ O tamanho máximo aceito para um documento de política baseado em recursos é de 20 KB. O DynamoDB conta espaços em branco ao calcular o tamanho de uma política em relação a esse limite. 
+ As atualizações subsequentes de uma política para determinado recurso são bloqueadas por 15 segundos após uma atualização bem-sucedida da política para o mesmo recurso.
+ No momento, só é possível associar uma política baseada em recursos a fluxos existentes. Não é possível associar uma política a um fluxo ao criá-la.

**Considerações sobre tabelas globais**
+ As políticas baseadas em recursos não são compatíveis com réplicas da [Global Table versão 2017.11.29](globaltables_HowItWorks.md) (herdada).
+ Em uma política baseada em recursos, se a ação de um perfil vinculado ao serviço (SLR) do DynamoDB replicar dados para uma tabela global for negada, a adição ou a exclusão de uma réplica falhará com um erro.
+ O recurso [AWS::DynamoDB::GlobalTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) não comporta a criação de uma réplica e a adição de uma política baseada em recursos a essa réplica na mesma atualização da pilha em regiões diferentes da região onde você implanta a atualização da pilha.

**Considerações sobre o acesso entre contas**
+ O acesso entre contas usando políticas baseadas em recursos não comporta tabelas criptografadas com chaves gerenciadas da AWS porque não é possível conceder acesso entre contas à política do KMS gerenciada da AWS.

**CloudFormation Considerações sobre o**
+ As políticas baseadas em recursos não aceitam a [detecção de oscilação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). Se você atualizar uma política baseada em recursos fora do modelo de pilha do AWS CloudFormation, precisará atualizar a pilha do CloudFormation com as alterações.
+ As políticas baseadas em recursos não comportam mudanças fora da banda. Se você adicionar, atualizar ou excluir uma política fora do modelo do CloudFormation, a alteração não será substituída se não houver alterações na política dentro do modelo.

  Por exemplo, digamos que seu modelo contenha uma política baseada em recursos que você atualize posteriormente fora do modelo. Se você não fizer nenhuma alteração na política no modelo, a política atualizada no DynamoDB não será sincronizada com a política no modelo.

  Por outro lado, digamos que seu modelo não contenha uma política baseada em recursos, mas você adiciona uma política fora do modelo. Essa política não será removida do DynamoDB, desde que você não a adicione ao modelo. Ao adicionar uma política ao modelo e atualizar a pilha, a política existente no DynamoDB será atualizada para corresponder à definida no modelo.

# Práticas recomendadas para políticas baseadas em recurso do DynamoDB
<a name="rbac-best-practices"></a>

Este tópico descreve as práticas recomendadas para definir permissões de acesso para os recursos do DynamoDB e as ações permitidas nesses recursos.

## Simplificar o controle de acesso aos recursos do DynamoDB
<a name="rbac-simplify-access-control"></a>

Se as entidades principais do AWS Identity and Access Management que precisam acessar um recurso do DynamoDB fizerem parte da mesma Conta da AWS que a do proprietário do recurso, uma política baseada em identidade do IAM não será necessária para cada entidade principal. Uma política baseada em recursos associada aos recursos especificados será suficiente. Esse tipo de configuração simplifica o controle de acesso.

## Proteger os recursos do DynamoDB com políticas baseadas em recursos
<a name="rbac-protect"></a>

 Para todas as tabelas e os fluxos do DynamoDB, crie políticas baseadas em recursos para impor o controle de acesso para esses recursos. As políticas baseadas em recursos permitem centralizar as permissões em nível de recursos, simplificar o controle de acesso às tabelas, aos índices e aos fluxos do DynamoDB e reduzir as despesas indiretas administrativas. Se nenhuma política baseada em recursos for especificada para uma tabela ou um fluxo, o acesso à tabela ou ao fluxo será negado implicitamente, a menos que políticas baseadas em identidade associadas às entidades principais do IAM permitam o acesso.

## Aplique permissões de privilégio mínimo
<a name="rbac-least-privilege"></a>

Ao definir permissões com políticas baseadas em recursos para recursos do DynamoDB, conceda apenas as permissões necessárias para a realização de uma ação. Você faz isso definindo as ações que podem ser executadas em recursos específicos sob condições específicas, também conhecidas como permissões de privilégio mínimo. É possível começar com permissões amplas enquanto explora as permissões necessárias para sua workload ou para seu caso de uso. À medida que seu caso de uso se desenvolve, você pode trabalhar para reduzir as permissões que concede para caminhar em direção ao privilégio mínimo.

## Analisar a atividade de acesso entre contas para gerar políticas de privilégio mínimo
<a name="rbac-analyze-cross-account-access"></a>

O IAM Access Analyzer relata o acesso entre contas a entidades externas especificadas em políticas baseadas em recursos e fornece visibilidade para ajudar você a refinar as permissões e se adequar ao privilégio mínimo. Para obter mais informações sobre a geração de políticas, consulte [Geração de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Usar o IAM Access Analyzer para gerar políticas de privilégio mínimo
<a name="rbac-iam-access-analyzer"></a>

Para conceder apenas as permissões necessárias para executar uma tarefa, você pode gerar políticas com base em sua atividade de acesso registrada no AWS CloudTrail. O IAM Access Analyzer analisa os serviços e as ações que suas políticas usam.