

# Exemplos de políticas de bucket do Amazon S3
<a name="example-bucket-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. Você pode até mesmo impedir que usuários autenticados sem as permissões apropriadas acessem seus recursos do Amazon S3.

Esta seção apresenta exemplos de casos de uso típicos de políticas de bucket. Essas políticas de exemplo usam `amzn-s3-demo-bucket` como valor do recurso. Para testar essas políticas, substitua `user input placeholders` por suas informações (como o nome do seu bucket). 

Para conceder ou negar permissões para um conjunto de objetos, você pode usar caracteres curinga (`*`) em nomes de recursos da Amazon (ARNs) e outros valores. Por exemplo, é possível controlar o acesso a grupos de objetos que começam com um [prefixo](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) ou terminam com uma extensão específica, como `.html`. 

Para obter mais informações sobre a linguagem da política do AWS Identity and Access Management (IAM), consulte [Políticas e permissões no Amazon S3](access-policy-language-overview.md).

Para ter mais informações sobre as permissões referentes a operações de API do S3 de acordo com os tipos de recurso do S3, consulte [Permissões obrigatórias para operações de API do Amazon S3](using-with-s3-policy-actions.md).

**nota**  
Ao testar as permissões usando o console do Amazon S3, você deve conceder as permissões adicionais que o console exige: `s3:ListAllMyBuckets`, `s3:GetBucketLocation` e `s3:ListBucket`. Para acessar um exemplo de demonstração que concede permissões aos usuários e testa essas permissões usando o console, consulte [Controlar o acesso a um bucket com políticas de usuário](walkthrough1.md).

Recursos adicionais para criar políticas de bucket incluem:
+ Consulte uma lista de ações de políticas do IAM, recursos e chaves de condição que você pode usar ao criar uma política de bucket em [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) na *Referência de autorização do serviço*.
+ Para ter mais informações sobre as permissões referentes a operações de API do S3 de acordo com os tipos de recurso do S3, consulte [Permissões obrigatórias para operações de API do Amazon S3](using-with-s3-policy-actions.md).
+ Para obter orientação sobre como criar uma política do S3, consulte [Adicionar uma política de bucket usando o console do Amazon S3](add-bucket-policy.md).
+ Para solucionar erros com uma política, consulte [Solucionar erros de acesso negado (403 Forbidden) no Amazon S3](troubleshoot-403-errors.md).

Se você estiver tendo problemas para adicionar ou atualizar uma política, consulte [Por que recebo o erro “Invalid principal in policy” quando tento atualizar minha política de bucket do Amazon S3?](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error) no Centro de Conhecimento do AWS re:Post.

