

# Políticas baseadas em recurso para a funcionalidade Tabelas do S3
<a name="s3-tables-resource-based-policies"></a>

A funcionalidade Tabelas do S3 fornece políticas baseadas em recurso para gerenciar o acesso aos buckets de tabela e às tabelas: políticas de bucket de tabela e políticas de tabela. Você pode usar uma política de bucket de tabela para conceder permissões de acesso à API ao nível do bucket de tabela, do namespace ou da tabela. As permissões anexadas ao bucket de tabela podem ser aplicadas a todas as tabelas no bucket ou a tabelas específicas no bucket, dependendo da definição da política. Você pode usar uma política de tabela para conceder permissões ao nível da tabela. 

Quando a funcionalidade Tabelas do S3 recebe uma solicitação, primeiro ela verifica se o solicitante tem as permissões necessárias. Ela avalia todas as políticas de acesso, políticas de usuário e políticas baseadas em recurso relevantes para decidir se autoriza a solicitação (política de usuário do IAM, política de perfil do IAM, política de bucket de tabela e política de tabela). Por exemplo, se uma política de bucket de tabela concede a um usuário permissões para realizar todas as ações nas tabelas do bucket (inclusive `DeleteTable`), mas uma tabela individual tiver uma política de tabela que nega a ação `DeleteTable` para todos os usuários, um usuário não pode excluir a tabela.

O tópico a seguir inclui exemplos de políticas de tabela e de bucket de tabela. Para usar essas políticas, substitua os {{espaços reservados para entrada do usuário}} por suas próprias informações.

**nota**  
Toda política que concede permissões para modificar tabelas deve incluir permissões para `GetTableMetadataLocation` a fim de acessar o arquivo-raiz da tabela. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html).
Sempre que você realizar uma atividade de gravação ou exclusão em uma tabela, inclua permissões para `UpdateTableMetadataLocation` na política de acesso.
Recomendamos usar uma política de bucket de tabela para controlar o acesso às ações ao nível do bucket e uma política de tabela para controlar o acesso às ações ao nível da tabela. Nos casos em que você deseja definir o mesmo conjunto de permissões em várias tabelas, recomendamos o uso de uma política de bucket de tabela.

**Topics**
+ [Exemplo 1: a política de bucket de tabela permite acesso a `PutBucketMaintenanceConfiguration` para buckets em uma conta](#table-bucket-policy-1)
+ [Exemplo 2: política de bucket de tabela para permitir acesso de leitura (SELECT) às tabelas armazenadas no namespace `hr`](#table-bucket-policy-2)
+ [Exemplo 3: política de tabela para permitir que um usuário exclua uma tabela](#table-bucket-policy-3)

## Exemplo 1: a política de bucket de tabela permite acesso a `PutBucketMaintenanceConfiguration` para buckets em uma conta
<a name="table-bucket-policy-1"></a>

O exemplo de política de bucket de tabela a seguir permite que o `data steward` do IAM exclua objetos não referenciados de todos os buckets em uma conta ao permitir acesso a `PutBucketMaintenanceConfiguration`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/datasteward"
            },
            "Action": [
                "s3tables:PutTableBucketMaintenanceConfiguration"
            ],
            "Resource": "arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/*"
        }
    ]
}
```

------

## Exemplo 2: política de bucket de tabela para permitir acesso de leitura (SELECT) às tabelas armazenadas no namespace `hr`
<a name="table-bucket-policy-2"></a>

Veja a seguir um exemplo de política de bucket de tabela permite que Jane, uma usuária do ID de Conta da AWS `123456789012`, acesse tabelas armazenadas no namespace `hr` em um bucket de tabela.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Jane"
            },
            "Action": [
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}}/table/*",
            "Condition": {
                "StringLike": {
                    "s3tables:namespace": "hr"
                }
            }
        }
    ]
}
```

------

## Exemplo 3: política de tabela para permitir que um usuário exclua uma tabela
<a name="table-bucket-policy-3"></a>

O exemplo a seguir é uma política de tabela que permite que o perfil do IAM `data steward` exclua uma tabela.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "DeleteTable",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/{{datasteward}}"
            },
            "Action": [
                "s3tables:DeleteTable",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:PutTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/amzn-s3-demo-bucket/table/{{tableUUID}}"
        }
    ]
}
```

------