¿Cuál es una buena manera de restringir el acceso a un servicio solo por mi AWS Lambda?

Modelo de permisos de AWS Lambda

Para que las aplicaciones basadas en AWS Lambda de extremo a extremo funcionen, debe administrar varios permisos. Por ejemplo:

  • Para las fuentes de eventos, a excepción de los servicios basados ​​en secuencias (Amazon Kinesis Streams y DynamoDB streams), debe otorgar permisos de origen de evento para invocar su función AWS Lambda.
  • Para las fuentes de eventos basadas en transmisión (Amazon Kinesis Streams y DynamoDB streams), AWS Lambda sondea las transmisiones en su nombre y lee nuevos registros en la transmisión, por lo que debe otorgar permisos de AWS Lambda para las acciones de transmisión relevantes.
  • Cuando se ejecuta su función Lambda, puede acceder a los recursos de AWS en su cuenta (por ejemplo, leer un objeto de su bucket de S3). AWS Lambda ejecuta su función Lambda en su nombre al asumir el rol que proporcionó al momento de crear la función Lambda. Por lo tanto, debe otorgarle al rol los permisos necesarios que necesita su función Lambda, como permisos para que Amazon S3 lea un objeto.

Las siguientes secciones describen la administración de permisos.

Temas

  • Administrar permisos: uso de un rol de IAM (rol de ejecución)
  • Administrar permisos: uso de una política de función Lambda

Administrar permisos: uso de un rol de IAM (rol de ejecución)

Cada función Lambda tiene una función IAM (función de ejecución) asociada a ella. Usted especifica el rol de IAM cuando crea su función Lambda. Los permisos que otorga a este rol determinan lo que AWS Lambda puede hacer cuando asume el rol. Hay dos tipos de permisos que otorga al rol de IAM:

  • Si su código de función Lambda accede a otros recursos de AWS, como leer un objeto de un bucket de S3 o escribir registros en CloudWatch Logs, debe otorgar permisos para las funciones relevantes de Amazon S3 y CloudWatch para el rol.
  • Si el origen del evento se basa en transmisiones (transmisiones de Amazon Kinesis y DynamoDB), AWS Lambda sondea estas transmisiones en su nombre. AWS Lambda necesita permisos para sondear la transmisión y leer nuevos registros en la transmisión, por lo que debe otorgar los permisos relevantes para este rol.

Para obtener más información sobre los roles de IAM, consulte Roles (delegación y federación) en la Guía del usuario de IAM .

Importante

El usuario que crea el rol de IAM está, de hecho, pasando permisos a AWS Lambda para asumir este rol, lo que requiere que el usuario tenga permisos para la acción iam:PassRole . Si un usuario administrador está creando esta función, no necesita hacer nada adicional para configurar permisos para la acción iam:PassRole porque el usuario administrador tiene permisos completos, incluida la acción iam:PassRole .

Para simplificar el proceso de creación de un rol de ejecución, AWS Lambda proporciona las siguientes políticas de permisos administrados (predefinidos) de AWS que puede usar. Estas políticas incluyen permisos comunes para escenarios específicos:

  • AWSLambdaBasicExecutionRole : otorga permisos solo para las acciones de Amazon CloudWatch Logs para escribir registros. Puede usar esta política si su función Lambda no accede a ningún otro recurso de AWS, excepto escribir registros.
  • AWSLambdaKinesisExecutionRole : otorga permisos para las acciones de Amazon Kinesis Streams y las acciones de CloudWatch Logs. Si está escribiendo una función Lambda para procesar eventos de transmisión de Amazon Kinesis, puede adjuntar esta política de permisos.
  • AWSLambdaDynamoDBExecutionRole : otorga permisos para acciones de transmisiones de DynamoDB y acciones de CloudWatch Logs. Si está escribiendo una función Lambda para procesar eventos de transmisión de DynamoDB, puede adjuntar esta política de permisos.
  • AWSLambdaVPCAccessExecutionRole : otorga permisos para acciones de Amazon Elastic Compute Cloud (Amazon EC2) para administrar interfaces de red elásticas (ENI). Si está escribiendo una función Lambda para acceder a recursos en una VPC en el servicio Amazon Virtual Private Cloud (Amazon VPC), puede adjuntar esta política de permisos. La política también otorga permisos para las acciones de CloudWatch Logs para escribir registros. Puede encontrar estas políticas de permisos administrados por AWS en la consola de IAM. Busque estas políticas y podrá ver los permisos que otorga cada una de estas políticas.

