

# Exemplos de políticas baseadas em identidade do Amazon CloudFront
<a name="security_iam_id-based-policy-examples"></a>

Por padrão, usuários e funções não têm permissão para criar nem modificar recursos do CloudFront. Para conceder permissão aos usuários para executar ações nos recursos que eles precisam, um administrador do IAM pode criar políticas do IAM.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documento de política JSON, consulte [Criar políticas do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) no *Guia do usuário do IAM*.

Para obter detalhes sobre ações e tipos de recurso definidos pelo CloudFront, por exemplo, o formato dos ARNs para cada um dos tipos de recurso, consulte [Ações, recursos e chaves de condição do Amazon CloudFront](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudfront.html) na *Referência de autorização do serviço*.

**Topics**
+ [Práticas recomendadas de política](#security_iam_service-with-iam-policy-best-practices)
+ [Permitir que os usuários visualizem suas próprias permissões](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Permissões para acessar o CloudFront programaticamente](#security_iam_id-based-policy-examples-programmatic-access-all)
+ [Permissões necessárias para usar o console do CloudFront](#security_iam_id-based-policy-examples-console-required-permissions)
+ [Exemplos de política gerenciada pelo cliente](#security_iam_id-based-policy-examples-sdk-cli)

## Práticas recomendadas de política
<a name="security_iam_service-with-iam-policy-best-practices"></a>

As políticas baseadas em identidade determinam se alguém pode criar, acessar ou excluir recursos do CloudFront em sua conta. Essas ações podem incorrer em custos para sua Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:
+ **Comece com as políticas gerenciadas pela AWS e avance para as permissões de privilégio mínimo**: para começar a conceder permissões a seus usuários e workloads, use as *políticas gerenciadas pela AWS*, que concedem permissões para muitos casos de uso comuns. Elas estão disponíveis em seus Conta da AWS. Recomendamos que você reduza ainda mais as permissões definindo políticas gerenciadas pelo cliente da AWS que são específicas para seus casos de uso. Para saber mais, consulte [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [Políticas gerenciadas pela AWS para funções de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) no *Guia do usuário do IAM*.
+ **Aplique permissões de privilégio mínimo**: ao definir permissões com as políticas do IAM, conceda apenas as permissões necessárias para executar uma tarefa. 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*. Para saber mais sobre como usar o IAM para aplicar permissões, consulte [Políticas e permissões no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) no *Guia do usuário do IAM*.
+ **Use condições nas políticas do IAM para restringir ainda mais o acesso**: é possível adicionar uma condição às políticas para limitar o acesso a ações e recursos. Por exemplo, é possível escrever uma condição de política para especificar que todas as solicitações devem ser enviadas usando SSL. Também pode usar condições para conceder acesso a ações de serviço, se elas forem usadas por meio de um AWS service (Serviço da AWS) específico, como o CloudFormation. Para saber mais, consulte [Elementos da política JSON do IAM: condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) no *Guia do usuário do IAM*.
+ **Use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais**: o IAM Access Analyzer valida as políticas novas e existentes para que elas sigam a linguagem de política do IAM (JSON) e as práticas recomendadas do IAM. O IAM Access Analyzer oferece mais de cem verificações de política e recomendações práticas para ajudar a criar políticas seguras e funcionais. Para saber mais, consulte [Validação de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) no *Guia do Usuário do IAM*.
+ **Exigir autenticação multifator (MFA)**: se houver um cenário que exija usuários do IAM ou um usuário raiz em sua Conta da AWS, ative a MFA para obter segurança adicional. Para exigir MFA quando as operações de API forem chamadas, adicione condições de MFA às suas políticas. Para saber mais, consulte [Configuração de acesso à API protegido por MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) no *Guia do Usuário do IAM*.

Para saber mais sobre as práticas recomendadas do IAM, 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*.

## Permitir que os usuários visualizem suas próprias permissões
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Este exemplo mostra como criar uma política que permita que os usuários do IAM visualizem as políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissões para concluir essa ação no console ou de forma programática usando a AWS CLI ou a API da AWS.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## Permissões para acessar o CloudFront programaticamente
<a name="security_iam_id-based-policy-examples-programmatic-access-all"></a>

Veja a seguir uma política de permissões. O `Sid`, ou o ID de instrução, é opcional.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowAllCloudFrontPermissions",
         "Effect": "Allow",
         "Action": ["cloudfront:*"],
         "Resource": "*"
      }
   ]
}
```

------

A política concede permissões para executar todas as operações do CloudFront, o que é suficiente para acessar o CloudFront de forma programática. Se estiver usando o console para acessar o CloudFront, consulte [Permissões necessárias para usar o console do CloudFront](#security_iam_id-based-policy-examples-console-required-permissions). 

Para visualizar uma lista de ações e o ARN que podem ser especificadas para conceder ou negar permissão para usar cada ação, consulte [Ações, recursos e chaves de condição do Amazon CloudFront](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudfront.html) na *Referência de autorização do serviço*.

## Permissões necessárias para usar o console do CloudFront
<a name="security_iam_id-based-policy-examples-console-required-permissions"></a>

Para permitir acesso total ao console do CloudFront, conceda as permissões na seguinte política de permissões: 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "acm:ListCertificates", 
            "cloudfront:*", 
            "cloudwatch:DescribeAlarms",
            "cloudwatch:PutMetricAlarm",
            "cloudwatch:GetMetricStatistics",
            "elasticloadbalancing:DescribeLoadBalancers",
            "iam:ListServerCertificates",
            "sns:ListSubscriptionsByTopic",
            "sns:ListTopics",
            "waf:GetWebACL",
            "waf:ListWebACLs"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets",
            "s3:PutBucketPolicy"
         ],
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

Veja por que as permissões são necessárias:

**`acm:ListCertificates`**  
Permite que você visualize uma lista de certificados do ACM quando estiver criando e atualizando distribuições por meio do console do CloudFront e quiser configurar o CloudFront para exigir HTTPS entre o visualizador e o CloudFront ou entre o CloudFront e a origem.  
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`cloudfront:*`**  
Permite executar todas as ações do CloudFront.

**`cloudwatch:DescribeAlarms` e `cloudwatch:PutMetricAlarm`**  
Permite criar e exibir alarmes do CloudWatch no console do CloudFront. Consulte também `sns:ListSubscriptionsByTopic` e `sns:ListTopics`.  
Essas permissões não serão necessárias se você não estiver usando o console do CloudFront.

**`cloudwatch:GetMetricStatistics`**  
Permite que o CloudFront renderize as métricas do CloudWatch no console do CloudFront.  
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`elasticloadbalancing:DescribeLoadBalancers`**  
Quando estiver criando e atualizando distribuições, permite que você visualize uma lista de balanceadores de carga do Elastic Load Balancing na lista de origens disponíveis.  
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`iam:ListServerCertificates`**  
Permite que você visualize uma lista de certificados no repositório de certificados do IAM quando estiver criando e atualizando distribuições por meio do console do CloudFront e quiser configurar o CloudFront para exigir HTTPS entre o visualizador e o CloudFront ou entre o CloudFront e a origem.  
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`s3:ListAllMyBuckets`**  
Quando estiver criando e atualizando distribuições, permite que você execute as seguintes operações:  
+ Visualizar uma lista de buckets do S3 na lista de origens disponíveis.
+ Visualizar uma lista de buckets do S3 nos quais você pode salvar logs de acesso..
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`S3:PutBucketPolicy`**  
Ao criar ou atualizar distribuições que restringem o acesso a buckets do S3, permite que um usuário atualize a política do bucket para conceder acesso à identidade de acesso de origem do CloudFront. Para obter mais informações, consulte [Usar uma identidade de acesso à origem (herdada, não recomendado)](private-content-restricting-access-to-s3.md#private-content-restricting-access-to-s3-oai).  
Essa permissão não é necessária se você não estiver usando o console do CloudFront.

**`sns:ListSubscriptionsByTopic` e `sns:ListTopics`**  
Ao criar alarmes do CloudWatch no console do CloudFront, permite escolher um tópico do SNS para notificações.  
Essas permissões não serão necessárias se você não estiver usando o console do CloudFront.

**`waf:GetWebACL` e `waf:ListWebACLs`**  
Permite exibir uma lista de ACLs da Web do AWS WAF no console do CloudFront.  
Essas permissões não serão necessárias se você não estiver usando o console do CloudFront.

### Ações somente de permissão para o console do CloudFront
<a name="console-only-actions"></a>

Você pode realizar as ações do CloudFront a seguir na página do [Pacote Promocional de Segurança do CloudFront](https://console.aws.amazon.com//cloudfront/v3/home#/savings-bundle/overview). As ações de API a seguir não devem ser chamadas pelo seu código e não estão incluídas na AWS CLI e nos SDKs da AWS.


****  

| Ação | Descrição | 
| --- | --- | 
|  `CreateSavingsPlan`  |  Concede permissão para criar um Savings Plans.  | 
|   `GetSavingsPlan`   |  Concede permissão para obter um Savings Plans.  | 
|  `ListRateCards`  |  Concede permissão para listar cartões de tarifa do CloudFront para a conta.   | 
|   `ListSavingsPlans`   |  Concede permissão para listar Savings Plans na conta.  | 
|   `ListUsages`   |  Concede permissão para listar a utilização do CloudFront.  | 
|   `UpdateSavingsPlan`   |  Concede permissão para atualizar um Savings Plans.   | 

**Observações**  
Para ter mais informações sobre os Savings Plans do CloudFront, consulte a seção sobre o Pacote Promocional de Segurança do CloudFront em [Perguntas frequentes sobre o Amazon CloudFront](https://aws.amazon.com/cloudfront/faqs/). 
Se você criar um Savings Plans para o CloudFront e quiser excluí-lo posteriormente, entre em contato com o [AWS Support](https://console.aws.amazon.com/support/home#/case/create?issueType=customer-service). 

## Exemplos de política gerenciada pelo cliente
<a name="security_iam_id-based-policy-examples-sdk-cli"></a>

Você pode criar suas próprias políticas personalizadas do IAM para conceder permissões a ações da API do CloudFront. Você pode anexar essas políticas personalizadas a usuários ou grupos do IAM que exijam as permissões especificadas. Essas políticas funcionam quando você está usando a API do CloudFront, os AWS SDKs ou a AWS CLI. Os exemplos a seguir mostram permissões para alguns casos de uso comuns. Para a política que concede acesso total a um usuário ao CloudFront, consulte [Permissões necessárias para usar o console do CloudFront](#security_iam_id-based-policy-examples-console-required-permissions).

**Topics**
+ [Exemplo 1: permitir acesso de leitura a todas as distribuições](#security_iam_id-based-policy-examples-allow-read-all-distributions)
+ [Exemplo 2: permitir criar, atualizar e excluir distribuições](#security_iam_id-based-policy-examples-allow-create-update-delete-distributions)
+ [Exemplo 3: permitir a criação e a listagem de invalidações](#security_iam_id-based-policy-examples-allow-create-list-invalidations)
+ [Exemplo 4: permitir criar uma distribuição](#create-distribution-iam-policy)

### Exemplo 1: permitir acesso de leitura a todas as distribuições
<a name="security_iam_id-based-policy-examples-allow-read-all-distributions"></a>

A política a seguir concede ao usuário permissões para visualizar todas as distribuições no console do CloudFront:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "acm:ListCertificates", 
            "cloudfront:GetDistribution",
            "cloudfront:GetDistributionConfig",
            "cloudfront:ListDistributions",
            "cloudfront:ListCloudFrontOriginAccessIdentities",
            "elasticloadbalancing:DescribeLoadBalancers",
            "iam:ListServerCertificates",
            "sns:ListSubscriptionsByTopic",
            "sns:ListTopics",
            "waf:GetWebACL",
            "waf:ListWebACLs"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

### Exemplo 2: permitir criar, atualizar e excluir distribuições
<a name="security_iam_id-based-policy-examples-allow-create-update-delete-distributions"></a>

A política a seguir concede aos usuários permissão para criar, atualizar e excluir distribuições usando o console do CloudFront:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "acm:ListCertificates", 
            "cloudfront:CreateDistribution",
            "cloudfront:DeleteDistribution",
            "cloudfront:GetDistribution",
            "cloudfront:GetDistributionConfig",
            "cloudfront:ListDistributions",
            "cloudfront:UpdateDistribution",
            "cloudfront:ListCloudFrontOriginAccessIdentities",
            "elasticloadbalancing:DescribeLoadBalancers",
            "iam:ListServerCertificates",
            "sns:ListSubscriptionsByTopic",
            "sns:ListTopics",
            "waf:GetWebACL",
            "waf:ListWebACLs"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets",
            "s3:PutBucketPolicy"
         ],
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

Com a permissão `cloudfront:ListCloudFrontOriginAccessIdentities`, os usuários podem conceder automaticamente a uma identidade de acesso de origem a permissão para acessar objetos em um bucket do Amazon S3. Se você quiser que os usuários também possam criar identidades de acesso de origem, é necessário conceder a permissão `cloudfront:CreateCloudFrontOriginAccessIdentity`.

### Exemplo 3: permitir a criação e a listagem de invalidações
<a name="security_iam_id-based-policy-examples-allow-create-list-invalidations"></a>

A política de a seguir permite que os usuários criem e indiquem invalidações. Ela inclui acesso de leitura a distribuições do CloudFront, pois você cria e visualiza invalidações exibindo as configurações de uma distribuição:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "acm:ListCertificates", 
            "cloudfront:GetDistribution",
            "cloudfront:GetStreamingDistribution",
            "cloudfront:GetDistributionConfig",
            "cloudfront:ListDistributions",
            "cloudfront:ListCloudFrontOriginAccessIdentities",
            "cloudfront:CreateInvalidation",
            "cloudfront:GetInvalidation",
            "cloudfront:ListInvalidations",
            "elasticloadbalancing:DescribeLoadBalancers",
            "iam:ListServerCertificates",
            "sns:ListSubscriptionsByTopic",
            "sns:ListTopics",
            "waf:GetWebACL",
            "waf:ListWebACLs"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

### Exemplo 4: permitir criar uma distribuição
<a name="create-distribution-iam-policy"></a>

A política a seguir concede ao usuário permissão para criar e listar as distribuições no console do CloudFront. Para a ação `CreateDistribution`, especifique o caractere curinga (\$1) para o `Resource` em vez de um curinga para o ARN (`arn:aws:cloudfront::123456789012:distribution/*`) de distribuição. Para ter mais informações sobre o elemento `Resource`, consulte [Elementos de política JSON do IAM: recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) no *Guia do usuário do IAM*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudfront:CreateDistribution",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "cloudfront:ListDistributions",
            "Resource": "*"
        }
    ]
}
```

------