**Topics**
+ [

## Conceder permissão somente leitura a um usuário anônimo público
](#example-bucket-policies-anonymous-user)
+ [

## Exigir criptografia
](#example-bucket-policies-encryption)
+ [

## Gerenciar buckets usando ACLs predefinidas
](#example-bucket-policies-public-access)
+ [

## Gerenciar o acesso a objetos com marcação de objetos
](#example-bucket-policies-object-tags)
+ [

## Gerenciar o acesso a objetos usando chaves de condição globais
](#example-bucket-policies-global-condition-keys)
+ [

## Gerenciar o acesso com base em solicitações HTTP ou HTTPS
](#example-bucket-policies-HTTP-HTTPS)
+ [

## Gerenciar o acesso de usuários a pastas específicas
](#example-bucket-policies-folders)
+ [

## Gerenciar o acesso para logs de acesso
](#example-bucket-policies-access-logs)
+ [

## Gerenciar o acesso para uma OAI do Amazon CloudFront
](#example-bucket-policies-cloudfront)
+ [

## Gerenciar o acesso para a Lente de Armazenamento do Amazon S3
](#example-bucket-policies-lens)
+ [

## Gerenciar permissões para o Inventário do S3, análises do S3 e relatórios do Inventário do S3
](#example-bucket-policies-s3-inventory)
+ [

## Exigir MFA
](#example-bucket-policies-MFA)
+ [

## Impedir que os usuários excluam objetos
](#using-with-s3-actions-related-to-bucket-subresources)

## Conceder permissão somente leitura a um usuário anônimo público
<a name="example-bucket-policies-anonymous-user"></a>

É possível usar as configurações de política para conceder acesso a usuários anônimos públicos, o que será útil se você estiver configurando o bucket como um site estático. A concessão de acesso a usuários anônimos públicos exige que você desative as configurações do Bloqueio de Acesso Público do bucket. Consulte mais informações sobre como fazer isso e a política exigida em [Configuração de permissões para acesso ao site](WebsiteAccessPermissionsReqd.md). Para saber como configurar políticas mais restritivas para o mesmo propósito, consulte [How can I grant public read access to some objects in my Amazon S3 bucket?](https://repost.aws/knowledge-center/read-access-objects-s3-bucket) no Centro de Conhecimento da AWS.

Por padrão, o Amazon S3 bloqueia o acesso público à sua conta e aos seus buckets. Se quiser usar um bucket para hospedar um site estático, use estas etapas para editar as configurações de bloqueio de acesso público. 

**Atenção**  
Antes de concluir estas etapas, revise [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md) para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso público. Ao desativar as configurações de bloqueio de acesso público para tornar seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o acesso público aos buckets.

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Escolha o nome do bucket configurado como um site estático.

1. Escolha **Permissions (Permissões)**.

1. Em **Block public access (bucket settings) (Bloqueio de acesso público (configurações de bucket)**, escolha **Edit (Editar)**.

1. Desmarque **Block *all* public access (Bloquear todo acesso público)** e escolha **Save changes (Salvar alterações)**.  
![\[O console do Amazon S3, que mostra as configurações do bucket do Bloqueio de Acesso Público.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   O Amazon S3 desativa as configurações do Bloqueio de Acesso Público para o bucket. Para criar um site público estático, talvez também seja necessário [editar as configurações do Bloqueio de Acesso Público](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html) para sua conta antes de adicionar uma política de bucket. Se as configurações do Bloqueio de Acesso Público da conta estiverem ativadas no momento, você verá uma observação em **Bloquear acesso público (configurações de bucket)**.

## Exigir criptografia
<a name="example-bucket-policies-encryption"></a>

É possível exigir a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), conforme mostrado nos exemplos a seguir.

### Exigir SSE-KMS para todos os objetos gravados em um bucket
<a name="example-bucket-policies-encryption-1"></a>

O exemplo de política a seguir exige que cada objeto gravado no bucket seja criptografado com criptografia do lado do servidor usando chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Se o objeto não estiver criptografado com a SSE-KMS, a solicitação será negada.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMS",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "Null": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
    }
  }
}]
}
```

------

### Exigir SSE-KMS com uma AWS KMS key específica para todos os objetos gravados em um bucket
<a name="example-bucket-policies-encryption-2"></a>

O exemplo de política a seguir impede que objetos sejam gravados no bucket quando não estão criptografados com SSE-KMS usando um ID de chave do KMS específico. Mesmo que os objetos sejam criptografados com a SSE-KMS usando um cabeçalho por solicitação ou criptografia padrão de bucket, os objetos não serão gravados no bucket se não tiverem sido criptografados com a chave do KMS especificada. Substitua o ARN da chave do KMS usado neste exemplo pelo ARN da sua chave do KMS.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "ArnNotEqualsIfExists": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
    }
  }
}]
}
```

------

## Gerenciar buckets usando ACLs predefinidas
<a name="example-bucket-policies-public-access"></a>

### Conceder permissões a várias contas para fazer upload de objetos ou definir ACLs de objetos para acesso público
<a name="example-bucket-policies-acl-1"></a>

O exemplo de política a seguir concede as permissões `s3:PutObject` e `s3:PutObjectAcl` a várias Contas da AWS. Além disso, o exemplo de política exige que as solicitações para essas operações incluam a [lista de controle de acesso (ACL) predefinida](acl-overview.md#canned-acl) `public-read`. Para obter mais informações, consulte [Ações de políticas para o Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) e [Chaves de condição de política para o Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys).

**Atenção**  
A ACL predefinida `public-read` permite que qualquer pessoa no mundo veja os objetos em seu bucket. Tenha cautela ao conceder acesso anônimo ao seu bucket do Amazon S3 ou ao desabilitar as configurações de bloqueio de acesso público. Quando você concede acesso anônimo, qualquer pessoa no mundo pode acessar seu bucket. Recomendamos nunca conceder acesso anônimo ao seu bucket do Amazon S3, a menos que seja especificamente necessário, como com a [hospedagem de site estático](WebsiteHosting.md). Se você quiser habilitar configurações de bloqueio de acesso público para hospedagem de sites estáticos, consulte [Tutorial: Configurar um site estático no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPublicReadCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "public-read"
                    ]
                }
            }
        }
    ]
}
```

------

### Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do bucket tenha controle total
<a name="example-bucket-policies-acl-2"></a>

O exemplo a seguir mostra como permitir que outra Conta da AWS faça upload de objetos no bucket e, ao mesmo tempo, garantir controle total sobre os objetos carregados. Essa política concede a uma Conta da AWS específica (*`111122223333`*) a capacidade de carregar objetos se essa conta incluir a ACL pré-configurada `bucket-owner-full-control` no carregamento. A condição `StringEquals` na política especifica a chave de condição `s3:x-amz-acl` para expressar o requisito de ACL predefinida. Para obter mais informações, consulte [Chaves de condição de política para o Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
     {
       "Sid":"PolicyForAllowUploadWithACL",
       "Effect":"Allow",
       "Principal":{"AWS":"111122223333"},
       "Action":"s3:PutObject",
       "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
       "Condition": {
         "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
       }
     }
   ]
}
```

------

## Gerenciar o acesso a objetos com marcação de objetos
<a name="example-bucket-policies-object-tags"></a>

### Permitir que um usuário leia somente os objetos que têm a chave e o valor de uma etiqueta específica
<a name="example-bucket-policies-tagging-1"></a>

A política de permissões a seguir limita a capacidade de leitura dos usuários para que leiam somente objetos que tenham a chave e o valor da tag `environment: production`. Essa política 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"
            }
         }
      }
   ]
}
```

------

### Restringir quais chaves de etiqueta de objeto os usuários podem adicionar
<a name="example-bucket-policies-tagging-2"></a>

O exemplo de política a seguir concede ao usuário permissão para executar a ação `s3:PutObjectTagging`, que permite que o usuário adicione etiquetas a um objeto existente. A condição usa a chave de condição `s3:RequestObjectTagKeys` para especificar as chaves de etiqueta permitidas, como `Owner` ou `CreationDate`. Para obter mais informações, consulte [Criar uma condição que testa vários valores de chave](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) no *Guia do usuário do IAM*.

A política garante que cada chave de etiqueta especificada na solicitação seja uma chave de etiqueta autorizada. O qualificador `ForAnyValue` na condição garante que pelo menos uma das chaves especificadas esteja presente na solicitação.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

------

### Exigir a chave e o valor de uma etiqueta específica ao permitir que os usuários adicionem etiquetas de objeto
<a name="example-bucket-policies-tagging-3"></a>

O exemplo de política a seguir concede ao usuário permissão para executar a ação `s3:PutObjectTagging`, que permite que o usuário adicione etiquetas a um objeto existente. A condição requer que o usuário inclua uma chave de etiqueta específica (como `Project`) com o valor definido como `X`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X"
        }
      }
    }
  ]
}
```

------

### Permitir que um usuário adicione somente objetos com a chave e o valor de uma etiqueta específica
<a name="example-bucket-policies-tagging-4"></a>

O exemplo de política a seguir concede ao usuário permissão para realizar a ação `s3:PutObject` para que possa adicionar objetos a um bucket. No entanto, a instrução `Condition` restringe as chaves e os valores de etiqueta permitidos nos objetos enviados. Neste exemplo, o usuário só pode adicionar objetos que tenham a chave de etiqueta específica (`Department`) com o valor definido como `Finance` no bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Principal":{
            "AWS":[
                 "arn:aws:iam::111122223333:user/JohnDoe"
         ]
        },
        "Effect": "Allow",
        "Action": [
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:RequestObjectTag/Department": "Finance"
            }
        }
    }]
}
```

------

## Gerenciar o acesso a objetos usando chaves de condição globais
<a name="example-bucket-policies-global-condition-keys"></a>

As [chaves de condição globais](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) são chaves de condição com um prefixo `aws`. Os Serviços da AWS podem oferecer suporte a chaves de condição globais ou chaves específicas do serviço que incluem seu prefixo de serviço. É possível usar o elemento `Condition` de uma política JSON para comparar chaves em uma solicitação com os valores de chave especificados em sua política.

### Restringir o acesso somente às entregas de logs de acesso ao servidor do Amazon S3
<a name="example-bucket-policies-global-condition-keys-1"></a>

No exemplo de política de bucket a seguir, a chave de condição global [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) é usada para comparar o [nome do recurso da Amazon (ARN)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns), fazendo uma solicitação de serviço a serviço com o ARN especificado na política. A chave de condição global `aws:SourceArn` é usada para impedir que o serviço Amazon S3 seja usado como um [representante confuso](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) durante transações entre os serviços. Somente o serviço Amazon S3 tem permissão para adicionar objetos ao bucket do Amazon S3.

Este exemplo de política de bucket concede permissões de `s3:PutObject` somente à entidade principal do serviço de registro em log (`logging.s3.amazonaws.com`). 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObjectS3ServerAccessLogsPolicy",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket1"
                }
            }
        },
        {
            "Sid": "RestrictToS3ServerAccessLogs",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### Permitir o acesso somente à sua organização
<a name="example-bucket-policies-global-condition-keys-2"></a>

Se você quiser exigir que todas as [entidades principais do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) que acessam um recurso sejam de uma Conta da AWS em sua organização (incluindo a conta de gerenciamento do AWS Organizations), poderá usar a chave de condição global `aws:PrincipalOrgID`.

Para conceder ou restringir esse tipo de acesso, defina a condição `aws:PrincipalOrgID` e defina o valor como o [ID da sua organização](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) na política de bucket. O ID da organização é usado para controlar o acesso ao bucket. Quando você usa a condição `aws:PrincipalOrgID`, as permissões da política de bucket também são aplicadas a todas as novas contas adicionadas à organização.

Aqui está um exemplo de política de bucket baseada em recursos que você pode usar para conceder a entidades principais do IAM específicas em sua organização acesso direto ao bucket. Ao adicionar a chave de condição global `aws:PrincipalOrgID` à sua política de bucket, agora é necessário que a conta da entidade principal esteja em sua organização para obter acesso ao recurso. Mesmo que você acidentalmente especifique uma conta incorreta ao conceder acesso, a [chave de condição global aws:PrincipalOrgID](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) atuará como uma proteção adicional. Quando uma chave global é usada em uma política, ela impede que todas as entidades principais fora da organização especificada acessem o bucket do S3. Somente entidades principais de contas na organização listada podem obter acesso ao recurso.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowGetObject",
        "Principal": {
            "AWS": "*"
        },
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": ["o-aa111bb222"]
            }
        }
    }]
}
```

