Considerações sobre segurança para pontos de acesso do S3 Object Lambda
Com o Amazon S3 Object Lambda, você pode realizar transformações personalizadas em dados à medida que deixa o S3 usando a escala e a flexibilidade do AWS Lambda como uma plataforma de computação. O S3 e o Lambda permanecem seguros por padrão, mas, para manter a segurança, é necessária uma consideração especial do autor da função do Lambda. O S3 Object Lambda exige que todo o acesso seja feito por entidades autenticadas (sem acesso anônimo) e por HTTPS.
Para mitigar os riscos de segurança, recomendamos o seguinte:
-
Defina o escopo do perfil de execução do Lambda com o menor conjunto de permissões possível.
-
Sempre que possível, verifique se a função do Lambda acessa o Amazon S3 por meio do URL pré-assinado fornecido.
Configurar políticas do IAM
Os pontos de acesso do S3 são compatíveis com as políticas de recursos do AWS Identity and Access Management (IAM) que permitem controlar o uso do ponto de acesso por recurso, usuário ou por outras condições. Para obter mais informações, consulte Configurar políticas do IAM para pontos de acesso do Object Lambda.
Comportamento de criptografia
Como os pontos de acesso do Object Lambda usam o Amazon S3 e o AWS Lambda, há diferenças no comportamento de criptografia. Para obter mais informações sobre o comportamento de criptografia padrão do S3, consulte Definir o comportamento padrão da criptografia para os buckets do Amazon S3.
-
Quando você usa a criptografia do lado do servidor do S3 com pontos de acesso do Object Lambda, o objeto é descriptografado antes de ser enviado para o Lambda. Depois que o objeto é enviado para o Lambda, ele é processado sem criptografia (no caso de uma solicitação
GET
ouHEAD
). -
Para evitar que a chave de criptografia seja registrada em log, o S3 rejeitará solicitações
GET
eHEAD
para objetos criptografados usando criptografia no servidor com chaves fornecidas pelo cliente (SSE-C). No entanto, a função do Lambda ainda pode recuperar esses objetos desde que tenha acesso à chave fornecida pelo cliente. -
Ao usar a criptografia do lado do cliente do S3 com pontos de acesso do Object Lambda, verifique se o Lambda tem acesso à chave de criptografia para descriptografar e criptografar novamente o objeto.
Segurança dos pontos de acesso
O S3 Object Lambda usa dois pontos de acesso: um ponto de acesso do Object Lambda e um ponto de acesso padrão do S3, chamado de ponto de acesso de suporte. Quando você faz uma solicitação a um ponto de acesso do Object Lambda, o S3 chama o Lambda em seu nome ou delega a solicitação ao ponto de acesso de suporte, de acordo com a configuração do S3 Object Lambda. Quando o Lambda é chamado para uma solicitação, o S3 gera um URL pré-assinado para seu objeto em seu nome por meio do ponto de acesso de suporte. Sua função do Lambda receberá esse URL como entrada quando a função for chamada.
É possível definir sua função do Lambda para usar esse URL pré-assinado ao recuperar o objeto original, em vez de chamar o S3 diretamente. Usando esse modelo, você pode aplicar melhores limites de segurança a seus objetos. É possível limitar o acesso direto a objetos por meio de buckets do S3 ou de pontos de acesso do S3 a um conjunto limitado de funções ou usuários do IAM. Essa abordagem também protege suas funções do Lambda de estarem sujeitas ao problema Confused Deputy, no qual uma função mal configurada com permissões diferentes das permissões de seu chamador poderia permitir ou negar acesso a objetos quando não deveria.
Acesso público do ponto de acesso do Object Lambda
O S3 Object Lambda não permite acesso anônimo ou público, pois o Amazon S3 precisa autorizar sua identidade para concluir qualquer solicitação do S3 Object Lambda. Ao chamar solicitações por um ponto de acesso do Object Lambda, é necessário ter a permissão lambda:InvokeFunction
para a função do Lambda configurada. Da mesma forma, ao chamar outras operações de API por um ponto de acesso do Object Lambda, você precisa ter as permissões s3:*
necessárias.
Sem essas permissões, as solicitações para chamar o Lambda ou delegar ao S3 apresentarão falha com erros HTTP 403 (Proibido). Todo o acesso deve ser feito por entidades autenticadas. Se precisar de acesso público, use o Lambda@Edge como uma possível alternativa. Para obter mais informações, consulte Personalizar o conteúdo na borda com o Lambda@Edge no Guia do desenvolvedor do Amazon CloudFront.
Endereços IP de ponto de acesso do Object Lambda
As sub-redes de describe-managed-prefix-lists
são compatíveis com endpoints de nuvem privada virtual (VPC) do gateway e são relacionadas à tabela de roteamento de endpoints da VPC. Como o ponto de acesso do Object Lambda não é compatível com a VPC do gateway, seus intervalos de IP estão ausentes. Os intervalos ausentes pertencem ao Amazon S3, mas não são compatíveis com endpoints da VPC de gateway. Para obter mais informações sobre describe-managed-prefix-lists
, consulte DescribeManagedPrefixLists na Referência da API do Amazon EC2 e Intervalos de endereços IP da AWS na Referência geral da AWS.
Suporte ao CORS de ponto de acesso do Object Lambda
Ao receber uma solicitação de um navegador ou quando a solicitação inclui um cabeçalho Origin
, o S3 Object Lambda sempre adiciona um campo de cabeçalho “AllowedOrigins":"*"
.
Para ter mais informações, consulte Usar o compartilhamento de recursos de origem cruzada (CORS).