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

Restringir o acesso a uma origem da AWS Elemental MediaStore

O CloudFront fornece controle de acesso à origem (OAC) para restringir o acesso a uma origem do AWS Elemental MediaStore.

Criar um controle de acesso à origem

Conclua as etapas descritas nos tópicos a seguir para configurar um novo controle de acesso à origem 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 MediaStore.

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

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 MediaStore. Faça isso depois de criar uma distribuição do CloudFront, mas antes de adicionar o OAC à origem do MediaStore na configuração de distribuição.

Para conceder permissão ao OAC para acessar a origem do MediaStore, use uma política de contêiner do MediaStore para possibilitar que a entidade principal de serviço do CloudFront (cloudfront.amazonaws.com) acesse a origem. Use um elemento Condition na política para permitir que o CloudFront acesse o contêiner do MediaStore somente quando a solicitação for em nome da distribuição do CloudFront que contém a origem do MediaStore.

Veja a seguir exemplos de políticas de contêiner do MediaStore que permitem que um OAC do CloudFront acesse uma origem do MediaStore.

exemplo Política de contêiner do MediaStore que permite acesso somente leitura a um OAC do CloudFront
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "mediastore:GetObject" ], "Resource": "arn:aws:mediastore:<region>:111122223333:container/<container name>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" }, "Bool": { "aws:SecureTransport": "true" } } } ] }
exemplo Política de contêiner do MediaStore que permite acesso de leitura e gravação a um OAC do CloudFront
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "mediastore:GetObject", "mediastore:PutObject" ], "Resource": "arn:aws:mediastore:<region>:111122223333:container/<container name>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" }, "Bool": { "aws:SecureTransport": "true" } } } ] }
nota

Para permitir o acesso de gravação, você deve configurar Allowed HTTP methods (Métodos HTTP permitidos) para incluirPUT nas configurações de comportamento de sua distribuição do CloudFront.

Criar o controle de acesso à origem

Para criar um OAC, você pode usar o AWS Management Console, o AWS CloudFormation, a AWS CLI ou a API do CloudFront.

Console
Como criar um controle de acesso à origem
  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 control setting (Criar configuração de controle), faça o seguinte:

    1. No painel Details (Detalhes), insira um Name (Nome) e (opcionalmente) uma Description (Descrição) para o controle de acesso à origem.

    2. No painel Settings (Configurações), recomendamos que você 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. Selecione MediaStore no menu suspenso Origin type (Tipo de origem).

  6. Escolha Criar.

    Depois que o OAC for criado, anote o Name (Nome). Você precisará dele no procedimento a seguir.

Como adicionar um controle de acesso à origem a uma origem do MediaStore 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 MediaStore à qual você deseja adicionar o OAC e, depois, selecione a guia Origins (Origens).

  3. Selecione a origem do MediaStore à 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 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 de bucket do MediaStore.

CloudFormation

Para criar um controle de acesso à origem (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 controle de acesso à origem.

Type: AWS::CloudFront::OriginAccessControl Properties: OriginAccessControlConfig: Description: An optional description for the origin access control Name: ExampleOAC OriginAccessControlOriginType: mediastore 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 MediaStore em uma distribuição do CloudFront.

Como anexar um OAC a uma origem do MediaStore 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 MediaStore.

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

API

Para criar um controle de acesso à origem 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, você pode anexá-lo a uma origem do MediaStore em uma distribuição usando uma das seguintes chamadas de API:

Para as duas chamadas de API, forneça o ID de controle de acesso à origem 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 recurso de controle de acesso à origem 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 controle de acesso à origem 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 MediaStore.

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 controle de acesso à origem para todas as origens em todas as distribuições que usam esse controle. Isso pode economizar tempo e esforço em comparação com a remoção individual de um controle de acesso à origem 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 MediaStore.

Atenção

Para usar essa configuração, a origem do MediaStore deve estar acessível ao público. Se você usar essa configuração com uma origem do MediaStore que não esteja acessível ao público, o CloudFront não poderá acessar a origem. A origem do MediaStore retorna erros ao CloudFront e o CloudFront transmite esses erros aos visualizadores. Para ter mais informações, consulte o exemplo de política de contêiner do MediaStore para acesso público de leitura por HTTPS.

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 MediaStore associadas a esse controle de acesso à origem.