Administrar permisos: uso de una política de función Lambda

Todas las fuentes de eventos compatibles, excepto los servicios basados ​​en transmisión (Amazon Kinesis y transmisión de DynamoDB), invocan su función Lambda (el modelo de inserción ), siempre que otorgue los permisos necesarios. Por ejemplo, si desea que Amazon S3 invoque su función Lambda cuando los objetos se crean en un depósito, Amazon S3 necesita permisos para invocar su función Lambda.

Puede otorgar estos permisos a través de las políticas de función. AWS Lambda proporciona API para que pueda administrar los permisos en una política de función. Por ejemplo, vea AddPermission.

También puede otorgar permisos de cuentas cruzadas utilizando la política de función. Por ejemplo, si una aplicación definida por el usuario y la función Lambda que invoca pertenecen a la misma cuenta de AWS, no necesita otorgar permisos explícitos. De lo contrario, la cuenta de AWS que posee la función Lambda debe permitir permisos de cuenta cruzada en la política de permisos asociada con la función Lambda.

Nota

En lugar de utilizar una política de función Lambda, puede crear otra función de IAM que otorgue a los orígenes de eventos (por ejemplo, Amazon S3 o DynamoDB) permisos para invocar su función Lambda. Sin embargo, es posible que las políticas de recursos sean más fáciles de configurar y le permitan rastrear qué fuentes de eventos tienen permisos para invocar su función Lambda.

Para obtener más información sobre las políticas de función de Lambda, consulte Uso de políticas basadas en recursos para AWS Lambda (Políticas de función de Lambda). Para obtener más información sobre los permisos de Lambda, consulte Autenticación y control de acceso para AWS Lambda.

Lectura sugerida

Si es nuevo en AWS Lambda, le sugerimos que lea todos los temas de la sección Cómo funciona para familiarizarse con Lambda. El siguiente tema es el entorno de ejecución de Lambda y las bibliotecas disponibles.

Después de leer todos los temas en la sección Cómo funciona, le recomendamos que revise Creación de aplicaciones basadas en AWS Lambda, intente el ejercicio Primeros pasos y luego explore los Casos de uso. Cada caso de uso proporciona instrucciones paso a paso para que pueda configurar la experiencia de extremo a extremo.

Copiar desde StackOverflow: ¿qué uso de la función ip AWS lambda ?, pero s/MySQL/service :

Tiene una instancia de MySQL que no está en la infraestructura de AWS. Desea limitar el acceso a la instancia de MySQL por la IP de la función Lambda a su instancia local. Solo puede usar un firewall local para asegurar la instancia.

Dado que su caso de uso requiere acceso a Internet desde Lambda a su instancia de MySQL en Internet público, deberá configurar una puerta de enlace NAT para que su función Lambda acceda a Internet. :

si su función Lambda requiere acceso a Internet …, puede configurar una instancia NAT dentro de su VPC o puede usar la puerta de enlace NAT de Amazon VPC. Para obtener más información, consulte Puertas de enlace NAT en la Guía del usuario de Amazon VPC.

El uso de una configuración de NAT Gateway permite que sus solicitudes de Lambda provengan de la IP fija de NAT Gateway. Si asigna un Número de IP elástico a la puerta de enlace NAT aquí, puede especificar esa combinación de IP / puerto en su firewall para asegurar el acceso a su instancia de SQL local.