Restricción del acceso a un origen de URL de función de AWS Lambda
CloudFront proporciona un control de acceso de origen (OAC) para restringir el acceso a un origen de URL de función de Lambda.
Creación de un nuevo OAC
Complete los pasos que se describen en los siguientes temas para configurar un nuevo OAC en CloudFront.
nota
Si utiliza los métodos PUT
o POST
con la URL de función de Lambda, los usuarios deben incluir el valor del hash de carga en el encabezado x-amz-content-sha256
al enviar la solicitud a CloudFront. Lambda no admite las cargas sin firmar.
Temas
Requisitos previos
Antes de crear y configurar OAC, debe tener una distribución de CloudFront con una URL de función de Lambda como el origen. Para obtener más información, consulte Uso de una URL de función de Lambda.
Concesión de permiso al OAC para acceder a la URL de función de Lambda
Antes de crear un OAC o configurarlo en una distribución de CloudFront, asegúrese de que el OAC tiene permiso para acceder a la URL de función de Lambda. Realice esta acción después de crear una distribución de CloudFront, pero antes de agregar el OAC a la URL de función de Lambda en la configuración de distribución.
nota
Para actualizar la política de IAM para la URL de función de Lambda, debe usar la AWS Command Line Interface (AWS CLI). En este momento, no se admite la edición de la política de IAM en la consola de Lambda.
El siguiente comando de la AWS CLI concede a la entidad principal de servicio de CloudFront (cloudfront.amazonaws.com
) acceso a la URL de función de Lambda. El elemento Condition
en la política permite que CloudFront acceda a Lambda solo cuando la solicitud sea en nombre de la distribución de CloudFront que contiene la URL de función de Lambda.
ejemplo : comando de la AWS CLI para actualizar una política con el fin de permitir el acceso de solo lectura a un OAC de CloudFront
El siguiente comando de la AWS CLI permite que la distribución de CloudFront (
) acceda a su E1PDK09ESKHJWT
de Lambda.FUNCTION_URL_NAME
aws lambda add-permission \ --statement-id "AllowCloudFrontServicePrincipal" \ --action "lambda:InvokeFunctionUrl" \ --principal "cloudfront.amazonaws.com" \ --source-arn "arn:aws:cloudfront::
123456789012
:distribution/E1PDK09ESKHJWT
" \ --function-nameFUNCTION_URL_NAME
nota
Si crea una distribución y no tiene permiso para la URL de función de Lambda, puede elegir el comando de copia de la CLI en la consola de CloudFront y, a continuación, introducir este comando desde el terminal de la línea de comandos. Para obtener más información, consulte Concesión de acceso a las funciones a los Servicios de AWS en la Guía para desarrolladores de AWS Lambda.
Creación del OAC
Para crear un OAC, puede utilizar AWS Management Console, AWS CloudFormation, AWS CLI o la API de CloudFront.
Configuración avanzada para el control de acceso de origen
La característica de OAC de CloudFront incluye configuraciones avanzadas que están pensadas solo para casos de uso específicos. Utilice la configuración recomendada a menos que tenga una necesidad específica de la configuración avanzada.
El OAC contiene una configuración denominada Comportamiento de firma (en la consola) o SigningBehavior
(en la API, CLI y AWS CloudFormation). Esta configuración proporciona las siguientes opciones:
- Firmar siempre las solicitudes de origen (configuración recomendada)
-
Recomendamos utilizar esta configuración, denominada Sign requests (recommended) (Firmar solicitudes [recomendado]) en la consola o
always
en la API, la CLI y AWS CloudFormation. Con esta configuración, CloudFront siempre firma todas las solicitudes que envía a la URL de función de Lambda. - Nunca firmar solicitudes de origen
-
Esta configuración se denomina Do not sign requests (No firmar solicitudes) en la consola o
never
en la API, la CLI y AWS CloudFormation. Utilice esta configuración con el fin de desactivar el OAC para todos los orígenes en todas las distribuciones que utilizan este OAC. Esto puede ahorrar tiempo y esfuerzo en comparación con la eliminación de un OAC de todos los orígenes y distribuciones que lo utilizan, uno por uno. Con esta configuración, CloudFront no ninguna solicitud que envía a la URL de función de Lambda.aviso
Para utilizar esta configuración, la URL de función de Lambda debe ser de acceso público. Si utiliza esta configuración con una URL de función de Lambda que no es de acceso público, CloudFront no podrá acceder al origen. La URL de función de Lambda devuelve errores a CloudFront y CloudFront pasa esos errores a los lectores. Para obtener más información, consulte Modelo de seguridad y autenticación para URL de funciones de Lambda en la Guía del usuario de AWS Lambda.
- No anular el encabezado
Authorization
del lector (cliente) -
Esta configuración se denomina Do not override authorization header (No anular el encabezado authorization en la consola o
no-override
en la API, la CLI y AWS CloudFormation. Utilice esta configuración cuando desee que CloudFront firme las solicitudes de origen solo cuando la solicitud del lector correspondiente no incluya un encabezadoAuthorization
. Con esta configuración, CloudFront pasa el encabezadoAuthorization
de la solicitud del lector cuando hay uno, pero firma la solicitud de origen (agrega su propio encabezadoAuthorization
) cuando la solicitud del lector no incluye un encabezadoAuthorization
.aviso
-
Si usa esta configuración, debe especificar la firma de Signature Version 4 para la URL de la función de Lambda en lugar del nombre o CNAME de la distribución de CloudFront. Cuando CloudFront reenvíe el encabezado
Authorization
de la solicitud del lector a la URL de la función de Lambda, Lambda validará la firma con respecto al host del dominio de la URL de Lambda. Si la firma no se basa en el dominio de la URL de Lambda, el host de la firma no coincidirá con el host utilizado por el origen de la URL de Lambda. Esto significa que la solicitud producirá un error, lo que provocará un error de validación de firma.
-
Para pasar el encabezado
Authorization
de la solicitud del lector, debe agregar el encabezadoAuthorization
a una política de caché para todos los comportamientos de caché que utilizan las URL de función de Lambda asociadas con este control de acceso de origen.
-