Afinar las secciones de recursos y condiciones de las políticas
Puede restringir el ámbito de los permisos de un usuario mediante la especificación de recursos y condiciones en una política de AWS Identity and Access Management (IAM). Todas las acciones en una política admiten una combinación de tipos de recursos y condiciones 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, 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.
Por tipo de recurso, el diseño general de cómo restringir el alcance de una acción es el siguiente:
Funciones: 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.
-
Asignaciones de orígenes de eventos: el ARN puede restringir las acciones a recursos de asignación de orígenes de eventos específicos. Las asignaciones de orígenes de eventos siempre están asociadas a una función. También puede usar la condición
lambda:FunctionArn
para restringir acciones por función asociada. Capas: las acciones relacionadas con el uso y los permisos de capa actúan sobre una versión de una capa.
Configuración de firma de código: el ARN puede restringir las acciones a recursos de configuración de firma de código específicos.
Etiquetas: utilice condiciones de etiqueta estándar. Para obtener más información, consulte Control de acceso basado en atributos para Lambda.
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 la 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
-
Configuración de firma de código:
arn:aws:lambda:
us-west-2
:123456789012
:code-signing-config:my-csc
Por ejemplo, la siguiente política permite que un usuario en una Cuenta de AWS 123456789012
invoque una función denominada my-function
en la región de AWS Oeste de EE. UU. (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:
.
Secciones
Comprensión de la sección de condiciones de las políticas
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 que admiten todas las acciones, Lambda define tipos de condiciones que puede utilizar para restringir los valores de parámetros adicionales en algunas acciones.
Por ejemplo, la condición lambda:Principal
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 a los temas de Amazon Simple Notification Service (Amazon SNS) para invocar 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 Acciones, recursos y claves de condición para los servicios de AWS en la Referencia de autorización de servicios.
Hacer referencia a las funciones en la sección de recursos de las políticas
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 la referencia de la política JSON de IAM en la Guía del usuario 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 y comportamientos de funciones de IAM compatibles
Las acciones definen lo que se puede permitir mediante las políticas de IAM. Para obtener una lista de acciones admitidas en Lambda, consulte Acciones, recursos y claves de condición para AWS Lambda en la Referencia de autorizaciones de servicio. En la mayoría de los casos, cuando una acción de IAM permite una acción de la API de Lambda, el nombre de la acción de IAM es el mismo que el nombre de la acción de la API de Lambda, con las siguientes excepciones:
Acción de la API | Acción de IAM |
---|---|
Invoke | lambda:InvokeFunction |
lambda:GetLayerVersion |
Además de los recursos y condiciones definidos en la referencia de autorizaciones de servicio, Lambda admite los siguientes recursos y condiciones para determinadas acciones. Muchos de ellos están relacionados con las funciones de referencia en la sección de recursos de las políticas. 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.
Acción | Recurso | Condición |
---|---|---|
Invocar: permiso: |
Versión de función Alias de función |
N/A |
N/A |
|
|
Alias de función |
N/A |