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.
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
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 de 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 de función admitidas
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 se conceden para todos los recursos (*
).
Acciones de función | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Acción | Recurso | Condición | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función Versión de función Alias de función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Permiso: |
Función Versión de función Alias de función |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteFunctionCodeSigningConfig |
Función |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función Alias de función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteFunctionEventInvokeConfig |
Función |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteProvisionedConcurrencyConfig |
Alias de función Versión de función |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ninguna |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Función |
|
Acciones de asignación de orígenes de eventos admitidos
Para las asignaciones de orígenes de eventos, puede restringir los permisos de eliminación y actualización 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.
Acciones de asignación de origen de eventos | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Acción | Recurso | Condición | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Asignación de orígenes de eventos |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ninguna |
Acciones de capas admitidas
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
La acción GetLayerVersion también explica lo siguiente: GetLayerVersionByArn. Lambda no es compatible con GetLayerVersionByArn
como una acción de IAM.
Acciones de capa | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Acción | Recurso | Condición | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Versión de la capa |
Ninguna | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Capa |
Ninguna | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ninguna |