Recursos y condición para acciones de Lambda - AWS Lambda

Recursos y condición para acciones de Lambda

Puede restringir el ámbito de los permisos de un usuario mediante la especificación de recursos y condiciones en una política de IAM. Todas las acciones de API admiten una combinación de tipos de condición y recursos que varía en función del comportamiento de la acción.

Cada instrucción de una política de IAM concede permiso para realizar una acción en un recurso. Cuando la acción no actúa sobre un recurso designado, o cuando se concede permiso para realizar la acción en todos los recursos, el valor del recurso en la política es un comodín (*). Para muchas acciones de API, puede restringir los recursos que un usuario puede modificar si especifica el nombre de recurso de Amazon (ARN) de un recurso o un patrón de ARN que coincida con varios recursos.

Para restringir los permisos por recurso, especifique el recurso por ARN.

Formato de ARN de recurso de Lambda

  • Función: arn:aws:lambda:us-west-2:123456789012:function:my-function

  • Versión de la función: arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • Alias de función: arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • Asignación de origen de eventos: arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • Capa: arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • Versión de la capa: arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

Por ejemplo, la siguiente política permite que un usuario de la cuenta 123456789012 invoque una función denominada my-function en la región EE. UU. Oeste (Oregón).

ejemplo invocar política de función

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

Se trata de un caso especial donde el identificador de la acción (lambda:InvokeFunction) difiere de la operación de la API (Invoke). Para otras acciones, el identificador de la acción es el nombre de la operación con el prefijo lambda:.

Condiciones de política

Las condiciones son un elemento opcional de la política que aplica lógica adicional para determinar si se permite o no una acción. Además de las condiciones comunes compatibles con todas las acciones, Lambda define tipos de condición que puede utilizar para restringir los valores de parámetros adicionales en algunas acciones.

Por ejemplo, la condición lambda:Principal le permite restringir el servicio o la cuenta a los que un usuario puede conceder acceso de invocación en la política basada en recursos de una función. La siguiente política permite a un usuario conceder permiso para que los temas de SNS invoquen una función denominada test.

ejemplo administrar permisos de una política de función

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

La condición requiere que el principal sea Amazon SNS y no otro servicio o cuenta. El patrón de recursos requiere que el nombre de la función sea test e incluye un número de versión o alias. Por ejemplo, test:v1.

Para obtener más información sobre los recursos y las condiciones para Lambda y otros servicios de AWS, consulte Claves de condiciones, recursos y acciones en la Guía del usuario de IAM.

Nombres de recursos de función

Puede hacer referencia a una función de Lambda en la instrucción de una política con un nombre de recurso de Amazon (ARN). El formato de un ARN de función depende de si se hace referencia a toda la función (incompleto), o a la versión o el alias de la función (completo).

Cuando realizan llamadas a la API de Lambda, los usuarios pueden especificar una versión o un alias al pasar el ARN de la versión o el alias en el parámetro GetFunction de FunctionName, o al establecer un valor en el parámetro GetFunction de Qualifier. Lambda toma decisiones de autorización comparando el elemento de recurso de la política de IAM con el FunctionName y el Qualifier pasado en las llamadas a la API. Si hay un error de coincidencia, Lambda deniega la solicitud.

Tanto si permite o deniega una acción en la función, debe utilizar los tipos de ARN de función correctos en la instrucción de la política para obtener los resultados esperados. Por ejemplo, si su política hace referencia al ARN incompleto, Lambda acepta las solicitudes que hacen referencia al ARN incompleto, pero deniega las solicitudes que hacen referencia a un ARN completo.

nota

No se puede utilizar un carácter comodín para que coincida con el ID de cuenta. Para obtener más información sobre la sintaxis aceptada, consulte Referencia de políticas JSON de IAM.

ejemplo permitir la invocación de un arn incompleto

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

Si su política hace referencia a un ARN completo específico, Lambda acepta las solicitudes que hacen referencia al ARN, pero deniega las solicitudes que hagan referencia a un ARN incompleto o a otro ARN completo, como myFunction:2.

ejemplo permitir la invocación de un arn completo específico

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

Si su política hace referencia a cualquier ARN completo mediante :*, Lambda acepta cualquier ARN completo, pero deniega las solicitudes que hagan referencia a un ARN incompleto.

ejemplo permitir la invocación de cualquier arn completo

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

Si su política hace referencia a cualquier ARN mediante *, Lambda acepta cualquier ARN completo o incompleto.

ejemplo permitir la invocación de cualquier arn completo o incompleto

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

Acciones de función

Las acciones que operan sobre una función se pueden restringir a una función específica por ARN de función, versión o alias, tal y como se describe en la siguiente tabla. Las acciones que no admiten restricciones de recursos solo pueden concederse para todos los recursos (*).

Funciones
Acción Recurso Condición

AddPermission

RemovePermission

Función

Versión de función

Alias de función

lambda:Principal

Invocación

Permiso: lambda:InvokeFunction

Función

Versión de función

Alias de función

Ninguno

CreateFunction

UpdateFunctionConfiguration

Función

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionConfiguration

GetPolicy

ListAliases

ListVersionsByFunction

PublishVersion

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

Función

Ninguno

GetAccountSettings

ListFunctions

ListTags

TagResource

UntagResource

*

Ninguno

Acciones de asignación de origen de eventos

Para los mapeos de origen de eventos, los permisos de eliminación y actualización se pueden restringir a un origen de eventos específico. La condición lambda:FunctionArn le permite restringir las funciones que un usuario puede configurar para invocar un origen de eventos.

Para estas acciones, el recurso es el mapeo de origen de eventos, por lo que Lambda proporciona una condición que permite restringir el permiso según la función que invoca el mapeo de fuente de eventos.

Mapeos de origen de eventos
Acción Recurso Condición

DeleteEventSourceMapping

UpdateEventSourceMapping

Mapeo de origen de eventos

lambda:FunctionArn

CreateEventSourceMapping

*

lambda:FunctionArn

GetEventSourceMapping

ListEventSourceMappings

*

Ninguno

Acciones de capa

Las acciones de capa permiten restringir las capas que un usuario puede administrar o utilizar con una función. Las acciones relacionadas con el uso y los permisos de capa actúan sobre una versión de una capa, mientras que PublishLayerVersion actúa sobre un nombre de capa. Pueden utilizar cualquiera de ellas con comodines para restringir las capas que un usuario puede utilizar por nombre.

nota

Nota: la acción GetLayerVersion también explica lo siguiente:GetLayerVersionByArn. Lambda no es compatible con GetLayerVersionByArn como una acción de IAM.