Ressources et conditions pour les actions Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ressources et conditions pour les actions Lambda

Vous pouvez restreindre la portée des autorisations d'un utilisateur en spécifiant des ressources et des conditions dans une stratégie IAM AWS Identity and Access Management . Chaque action d'une politique prend en charge une combinaison de types de ressources et de conditions qui varie en fonction du comportement de l'action.

Chaque déclaration de stratégie IAM accorde une autorisation pour une action effectuée sur une ressource. Lorsque l'action n'agit pas sur une ressource nommée, ou lorsque vous accordez l'autorisation d'effectuer l'action sur toutes les ressources, la valeur de la ressource de la stratégie est un caractère générique (*). Pour la plupart des actions, vous pouvez limiter les ressources qu'un utilisateur peut modifier en spécifiant l'Amazon Resource Name (ARN) d'une ressource ou un modèle ARN qui correspond à plusieurs ressources.

Pour limiter les autorisations par ressource, spécifiez la ressource par son ARN.

Format ARN de ressource Lambda
  • Fonction – arn:aws:lambda:us-west-2:123456789012:function:my-function

  • Version de la fonction – arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • Alias de la fonction – arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • Mappage de source d'événement – arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

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

  • Version de la couche – arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

Par exemple, la politique suivante permet Compte AWS 123456789012 à un utilisateur d'appeler une fonction nommée my-function dans la AWS région USA Ouest (Oregon).

Exemple appeler une stratégie de fonction
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

Il s'agit d'un cas particulier, où l'identificateur de l'action (lambda:InvokeFunction) diffère de l'opération d'API (Appeler). Pour les autres actions, l'identificateur de l'action est le nom de l'opération avec le préfixe lambda:.

Conditions de stratégie

Les conditions sont facultatives dans la stratégie, et appliquent une logique supplémentaire pour déterminer si une action est autorisée. Outre les conditions courantes prises en charge par toutes les actions, Lambda définit les types de condition que vous pouvez utiliser pour restreindre les valeurs des paramètres supplémentaires sur certaines actions.

Par exemple, la condition lambda:Principal permet de restreindre le service ou le compte auquel un utilisateur peut accorder l'accès selon la stratégie basée sur les ressources d'une fonction. La stratégie suivante permet à un utilisateur d'accorder une autorisation à des rubriques Amazon Simple Notification Service (Amazon SNS) d'appeler une fonction nommée test.

