Octroi aux utilisateurs de l’accès à une fonction Lambda
Utilisez des politiques basées sur l’identité pour autoriser des utilisateurs, des groupes d’utilisateurs ou des groupes à effectuer des opérations sur des fonctions Lambda.
Note
Pour une fonction définie comme une image de conteneur, l’autorisation des utilisateurs à accéder à l’image doit être configurée dans Amazon Elastic Container Registry (Amazon ECR). Pour voir un exemple, consultez la rubrique Politiques de référentiel Amazon ECR.
Voici un exemple de stratégie d’autorisations avec une portée limitée. Elle permet à un utilisateur de créer et gérer des fonctions Lambda nommées avec un préfixe distinct (intern-) et configurées avec un rôle d’exécution désigné.
Exemple Stratégie de développement des fonctions
Les autorisations de la stratégie sont organisées en déclarations reposant sur les ressources et conditions qu’elles prennent en charge.
-
ReadOnlyPermissions– La console Lambda utilise ces autorisations lorsque vous parcourez et affichez les fonctions. Les conditions ou modèles de ressources ne sont pas pris en charge."Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*" -
DevelopFunctions– Utilisez toute action Lambda qui s’exécute sur des fonctions ayant le préfixeintern-, à l’exception deAddPermissionet dePutFunctionConcurrency.AddPermissionmodifie la politique basée sur les ressources de la fonction, ce qui peut avoir des conséquences en matière de sécurité.PutFunctionConcurrencyréserve la capacité de mise à l’échelle pour une fonction, et peut retirer de la capacité à d’autres fonctions."NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*" -
DevelopEventSourceMappings– Gérez les mappages de source d’événement sur les fonctions qui sont préfixées avecintern-. Ces actions s’exécutent sur des mappages de source d’événement, mais vous pouvez les restreindre par fonction à l’aide d’une condition."Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } } -
PassExecutionRole– Affichez et transmettez uniquement un rôle nomméintern-lambda-execution-role, qui doit être créé et géré par un utilisateur avec des autorisations IAM.PassRoleest utilisé lorsque vous attribuez un rôle d’exécution à une fonction."Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role" -
ViewLogs– Utilisez CloudWatch Logs pour afficher les journaux de fonctions préfixées avecintern-."Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"
Cette stratégie permet à un utilisateur de démarrer avec Lambda, sans nuire aux ressources des autres utilisateurs. Elle ne permet pas à un utilisateur de configurer une fonction qui doit être déclenchée par d’autres services AWS ou appeler ces derniers. Pour cela, des autorisations IAM plus étendues sont nécessaires. Elle n’inclut pas non plus d’autorisation pour les services qui ne prennent pas en charge les stratégies de portée limitée, telles que CloudWatch et X-Ray. Pour ces services, utilisez les stratégies en lecture seule afin d’accorder à l’utilisateur l’accès aux métriques et aux données de suivi.
Lorsque vous configurez des déclencheurs pour votre fonction, vous devez être autorisé à utiliser le service AWS qui appelle votre fonction. Par exemple, pour configurer un déclencheur Amazon S3, vous vous devez être autorisé à utiliser les actions Amazon S3 qui gèrent les notifications de compartiment. Plusieurs de ces autorisations sont incluses dans la stratégie gérée AWSLambda_FullAccess.