Affiner les sections Ressources et Conditions des politiques - 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.

Affiner les sections Ressources et Conditions des politiques

Vous pouvez restreindre l'étendue des autorisations d'un utilisateur en spécifiant les ressources et les conditions dans une politique AWS Identity and Access Management (IAM). 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 IAM politique autorise une action exécuté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 de nombreuses actions, vous pouvez restreindre les ressources qu'un utilisateur peut modifier en spécifiant le nom de ressource Amazon (ARN) d'une ressource ou en utilisant un ARN modèle correspondant à plusieurs ressources.

Pour restreindre les autorisations par ressource, spécifiez la ressource parARN.

Format de ressource Lambda ARN
  • 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'identifiant d'action (lambda:InvokeFunction) est différent de l'APIopération (Invoke). Pour les autres actions, l'identificateur de l'action est le nom de l'opération avec le préfixe lambda:.

Comprendre la section Condition des politiques

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 politique suivante permet à un utilisateur d'autoriser les rubriques Amazon Simple Notification Service (AmazonSNS) à invoquer une fonction nomméetest.

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 exige que le mandant soit Amazon SNS et non 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.

Fonctions de référencement dans la section Ressources des politiques

Vous référencez une fonction Lambda dans une déclaration de politique à l'aide d'un Amazon Resource Name ()ARN. Le format d'une fonction ARN varie selon que vous faites référence à l'ensemble de la fonction (non qualifiée) ou à une version de fonction ou à un alias (qualifié).

Lorsqu'ils effectuent des API appels Lambda, les utilisateurs peuvent spécifier une version ou un alias en transmettant une version ARN ou un alias ARN 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 de la IAM politique avec les appels FunctionName et les appels Qualifier transmis. API En cas d'incompatibilité, Lambda refuse la demande.

Que vous autorisiez ou refusiez une action sur votre fonction, vous devez utiliser les ARN types de fonctions appropriés dans votre déclaration de politique pour obtenir les résultats escomptés. Par exemple, si votre politique fait référence au non qualifiéARN, Lambda accepte les demandes qui font référence au ARN non qualifié mais refuse les demandes qui font référence à un qualifié. ARN

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, consultez la référence IAM JSON aux politiques dans le guide de IAM l'utilisateur.

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

Si votre politique fait référence à une personne qualifiée spécifiqueARN, Lambda accepte les demandes qui y font référence, ARN mais refuse les demandes faisant référence à une personne non qualifiée ARN ou à une qualification différenteARN, par exemple. myFunction:2

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

Si votre politique fait référence à une ARN utilisation qualifiée:*, Lambda accepte toute demande qualifiée ARN mais refuse les demandes faisant référence à une utilisation non qualifiée. ARN

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

Si votre politique fait référence à une ARN utilisation*, Lambda accepte toute utilisation qualifiée ou non qualifiée. ARN

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

Actions fonctionnelles prises en charge

Les actions qui agissent sur une fonction peuvent être limitées à une fonction spécifique par fonction, version ou aliasARN, comme décrit dans le tableau suivant. Les actions qui ne supportent pas les restrictions de ressources sont accordées pour toutes les ressources. (*).

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

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 des sources d'événements prises en charge

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 prises en charge

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 le prend pas en charge en GetLayerVersionByArn tant IAM qu'action.