------

## Gerenciar o acesso com base em solicitações HTTP ou HTTPS
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### Restringir o acesso somente a solicitações HTTPS
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

Se você quiser evitar que possíveis invasores manipulem o tráfego de rede, poderá usar HTTPS (TLS) para permitir somente conexões criptografadas e, ao mesmo tempo, restringir o acesso de solicitações HTTP ao seu bucket. Para determinar se a solicitação é HTTP ou HTTPS, use a chave de condição global [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) em sua política de bucket do S3. A chave de condição `aws:SecureTransport` verifica se uma solicitação foi enviada usando HTTP.

Se uma solicitação retornar `true`, isso significa que ela foi enviada por HTTPS. Se a solicitação retornar `false`, isso significa que ela foi enviada por HTTP. Depois, você pode permitir ou negar acesso ao bucket com base no esquema de solicitação desejado.

No exemplo a seguir, a política de bucket nega explicitamente as solicitações HTTP. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "RestrictToTLSRequestsOnly",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket",
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }]
}
```

------

### Restringir o acesso a um indicador HTTP específico
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

Suponha que você tenha um site com nome de domínio *`www.example.com`* ou *`example.com`* com links para fotos e vídeos armazenados em seu bucket chamado `amzn-s3-demo-bucket`. Por padrão, todos os recursos do Amazon S3 são privados e, portanto, somente a Conta da AWS que criou os recursos pode acessá-los. 

Para permitir acesso de leitura a esses objetos em seu site, você pode adicionar uma política de bucket que conceda a permissão `s3:GetObject` com uma condição de que a solicitação `GET` deve se originar de páginas específicas da Web. A política a seguir restringe as solicitações usando a condição `StringLike` com a chave de condição `aws:Referer`.

Certifique-se de que os navegadores que você usa incluam o cabeçalho HTTP `referer` na solicitação.

**Atenção**  
Recomendamos cuidado ao usar a chave de condição `aws:Referer`. É perigoso incluir um valor de cabeçalho do indicador HTTP conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de `aws:Referer` que escolherem. Assim sendo, não use `aws:Referer` para impedir que partes não autorizadas façam solicitações diretas à AWS.   
A chave de condição `aws:Referer` é oferecida apenas para permitir que os clientes protejam o conteúdo digital, como o conteúdo armazenado no Simple Storage Service (Amazon S3), evitando que seja referenciado em sites de terceiros não autorizados. Para obter mais informações, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer) no *Guia do usuário do IAM*.

## Gerenciar o acesso de usuários a pastas específicas
<a name="example-bucket-policies-folders"></a>

### Conceder acesso a pastas específicas para os usuários
<a name="example-bucket-policies-folders-1"></a>

Suponha que você esteja tentando conceder a uma pasta específica para os usuários. Se o usuário do IAM e o bucket do S3 pertencerem à mesma Conta da AWS, você poderá usar uma política do IAM para conceder acesso a uma pasta de bucket específica para os usuários. Com essa abordagem, você não precisa atualizar sua política de bucket para conceder acesso. Você pode adicionar a política do IAM a um perfil do IAM para o qual vários usuários podem mudar. 

Se a identidade do IAM e o bucket do S3 pertencerem a Contas da AWS diferentes, você deverá conceder acesso entre contas tanto na política do IAM quanto na política de bucket. Para obter mais informações sobre como conceder acesso entre contas, consulte [Proprietário do bucket concedendo permissões de bucket entre contas](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html). 

O exemplo de política de bucket a seguir concede a `JohnDoe` acesso total ao console somente na pasta dele (`home/JohnDoe/`). Ao criar uma pasta `home` e conceder as permissões apropriadas aos seus usuários, você pode fazer com que vários usuários compartilhem um único bucket. Essa política consiste em três instruções `Allow`:
+ `AllowRootAndHomeListingOfCompanyBucket`: permite que o usuário (`JohnDoe`) liste objetos no nível raiz do bucket `amzn-s3-demo-bucket` e na pasta `home`. Essa instrução também permite que o usuário pesquise o prefixo `home/` usando o console.
+ `AllowListingOfUserFolder`: permite que o usuário (`JohnDoe`) liste todos os objetos na pasta `home/JohnDoe/` e em quaisquer subpastas.
+ `AllowAllS3ActionsInUserFolder`: permite que o usuário execute todas as ações do Amazon S3 ao conceder as permissões `Read`, `Write` e `Delete`. As permissões são limitadas à pasta inicial do proprietário do bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfCompanyBucket",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": ["", "home/", "home/JohnDoe"],
                    "s3:delimiter": ["/"]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["home/JohnDoe/*"]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/home/JohnDoe/*"]
        }
    ]
}
```

