

# Controlar o acesso ao Amazon S3 do Athena
<a name="s3-permissions"></a>

Você pode conceder acesso aos locais do Amazon S3 usando políticas baseadas em identidade, políticas de recursos de bucket, políticas de ponto de acesso ou qualquer combinação das opções acima. Quando os atores interagem com o Athena, suas permissões passam pelo Athena para determinar o que o Athena poderá acessar. Isso significa que os usuários devem ter permissões para acessar os buckets do Amazon S3 com a finalidade de consultá-los com o Athena.

Sempre que você usar as políticas do IAM, siga as práticas recomendadas do IAM. Para obter mais informações, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

Observe que as solicitações para o Amazon S3 vêm de um endereço IPv4 privado do Athena, não do IP de origem especificado em `aws:SourceIp`. Por esse motivo, você não pode usar a condição `aws:SourceIp` para negar acesso às ações do Amazon S3 em uma determinada política do IAM. Também não é possível restringir ou permitir o acesso aos recursos do Amazon S3 com base nas chaves de condição `aws:SourceVpc` ou `aws:SourceVpce`.

**nota**  
Os grupos de trabalho do Athena que usam a autenticação do Centro de Identidade do IAM requerem que as concessões de acesso do S3 sejam configuradas para o uso de identidades de propagação de identidade confiável. Para obter mais informações, consulte [S3 Access Grants and directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) no *Guia do usuário do Amazon Simple Storage Service*.

**Topics**
+ [Políticas baseadas em identidade](#s3-permissions-identity-based-policies)
+ [Políticas de recursos do bucket](#s3-permissions-bucket-resource-policies)
+ [Políticas de ponto de acesso](#s3-permissions-aliases)
+ [Chaves de contexto CalledVia](#s3-permissions-calledvia)
+ [Recursos adicionais](#s3-permissions-additional-resources)

## Usar políticas baseadas em identidade para controlar o acesso aos buckets do Amazon S3
<a name="s3-permissions-identity-based-policies"></a>

As políticas baseadas em identidade são anexadas a um usuário, grupo ou função do IAM. Essas políticas permitem que você especifique o que cada identidade pode fazer (suas respectivas permissões). Você pode usar políticas baseadas em identidade para controlar o acesso a buckets do Amazon S3.

A seguinte política baseada em identidade permite o acesso `Read` e `Write` a objetos em um bucket específico do Amazon S3. Para usar esta política, substitua o {{texto do espaço reservado em itálico}} por seus próprios valores.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

## Usar as políticas de recursos de bucket para controlar o acesso aos buckets do Amazon S3
<a name="s3-permissions-bucket-resource-policies"></a>

Com as políticas de bucket do Amazon S3, você pode proteger o acesso a objetos em seus buckets, para que somente usuários com as permissões apropriadas possam acessá-los. Para obter orientação sobre como criar sua política do Amazon S3, consulte [Adicionar uma política de bucket usando o console do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) no *Guia do usuário do Amazon S3*.

A política de permissões de exemplo a seguir limita a capacidade de leitura dos usuários para que leiam objetos que tenham a chave e o valor da tag `environment: production`. A política de exemplo usa a chave de condição `s3:ExistingObjectTag` para especificar a chave e o valor da etiqueta.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
            },
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/environment": "production"
                }
            }
        }
    ]
}
```

------

Para obter exemplos de políticas de bucket, consulte [Exemplos de políticas de bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) no *Guia do usuário do Amazon S3*.

## Usar os pontos de acesso do Amazon S3 para ter um controle mais preciso sobre o acesso aos buckets
<a name="s3-permissions-aliases"></a>

Se você tem um conjunto de dados compartilhado em um bucket do Amazon S3, manter uma única política de bucket que gerencia o acesso para centenas de casos de uso pode ser um desafio.

Os pontos de acesso, as políticas e os aliases de bucket do Amazon S3 podem ajudar a resolver esse problema. Um bucket pode ter vários pontos de acesso, cada um com uma política que controla o acesso ao bucket de uma maneira diferente. 

Para cada ponto de acesso que você cria, o Amazon S3 gera um alias que representa esse ponto. Como o alias está no formato de nome de bucket do Amazon S3, você pode usar o alias no cláusula `LOCATION` das instruções `CREATE TABLE` no Athena. O acesso do Athena ao bucket é controlado pela política do ponto de acesso que o alias representa. 

Para obter mais informações, consulte [Especificar um local de tabela no Amazon S3](tables-location-format.md) e [Usar pontos de acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html) no *Manual do usuário do Amazon S3*.

## Usar chaves de contexto CalledVia para só permitir chamadas do Athena para outro serviço
<a name="s3-permissions-calledvia"></a>

Para maior segurança, é possível usar a chave de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia). A chave de condição `aws:CalledVia` contém uma lista dos serviços aos quais você permite chamar outro serviço. Por exemplo, você pode permitir apenas chamadas `InvokeFunction` para o AWS Lambda que sejam originadas no Athena, especificando o nome da entidade principal do serviço do Athena `athena.amazonaws.com` para a chave de contexto `aws:CalledVia`. Para obter mais informações, consulte [Usar chaves de contexto CalledVia para o Athena](security-iam-athena-calledvia.md).

## Recursos adicionais
<a name="s3-permissions-additional-resources"></a>

Para obter informações detalhadas e exemplos de como conceder acesso ao Amazon S3, consulte os seguintes recursos:
+ [Demonstrações de exemplo: gerenciar acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html) no *Guia do usuário do Amazon S3*.
+ [Como posso conceder acesso entre contas a objetos que estão em buckets do Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/) na Central de Conhecimento da AWS.
+ [Configurar o acesso entre contas do Athena aos buckets do Amazon S3](cross-account-permissions.md).