

# Restringe o acesso a uma origem do AWS Elemental MediaPackage v2.
<a name="private-content-restricting-access-to-mediapackage"></a>

O CloudFront fornece *controle de acesso à origem* (OAC) para restringir o acesso a uma origem do MediaPackage v2.

**nota**  
O OAC do CloudFront só é compatível com o MediaPackage v2. O MediaPackage v1 não é compatível.

**Topics**
+ [Criar um novo OAC](#create-oac-overview-mediapackage)
+ [Configurações avançadas para controle de acesso à origem](#oac-advanced-settings-mediapackage)

## Criar um novo OAC
<a name="create-oac-overview-mediapackage"></a>

Conclua as etapas descritas nos tópicos a seguir para configurar um novo OAC no CloudFront.

**Topics**
+ [Pré-requisitos](#oac-prerequisites-mediapackage)
+ [Conceder permissão ao CloudFront para acessar a origem do MediaPackage v2](#oac-permission-to-access-mediapackage)
+ [Criar o OAC](#create-oac-mediapackage)

### Pré-requisitos
<a name="oac-prerequisites-mediapackage"></a>

Antes de criar e configurar o controle de acesso à origem, você deve ter uma distribuição do CloudFront com uma origem do MediaPackage v2. Para obter mais informações, consulte [Usar um contêiner do MediaStore ou um canal do MediaPackage](DownloadDistS3AndCustomOrigins.md#concept_AWS_Media).

### Conceder permissão ao CloudFront para acessar a origem do MediaPackage v2
<a name="oac-permission-to-access-mediapackage"></a>

Antes de criar um controle de acesso à origem ou configurá-lo em uma distribuição do CloudFront, este deve ter permissão para acessar a origem do MediaPackage v2. Faça isso depois de criar uma distribuição do CloudFront, mas antes de adicionar o OAC à origem do MediaPackage v2 na configuração de distribuição.

Use uma política do IAM para permitir que a entidade principal do serviço do CloudFront (`cloudfront.amazonaws.com`) acesse a origem. O elemento `Condition` na política permite que o CloudFront acesse a origem do MediaPackage v2 *somente* quando a solicitação for em nome da distribuição do CloudFront que contém a origem do MediaPackage v2. Essa é a distribuição com a origem do MediaPackage v2 à qual você deseja adicionar o OAC.

**Example : política do IAM que permite acesso somente leitura a uma distribuição do CloudFront com OAC habilitado**  
A política a seguir permite que a distribuição do CloudFront (`E1PDK09ESKHJWT`) acesse a origem do MediaPackage v2. A origem é o ARN especificado para o elemento `Resource`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {"Service": "cloudfront.amazonaws.com"},
            "Action": "mediapackagev2:GetObject",
            "Resource": "arn:aws:mediapackagev2:us-east-1:123456789012:channelGroup/channel-group-name/channel/channel-name/originEndpoint/origin_endpoint_name",
            "Condition": {
                "StringEquals": {"AWS:SourceArn": "arn:aws:cloudfront::123456789012:distribution/E1PDK09ESKHJWT"}
            }
        }
    ]
}
```

**Observações**  
Se você habilitou o recurso MQAR e o controle de acesso à origem (OAC), adicione a ação `mediapackagev2:GetHeadObject` à política do IAM. O MQAR requer essa permissão para enviar solicitações `HEAD` à origem do MediaPackage v2. Para ter mais informações sobre o MQAR, consulte [Resiliência com Reconhecimento de Qualidade da Mídia](media-quality-score.md).
Se você criar uma distribuição que não tenha permissão para sua origem do MediaPackage v2, é possível escolher **Copy policy** (Copiar política) no console do CloudFront e, depois, escolher **Update endpoint permissions** (Atualizar permissões de endpoint). Em seguida, é possível anexar a permissão copiada ao endpoint. Para ter mais informações, consulte [Endpoint policy fields](https://docs.aws.amazon.com/mediapackage/latest/userguide/endpoints-policy.html) (Campos de política de endpoint) no *Guia do usuário do AWS Elemental MediaPackage*. 

### Criar o OAC
<a name="create-oac-mediapackage"></a>

Para criar um OAC, é possível usar o Console de gerenciamento da AWS, o CloudFormation, a AWS CLI ou a API do CloudFront.

------
#### [ Console ]

**Para criar um OAC**

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

1. No painel de navegação, selecione **Origem access** (Acesso à origem).

1. Selecione **Create control setting** (Criar configuração de controle).

1. No formulário **Create new OAC** (Criar novo OAC), faça o seguinte:

   1. Informe um **Name** (Nome) e (opcionalmente) uma **Description** (Descrição) para o OAC.

   1. Em **Signing behavior** (Comportamento de assinatura), recomendamos que deixe a configuração padrão (**Sign requests (recommended)** [Solicitações de assinatura (recomendado)]. Para obter mais informações, consulte [Configurações avançadas para controle de acesso à origem](#oac-advanced-settings-mediapackage).

1. Em **Origin type** (Tipo de origem), selecione **MediaPackage v2**. 

1. Escolha **Criar**.
**dica**  
Depois que criar OAC, anote o **Name** (Nome). Você precisará dele no procedimento a seguir.

**Como adicionar um OAC a uma origem do MediaPackage v2 em uma distribuição**

1. Abra o console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Escolha uma distribuição com uma origem do MediaPackage v2 à qual você deseja adicionar o OAC e, depois, selecione a guia **Origins** (Origens).

1. Selecione a origem do MediaPackage v2 à qual você deseja adicionar o OAC e, depois, **Edit** (Editar).

1. Selecione **HTTPS only** (Somente HTTPS) para o **Protocol** (Protocolo) de sua origem.

1. No menu suspenso **Origin access control** (Controle de acesso à origem), selecione o nome do OAC que você deseja usar.

1. Escolha **Salvar alterações**.

A distribuição começa a ser implantada em todos os locais da borda do CloudFront. Quando um local da borda recebe a nova configuração, ele assina todas as solicitações enviadas à origem do MediaPackage v2.

------
#### [ CloudFormation ]

Para criar um OAC com o CloudFormation, use o tipo de recurso `AWS::CloudFront::OriginAccessControl`. O exemplo a seguir mostra a sintaxe do modelo CloudFormation no formato YAML, para criar um OAC.

```
Type: AWS::CloudFront::OriginAccessControl
Properties: 
  OriginAccessControlConfig: 
      Description: An optional description for the origin access control
      Name: ExampleOAC
      OriginAccessControlOriginType: mediapackagev2
      SigningBehavior: always
      SigningProtocol: sigv4
```

Para obter mais informações, consulte [AWS::CloudFront::OriginAccessControl](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-originaccesscontrol.html) no *Guia do usuário do AWS CloudFormation*.

------
#### [ CLI ]

Para criar um controle de acesso à origem com a AWS Command Line Interface (AWS CLI), use o comando **aws cloudfront create-origin-access-control**. É possível usar um arquivo de entrada para fornecer os parâmetros de entrada do comando, em vez de especificar cada parâmetro individual como entrada na linha de comando.

**Como criar um controle de acesso à origem (CLI com arquivo de entrada)**

1. Use o comando a seguir para criar um arquivo chamado `origin-access-control.yaml`. Esse arquivo contém todos os parâmetros de entrada para o comando **create-origin-access-control**.

   ```
   aws cloudfront create-origin-access-control --generate-cli-skeleton yaml-input > origin-access-control.yaml
   ```

1. Abra o arquivo `origin-access-control.yaml` que você acabou de criar. Edite o arquivo para adicionar um nome para o OAC, uma descrição (opcional) e alterar `SigningBehavior` para `always`. Salve o arquivo.

   Para obter mais informações sobre outras configurações de OAC, consulte [Configurações avançadas para controle de acesso à origem](#oac-advanced-settings-mediapackage).

1. Use o comando a seguir para criar o controle de acesso à origem usando parâmetros de entrada do arquivo `origin-access-control.yaml`.

   ```
   aws cloudfront create-origin-access-control --cli-input-yaml file://origin-access-control.yaml
   ```

   Anote o valor do `Id` na saída do comando. Você precisa dele para adicionar o OAC a uma origem do MediaPackage v2 em uma distribuição do CloudFront.

**Como anexar um OAC a uma origem do MediaPackage v2 em uma distribuição existente (CLI com arquivo de entrada)**

1. Use o comando a seguir para salvar a configuração da distribuição do CloudFront à qual você deseja adicionar o OAC. A distribuição deve ter uma origem do MediaPackage v2.

   ```
   aws cloudfront get-distribution-config --id <CloudFront distribution ID> --output yaml > dist-config.yaml
   ```

1. Abra o arquivo chamado `dist-config.yaml` que você acabou de criar. Edite o arquivo fazendo as seguintes alterações:
   + No objeto `Origins`, adicione o ID do OAC ao campo chamado `OriginAccessControlId`.
   + Remova o valor do campo chamado `OriginAccessIdentity`, se houver.
   + Renomeie o campo `ETag` para `IfMatch`, mas não altere o valor do campo.

   Ao concluir, salve o arquivo.

1. Use o comando a seguir para atualizar a distribuição para usar o controle de acesso à origem.

   ```
   aws cloudfront update-distribution --id <CloudFront distribution ID> --cli-input-yaml file://dist-config.yaml
   ```

A distribuição começa a ser implantada em todos os locais da borda do CloudFront. Quando um local da borda recebe a nova configuração, ele assina todas as solicitações enviadas à origem do MediaPackage v2.

------
#### [ API ]

Para criar um OAC com a API do CloudFront, use [CreateOriginAccessControl](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateOriginAccessControl.html). Para obter mais informações sobre os campos especificados nessa chamada de API, consulte a documentação de referência de API do seu AWS SDK ou de outro cliente de API.

Assim que criar um controle de acesso à origem, é possível anexá-lo a uma origem do MediaPackage v2 em uma distribuição usando uma das seguintes chamadas de API:
+ Para anexá-lo a uma distribuição existente, use [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Para anexá-lo a uma nova distribuição, use [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Para as duas chamadas de API, forneça o ID de OAC no campo `OriginAccessControlId`, dentro de uma origem. Para mais informações sobre os outros campos especificados nessas chamadas de API, consulte [Referência de configurações de todas as distribuições](distribution-web-values-specify.md) e a documentação de referência da API do AWS SDK ou de outro cliente de API.

------

## Configurações avançadas para controle de acesso à origem
<a name="oac-advanced-settings-mediapackage"></a>

O atributo de OAC do CloudFront inclui configurações avançadas destinadas somente a casos de uso específicos. Use as configurações recomendadas, a menos que você precise usar as configurações avançadas para uma necessidade específica.

O OAC contém uma configuração chamada **Signing behavior** (Comportamento de assinatura) (no console) ou `SigningBehavior` (na API, na CLI e no CloudFormation). Essa configuração fornece as seguintes opções:

**Always sign origin requests (recommended setting) [Sempre assinar solicitações de origem (configuração recomendada)]**  
Recomendamos usar essa configuração, chamada **Sign requests (recommended)** [Assinar solicitações (recomendado)] no console, ou `always` na API, na CLI e no CloudFormation. Com essa configuração, o CloudFront sempre assina todas as solicitações enviadas à origem do MediaPackage v2.

**Never sign origin requests (Nunca assinar solicitações de origem)**  
Essa configuração é chamada **Do not sign requests** (Não assinar solicitações) no console ou `never` na API, na CLI e no CloudFormation. Use essa configuração para desativar o OAC para todas as origens em todas as distribuições que usam esse OAC. Isso pode economizar tempo e esforço em comparação com a remoção individual de um OAC de todas as origens e distribuições que o usam. Com essa configuração, o CloudFront não assina nenhuma solicitação enviada à origem do MediaPackage v2.  
Para usar essa configuração, a origem do MediaPackage v2 deve estar acessível de forma pública. Se você usar essa configuração com uma origem do MediaPackage v2 que não esteja acessível de forma pública, o CloudFront não poderá acessar a origem. A origem do MediaPackage v2 retorna erros ao CloudFront e o CloudFront transmite esses erros aos visualizadores. Para ter mais informações, consulte o exemplo de política do MediaPackage v2 para [Políticas e permissões no MediaPackage](https://docs.aws.amazon.com/mediapackage/latest/userguide/policies-permissions.html) no *Guia do usuário do AWS Elemental MediaPackage*.

**Não substituir o cabeçalho `Authorization` do visualizador (cliente)**  
Essa configuração é chamada **Do not override authorization header** (Não substituir o cabeçalho de autorização) no console ou `no-override` na API, na CLI e no CloudFormation. Use essa configuração quando quiser que o CloudFront assine solicitações de origem somente quando a solicitação do visualizador correspondente não incluir um cabeçalho `Authorization`. Com essa configuração, o CloudFront transmite o cabeçalho `Authorization` da solicitação do visualizador quando houver, mas assina a solicitação de origem (adicionando seu próprio cabeçalho `Authorization`) quando a solicitação do visualizador não inclui um cabeçalho `Authorization`.  
Para transmitir o cabeçalho `Authorization` da solicitação do visualizador, você *deve* adicionar o cabeçalho `Authorization` a uma [política de cache](controlling-the-cache-key.md) para todos os comportamentos de cache que usam origens do MediaPackage v2 associadas a esse controle de acesso à origem.