------

## Gerenciar o acesso para logs de acesso
<a name="example-bucket-policies-access-logs"></a>

### Conceder acesso ao Application Load Balancer para habilitar logs de acesso
<a name="example-bucket-policies-access-logs-1"></a>

Ao habilitar os logs de acesso para o Application Load Balancer, você deve especificar o nome do bucket do S3 em que o balanceador de carga [armazenará os logs](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket). O bucket deve ter uma [política anexada](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy) que conceda ao Elastic Load Balancing permissão para gravar no bucket.

No exemplo a seguir, a política de bucket concede ao Elastic Load Balancing (ELB) permissão para gravar os logs de acesso no bucket:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
        }
    ]
}
```

------

**nota**  
Substitua `elb-account-id` pelo ID da Conta da AWS do Elastic Load Balancing para sua Região da AWS. Para ver a lista de regiões do Elastic Load Balancing, consulte [Anexar uma política ao seu bucket do S3](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy) no *Guia do usuário do Elastic Load Balancing*.

Se sua Região da AWS não aparecer na lista de regiões compatíveis do Elastic Load Balancing, use a política a seguir, que concede permissões ao serviço de entrega de logs especificado.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
       "Principal": {
         "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
          },
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
    }
  ]
}
```

------

Depois, configure os [logs de acesso do Elastic Load Balancing](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs) habilitando-os. Você pode [verificar as permissões de bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions) criando um arquivo de teste.