Exemple gestion des autorisations d'une stratégie de fonction
{ "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 condition nécessite que le principal soit Amazon SNS et pas un autre service ou compte. Le modèle de ressource exige que le nom de la fonction soit test et inclue un numéro de version ou un alias. Par exemple, test:v1.

Pour plus d'informations sur les ressources et les conditions de Lambda et d'autres AWS services, consultez la section Actions, ressources et clés de condition pour les AWS services dans la référence d'autorisation de service.

Noms de ressource de fonction

Vous référencez une fonction Lambda dans une déclaration de stratégie à l'aide d'un nom Amazon Resource Name (ARN). Le format de l'ARN d'une fonction dépend du fait que vous référenciez la fonction entière, la version d'une fonction ou un alias.

Lors des appels d'API Lambda, les utilisateurs peuvent spécifier une version ou un alias en transmettant un ARN de version ou un ARN d'alias dans le GetFunctionFunctionNameparamètre, ou en définissant une valeur dans le GetFunctionQualifierparamètre. Lambda prend des décisions d'autorisation en comparant l'élément de ressource dans la stratégie IAM au FunctionName et au Qualifier transmis dans les appels d'API. En cas d'incompatibilité, Lambda refuse la demande.

Que vous autorisiez ou refusiez une action sur votre fonction, vous devez utiliser les types ARN de fonction appropriés dans votre déclaration de stratégie pour obtenir les résultats attendus. Par exemple, si votre stratégie fait référence à l'ARN non qualifié, Lambda accepte les demandes faisant référence à l'ARN non qualifié, mais refuse les demandes faisant référence à un ARN qualifié.

Note

Vous ne pouvez pas utiliser un caractère générique (*) pour établir une correspondance avec l'ID du compte. Pour plus d'informations sur la syntaxe acceptée, consultezRéférence de politique JSON IAMdans leIAM User Guide.

Exemple permettant l'invocation d'un ARN non qualifié
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

Si votre stratégie fait référence à un ARN qualifié spécifique, Lambda accepte les demandes faisant référence à cet ARN, mais refuse les demandes faisant référence à l'ARN non qualifié ou à un ARN qualifié différent, par exemple,myFunction:2.

Exemple permettant l'invocation d'un ARN qualifié spécifique
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

Si votre stratégie fait référence à un ARN qualifié à l'aide de :*, Lambda accepte tout ARN qualifié mais refuse les demandes faisant référence à l'ARN non qualifié.

Exemple permettant l'invocation de n'importe quel ARN qualifié
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

Si votre stratégie fait référence à un ARN utilisant *, Lambda accepte tout ARN qualifié ou non qualifié.

Exemple permettant l'invocation de tout ARN qualifié ou non qualifié
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

Actions de fonction

Les actions sur une fonction peuvent être limitées à une fonction spécifique selon l'ARN de la fonction, de la version ou de l'alias, tel que décrit dans le tableau suivant. Les actions qui ne supportent pas les restrictions de ressources sont accordées pour toutes les ressources. (*).

Actions de fonction
Action Ressource Condition

AddPermission

RemovePermission

Fonction

Version de la fonction

Alias de la fonction

lambda:Principal

aws:ResourceTag/${TagKey}

lambda:FunctionUrlAuthType

Invoke

Autorisation: lambda:InvokeFunction

Fonction

Version de la fonction

Alias de la fonction

aws:ResourceTag/${TagKey}

lambda:EventSourceToken

CreateFunction

Fonction

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UpdateFunctionConfiguration

Fonction

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionCodeSigningConfig

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionCodeSigningConfig

GetFunctionConcurrency

GetFunctionConfiguration

GetPolicy

ListProvisionedConcurrencyConfigs

ListAliases

ListTags

ListVersionsByFunction

PublishVersion

PutFunctionCodeSigningConfig

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

Fonction

aws:ResourceTag/${TagKey}

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

Fonction

Alias de la fonction

lambda:FunctionUrlAuthType

lambda:FunctionArn

aws:ResourceTag/${TagKey}

ListFunctionUrlConfigs

Fonction

lambda:FunctionUrlAuthType

DeleteFunctionEventInvokeConfig

GetFunctionEventInvokeConfig

ListFunctionEventInvokeConfigs

PutFunctionEventInvokeConfig

UpdateFunctionEventInvokeConfig

Fonction

aws:ResourceTag/${TagKey}

DeleteProvisionedConcurrencyConfig

GetProvisionedConcurrencyConfig

PutProvisionedConcurrencyConfig

Alias de la fonction

Version de la fonction

aws:ResourceTag/${TagKey}

GetAccountSettings

ListFunctions

*

Aucun

TagResource

Fonction

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource

Fonction

aws:ResourceTag/${TagKey}

aws:TagKeys

Actions de mappage de la source d'événement

Pour les mappages de source d'événement, la suppression et la mise à jour des autorisations peuvent se limiter à une source d'événement spécifique. La condition lambda:FunctionArn vous permet de limiter les fonctions qu'un utilisateur peut configurer pour appeler une source d'événement.

Pour ces actions, la ressource est le mappage de source d'événement. Lambda fournit une condition qui vous permet de restreindre les autorisations selon la fonction appelée par le mappage de source d'événement.

Actions de mappage de la source d'événement
Action Ressource Condition

DeleteEventSourceMapping

UpdateEventSourceMapping

Mappage de source d’événement

lambda:FunctionArn

CreateEventSourceMapping

GetEventSourceMapping

*

lambda:FunctionArn

ListEventSourceMappings

*

Aucun

Actions de couche

Les actions sur les couches vous permettent de limiter les couches qu'un utilisateur peut gérer ou utiliser avec une fonction. Les actions liées à l'utilisation et aux autorisations relatives aux couches, agissent sur les versions de couche, alors que PublishLayerVersion agit sur les noms de couche. Vous pouvez utiliser des caractères génériques pour restreindre les couches qu'un utilisateur peut utiliser par leur nom.

Note

L'GetLayerVersionaction couvre également GetLayerVersionByArn. Lambda ne prend pas en charge GetLayerVersionByArn tant qu'action IAM.