Restringir o acesso a uma origem da AWS Elemental MediaPackage v2 - Amazon CloudFront

Restringir o acesso a uma origem da AWS Elemental MediaPackage v2

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.

Criar um novo OAC

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

Pré-requisitos

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 ter mais informações, consulte Usar um contêiner do MediaStore ou um canal do MediaPackage.

Conceder permissão de controle de acesso à origem para acessar a origem do MediaPackage v2

Antes de criar um controle de acesso à origem ou configurá-lo em uma distribuição do CloudFront, o OAC 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.

Para conceder permissão ao OAC para acessar a origem do MediaPackage v2, use uma política do IAM para possibilitar que a entidade principal de 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.

exemplo : política do IAM que permite acesso somente leitura a uma distribuição do CloudFront

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"} } } ] }
nota

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 (Campos de política de endpoint) no Guia do usuário do AWS Elemental MediaPackage.

Criar o OAC

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

Console
Para criar um OAC
  1. Faça login no AWS Management Console e abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home.

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

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

  4. 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.

    2. Em Signing behavior (Comportamento de assinatura), recomendamos que deixe a configuração padrão (Sign requests (recommended) [Solicitações de assinatura (recomendado)]. Para ter mais informações, consulte Configurações avançadas para controle de acesso à origem.

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

  6. 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.

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

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

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

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

  6. 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 AWS CloudFormation, use o tipo de recurso AWS::CloudFront::OriginAccessControl. O exemplo a seguir mostra a sintaxe do modelo AWS 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 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
  2. 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.

  3. 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
  2. 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.

  3. 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. 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 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 da distribuição 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

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 AWS 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 AWS 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 AWS 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.

Atenção

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 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 AWS 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.

Atenção

Para transmitir o cabeçalho Authorization da solicitação do visualizador, você deve adicionar o cabeçalho Authorization a uma política de cache para todos os comportamentos de cache que usam origens do MediaPackage v2 associadas a esse controle de acesso à origem.