## Gerenciar o acesso para uma OAI do Amazon CloudFront
<a name="example-bucket-policies-cloudfront"></a>

### Conceder permissão para uma OAI do Amazon CloudFront
<a name="example-bucket-policies-cloudfront-1"></a>

O exemplo de política de bucket a seguir concede uma permissão de identidade do acesso de origem (OAI) do CloudFront para obter (ler) todos os objetos em seu bucket do S3. Você pode usar uma OAI do CloudFront para permitir que os usuários acessem objetos em seu bucket por meio do CloudFront, mas não diretamente pelo Amazon S3. Para obter mais informações, consulte [Restringir acesso ao conteúdo do Amazon S3 usando uma identidade do acesso de origem](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) no *Guia do desenvolvedor do Amazon CloudFront*.

A política a seguir usa o ID da OAI como `Principal` da política. Para obter mais informações sobre como usar políticas de bucket do S3 para conceder acesso a uma OAI do CloudFront, consulte [Migrar da identidade do acesso de origem (OAI) para o controle de acesso à origem (OAC)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac) no *Guia do desenvolvedor do Amazon CloudFront*.

Para usar este exemplo:
+ Substitua `EH1HDMB1FH2TC` pelo ID da OAI. Para localizar o ID da OAI, consulte a página [Origin Access Identity](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:) (Identidade do acesso de origem) no console do CloudFront ou use [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) na API do CloudFront.
+ Substitua `amzn-s3-demo-bucket` pelo nome do seu bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

