Definición de permisos de funciones de Lambda con un rol de ejecución
Un rol de ejecución de una función de Lambda es un rol de AWS Identity and Access Management (IAM) que concede a la función permiso para acceder a servicios y recursos de AWS. Por ejemplo, puede crear un rol de ejecución que tenga permiso para enviar registros a Amazon CloudWatch y cargar datos de seguimiento en AWS X-Ray. Esta página proporciona información sobre cómo crear, ver y administrar el rol de ejecución de una función de Lambda.
Lambda asume automáticamente su rol de ejecución cuando invoca su función. Debería evitar llamar de forma manual a sts:AssumeRole
para que asuma el rol de ejecución en el código de función. Si su caso de uso requiere que el rol se asuma por sí mismo, debe incluir al rol como una entidad principal de confianza en la política de confianza de su rol. Para obtener más información acerca de cómo modificar una política de confianza de roles, consulte Modificación de una política de confianza de rol (consola) en la Guía del usuario de IAM.
Para que Lambda asuma correctamente su rol de ejecución, la política de confianza del rol debe especificar la entidad principal de servicio de Lambda (lambda.amazonaws.com
) como un servicio de confianza.
Temas
- Creación de un rol de ejecución en la consola de IAM
- Creación y administración de roles con la AWS CLI
- Otorgue privilegios de acceso mínimos a su rol de ejecución de Lambda
- Visualización y actualización de permisos en el rol de ejecución
- Trabajo con políticas administradas de AWS en el rol de ejecución
- Uso del ARN de la función de origen para controlar el comportamiento de acceso a la función
Creación de un rol de ejecución en la consola de IAM
De forma predeterminada, Lambda crea un rol de ejecución con permisos mínimos al crear una función en la consola de Lambda. En concreto, este rol de ejecución incluye la política administrada AWSLambdaBasicExecutionRole
, que otorga a su función permisos básicos para registrar eventos de registro en Registros de Amazon CloudWatch.
Por lo general, sus funciones necesitan permisos adicionales para realizar tareas más significativas. Por ejemplo, puede tener una función de Lambda que responda a un evento actualizando las entradas de una base de datos de Amazon DynamoDB. Puede crear un rol de ejecución con los permisos necesarios mediante la consola IAM.
Para crear un rol de ejecución en la consola de IAM
-
Abra la página Roles
en la consola de IAM. -
Elija Crear rol.
-
En Tipo de entidad de confianza, seleccione Servicio de AWS.
-
En Use case (Caso de uso), elija Lambda.
-
Elija Siguiente.
-
Seleccione las políticas administradas de AWS que desee adjuntar a su rol. Por ejemplo, si la función necesita acceder a DynamoDB, seleccione la política administrada AWSLambdaDynamoDBExecutionRole.
-
Elija Siguiente.
-
Introduzca un nombre de rol en el campo Role name y, a continuación, elija Create role.
Para obtener instrucciones, consulte Creating a role for an AWS service (console) (Creación de un rol para un servicio de [consola] de AWS) en la Guía del usuario de IAM.
Después de crear su rol de ejecución, adjúntelo a su función. Cuando crea una función en la consola de Lambda, puede adjuntar a la función cualquier rol de ejecución que haya creado previamente. Si desea adjuntar un nuevo rol de ejecución a una función existente, siga los pasos que se indican en Actualizar el rol de ejecución de una función.
Creación y administración de roles con la AWS CLI
Para crear un rol de ejecución con AWS Command Line Interface (AWS CLI), utilice el comando create-role. Al usar este comando, puede especificar las políticas de confianza en línea. La política de confianza de un rol otorga a la entidad principal especificada permiso para asumir el rol. En el siguiente ejemplo, usted concede a la entidad principal del servicio Lambda el permiso para que asuma su rol. Tenga en cuenta que los requisitos para estar por fuera de las comillas en la cadena JSON pueden variar según su shell.
aws iam create-role \ --role-name lambda-ex \ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
También puede definir la política de confianza para el rol con un archivo JSON aparte. En el siguiente ejemplo, trust-policy.json
es un archivo que se encuentra en el directorio actual.
ejemplo trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role \ --role-name lambda-ex \ --assume-role-policy-document file://trust-policy.json
Debería ver los siguientes datos de salida:
{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
Para agregar permisos al rol, use el comando attach-policy-to-role. Los comandos siguientes agregan la política administrada AWSLambdaBasicExecutionRole
al rol de ejecución lambda-ex
.
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Después de crear su rol de ejecución, adjúntelo a su función. Cuando crea una función en la consola de Lambda, puede adjuntar a la función cualquier rol de ejecución que haya creado previamente. Si desea adjuntar un nuevo rol de ejecución a una función existente, siga los pasos que se indican en Actualizar el rol de ejecución de una función.
Otorgue privilegios de acceso mínimos a su rol de ejecución de Lambda
Cuando crea por primera vez un rol de IAM para su función de Lambda durante la fase de desarrollo, a veces puede conceder permisos más allá de lo necesario. Antes de publicar la función en el entorno de producción, la práctica recomendada consiste en ajustar la política para incluir solo los permisos necesarios. Para obtener más información, consulte Aplicar permisos de privilegio mínimo en la Guía del usuario de IAM.
Utilice IAM Access Analyzer para ayudar a identificar los permisos necesarios para la política de rol de ejecución de IAM. IAM Access Analyzer revisa sus registros de AWS CloudTrail en el intervalo de fechas especificado y genera una plantilla de política con solo los permisos que la función utilizó durante ese tiempo. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla al rol de IAM. De esta forma, solo concede los permisos que el rol necesita para interactuar con los recursos de AWS para su caso de uso específico.
Para obtener más información, consulte Generar políticas basadas en la actividad de acceso en la Guía del usuario de IAM.