## Gerenciar o acesso para a Lente de Armazenamento do Amazon S3
<a name="example-bucket-policies-lens"></a>

### Conceder permissões para a Lente de Armazenamento do Amazon S3
<a name="example-bucket-policies-lens-1"></a>

A Lente de Armazenamento do S3 agrega suas métricas e exibe as informações na seção **Account snapshot** (Snapshot da conta) na página **Buckets** do console do Amazon S3. A Lente de Armazenamento do S3 também oferece um painel interativo para visualizar insights e tendências, sinalizar discrepâncias e receber recomendações para otimizar os custos de armazenamento e aplicar as práticas recomendadas de proteção de dados. O painel tem opções de detalhamento para gerar e visualizar insights no nível da organização, conta, Região da AWS, classe de armazenamento, bucket, prefixo ou grupo de Lente de Armazenamento. Também é possível enviar um relatório diário de métricas no formato CSV ou Parquet a um bucket do S3 de uso geral ou exportar as métricas diretamente para um bucket de tabela do S3 gerenciado pela AWS.

A Lente de Armazenamento do S3 pode exportar as métricas de uso de armazenamento agregadas em um bucket do Amazon S3 para análise posterior. O bucket em que o S3 Storage Lens coloca as exportações de métricas dele é conhecido como *bucket de destino*. Ao configurar a exportação de métricas do S3 Storage Lens, você deve ter uma política para o bucket de destino. Para obter mais informações, consulte [Monitorar a atividade de armazenamento e o uso com a Lente de Armazenamento do Amazon S3](storage_lens.md).

O exemplo de política de bucket a seguir concede ao Amazon S3 permissão para gravar objetos (solicitações `PUT`) em um bucket de destino. Você usa uma política de bucket como essa no bucket de destino ao configurar uma exportação de métricas do S3 Storage Lens.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3StorageLensExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "storage-lens.s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/111122223333/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:s3:region-code:111122223333:storage-lens/storage-lens-dashboard-configuration-id"
                }
            }
        }
    ]
}
```

------

Ao configurar uma exportação de métricas da organização da Lente de Armazenamento do S3, use a modificação a seguir na instrução `Resource` da política de bucket anterior.

```
1. "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/your-organization-id/*",
```

## Gerenciar permissões para o Inventário do S3, análises do S3 e relatórios do Inventário do S3
<a name="example-bucket-policies-s3-inventory"></a>

### Conceder permissões para o Inventário do S3 e análises do S3
<a name="example-bucket-policies-s3-inventory-1"></a>

O Inventário do S3 cria listas dos objetos em um bucket do, e a exportação da análise da classe de armazenamento do S3 cria arquivos de saída dos dados usados na análise. O bucket para o qual o inventário lista objetos é chamado de *bucket de origem*. O bucket onde o arquivo de inventário ou arquivo de exportação da análise é gravado é chamado de *bucket de destino*. Ao configurar a exportação de um inventário ou uma análise, você deve criar uma política de bucket para o bucket de destino. Para obter mais informações, consulte [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md) e [Análise do Amazon S3 – Análise de classe de armazenamento](analytics-storage-class.md).

O exemplo da política de bucket a seguir concede permissão ao Amazon S3 para gravar objetos (solicitações `PUT`) da conta do bucket de origem para o bucket de destino. Use uma política de bucket como essa no bucket de destino ao configurar o Inventário do S3 e a exportação da análise do S3.

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

****  

```
{  
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
            "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ],
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

### Controlar a criação da configuração de relatórios do Inventário S3
<a name="example-bucket-policies-s3-inventory-2"></a>

[Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md) cria listas dos objetos em um bucket do S3 e dos metadados de cada objeto. Com a permissão `s3:PutInventoryConfiguration`, o usuário tem autorização para criar uma configuração de inventário que inclui todos os campos de metadados de objetos que estão disponíveis por padrão e especificar o bucket de destino para armazenar o inventário. Um usuário com acesso de leitura aos objetos no bucket de destino pode acessar todos os campos de metadados do objeto que estão disponíveis no relatório de inventário. Para obter mais informações sobre os campos de metadados que estão disponíveis no S3 Inventory, consulte [Lista do Amazon S3 Inventory](storage-inventory.md#storage-inventory-contents).

Para impedir que um usuário configure um relatório do Inventário S3, remova a permissão `s3:PutInventoryConfiguration` do usuário.

Alguns campos de metadados de objetos nas configurações de relatório do Inventário S3 são opcionais, o que significa que estão disponíveis por padrão, mas podem ser restritos quando você concede a permissão `s3:PutInventoryConfiguration` a um usuário. É possível controlar se os usuários podem incluir esses campos de metadados opcionais em seus relatórios usando a chave de condição `s3:InventoryAccessibleOptionalFields`. Consulte uma lista dos campos de metadados opcionais disponíveis no Inventário S3 em [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody) na *Referência de API do Amazon Simple Storage Service*.

Para conceder permissão ao usuário para criar uma configuração de inventário com campos de metadados opcionais específicos, use a chave de condição `s3:InventoryAccessibleOptionalFields` para refinar as condições na política de bucket. 

O exemplo de política a seguir concede a um usuário (`Ana`) permissão para criar uma configuração de inventário condicionalmente. A condição `ForAllValues:StringEquals` na política usa a chave de condição `s3:InventoryAccessibleOptionalFields` para especificar os dois campos de metadados opcionais permitidos, a saber `Size` e `StorageClass`. Então, quando `Ana` está criando uma configuração de inventário, os únicos campos de metadados opcionais que ela pode incluir são `Size` e `StorageClass`. 

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

****  

```
{
	"Id": "InventoryConfigPolicy",
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "AllowInventoryCreationConditionally",
			"Effect": "Allow",			
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:user/Ana"
			},			
			"Action": 
				"s3:PutInventoryConfiguration",
			"Resource": 
				"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET",
			"Condition": {
				"ForAllValues:StringEquals": {
					"s3:InventoryAccessibleOptionalFields": [
					   "Size",
					   "StorageClass"
					   ]
				  }
				}
			}
	]
}
```

------

Para impedir que um usuário configure um relatório do Inventário S3 que inclua campos de metadados opcionais específicos, adicione uma instrução `Deny` explícita à política do bucket de origem. O exemplo de política de bucket a seguir impede que a usuária `Ana` crie uma configuração de inventário no bucket de origem `amzn-s3-demo-source-bucket` que inclua os campos de metadados opcionais `ObjectAccessControlList` ou `ObjectOwner`. A usuária `Ana` ainda pode criar uma configuração de inventário com outros campos de metadados opcionais.

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::amzn-s3-demo-source-bucket",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::amzn-s3-demo-source-bucket",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**nota**  
O uso da chave de condição `s3:InventoryAccessibleOptionalFields` nas políticas de bucket não afeta a entrega de relatórios de inventário com base nas configurações de inventário existentes. 

**Importante**  
Recomendamos usar `ForAllValues` com efeito `Allow` ou `ForAnyValue` com efeito `Deny`, conforme mostrado nos exemplos anteriores.  
Não use `ForAllValues` com efeito `Deny` nem `ForAnyValue` com efeito `Allow`, pois essas combinações podem ser excessivamente restritivas e bloquear a exclusão da configuração do inventário.  
Para saber mais sobre os operadores do conjunto de condições `ForAllValues` e `ForAnyValue`, consulte [Multivalued context keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys) no *Guia do usuário do IAM*.

## Exigir MFA
<a name="example-bucket-policies-MFA"></a>

O Amazon S3 oferece suporte a acesso à API protegido por MFA, um recurso que pode impor a autenticação multifator para acessar os recursos do Amazon S3. A autenticação multifator fornece um nível extra de segurança que pode ser aplicado a seu ambiente da AWS. MFA é um recurso de segurança que exige que os usuários comprovem a posse física de um dispositivo MFA fornecendo um código válido de MFA. Para obter mais informações, consulte [Autenticação multifator da AWS](https://aws.amazon.com/mfa/). É possível exigir a autenticação MFA para todas as solicitações de acesso a seus recursos do Amazon S3. 

Para impor o requisito de MFA, use a chave de condição `aws:MultiFactorAuthAge` em uma política de bucket. Os usuários do IAM podem acessar os recursos do Amazon S3 usando credenciais temporárias emitidas pelo AWS Security Token Service (AWS STS). Forneça o código da MFA no momento da solicitação do AWS STS. 

Quando o Amazon S3 recebe uma solicitação com autenticação multifator, a chave de condição `aws:MultiFactorAuthAge` fornece um valor numérico que indica há quanto tempo (em segundos) a credencial temporária foi criada. Se a credencial temporária fornecida na solicitação não foi criada usando um dispositivo MFA, esse valor de chave será nulo (ausente). Em uma política de bucket, você pode adicionar uma condição para verificar esse valor, conforme mostrado no exemplo a seguir. 

O exemplo de política negará qualquer operação do Amazon S3 na pasta *`/taxdocuments`* do bucket `amzn-s3-demo-bucket` se a solicitação não for autenticada usando MFA. Para saber mais sobre MFA, consulte [Uso da autenticação multifator (MFA) na AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) no *Guia do usuário do IAM*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
      }
    ]
 }
```

------

A condição `Null` no bloco `Condition` será avaliada como `true` se o valor da chave de condição `aws:MultiFactorAuthAge` for nulo, o que indica que as credenciais de segurança temporárias da solicitação foram criadas sem um dispositivo de MFA. 

A política de bucket a seguir é uma extensão da política de bucket anterior. A política a seguir inclui duas declarações de política. Uma instrução concede a permissão `s3:GetObject` em um bucket (`amzn-s3-demo-bucket`) a todos. Outra instrução restringe ainda mais o acesso à pasta `amzn-s3-demo-bucket/taxdocuments` no bucket ao exigir MFA. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": ["s3:GetObject"],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    ]
 }
```

------

Opcionalmente, você pode usar uma condição numérica para limitar a validade da chave `aws:MultiFactorAuthAge`. A duração que você especifica com a chave `aws:MultiFactorAuthAge` não depende do ciclo de vida da credencial de segurança temporária usada para autenticar a solicitação. 

Por exemplo, a seguinte política de bucket, além de exigir autenticação MFA, também verifica há quanto tempo a sessão temporária foi criada. A política negará qualquer operação se o valor da chave `aws:MultiFactorAuthAge` indicar que a sessão temporária foi criada há mais de uma hora (3.600 segundos). 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": {"Null": {"aws:MultiFactorAuthAge": true }}
      },
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }}
       },
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": "*",
         "Action": ["s3:GetObject"],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
    ]
 }
```

------

## Impedir que os usuários excluam objetos
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

Por padrão, os usuários não têm nenhuma permissão. No entanto, ao criar políticas, você pode conceder permissões que não pretendia conceder. Para evitar essas brechas de permissão, você pode elaborar uma política de acesso mais estrita adicionando uma negação explícita. 

Para impedir explicitamente que usuários ou contas excluam objetos, é necessário adicionar as seguintes ações a uma política de bucket: as permissões `s3:DeleteObject`, `s3:DeleteObjectVersion` e `s3:PutLifecycleConfiguration`. Todas as três ações são necessárias porque é possível excluir objetos chamando explicitamente a API `DELETE Object` ou configurando seu ciclo de vida (consulte [Gerenciar o ciclo de vida dos objetos](object-lifecycle-mgmt.md)) de modo que o Amazon S3 possa remover os objetos quando o respectivo ciclo de vida expirar.

No exemplo de política a seguir, você nega explicitamente as permissões `DELETE Object` ao usuário `MaryMajor`. Uma declaração `Deny` explícita sempre se sobrepõe a qualquer outra permissão concedida.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:GetObjectVersion",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	 	"arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Sid": "statement2",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:PutLifecycleConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	    "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    }
  ]
}
```

------