View a markdown version of this page

Contrôle d’accès aux URL de fonctions 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.

Contrôle d’accès aux URL de fonctions Lambda

Note

À compter d’octobre 2025, les nouvelles URL de fonction nécessiteront à la fois les autorisations lambda:InvokeFunctionUrl et lambda:InvokeFunction.

Vous pouvez contrôler l’accès aux URL de votre fonctions Lambda à l’aide du paramètre AuthType combiné avec les stratégies basées sur les ressources attachées à votre fonction spécifique. La configuration de ces deux composants détermine qui peut invoquer ou exécuter d’autres actions administratives sur l’URL de votre fonction.

Le paramètre AuthType détermine comment Lambda authentifie ou autorise les demandes vers l’URL de votre fonction. Lorsque vous configurez l’URL de votre fonction, vous devez spécifier l’une des options AuthType suivantes :

  • AWS_IAM— Lambda utilise Gestion des identités et des accès AWS (IAM) pour authentifier et autoriser les demandes en fonction de la politique d'identité du principal IAM et de la politique basée sur les ressources de la fonction. Choisissez cette option si vous souhaitez que seuls les utilisateurs et les rôles authentifiés invoquent votre fonction via l’URL de la fonction.

  • NONE – Lambda n’effectue aucune authentification avant d’invoquer votre fonction. Toutefois, la stratégie basée sur les ressources de votre fonction est toujours en vigueur et doit accorder un accès public avant que l’URL de votre fonction puisse recevoir des demandes. Choisissez cette option pour autoriser un accès public et non authentifié à l’URL de votre fonction.

Pour obtenir des informations supplémentaires sur la sécurité, vous pouvez AWS Identity and Access Management Access Analyzer obtenir une analyse complète de l'accès externe à l'URL de votre fonction. IAM Access Analyzer surveille également les autorisations nouvelles ou mises à jour sur vos fonctions Lambda afin de vous aider à identifier les autorisations accordant un accès public et entre comptes. Vous pouvez utiliser IAM Access Analyzer sans frais. Pour démarrer avec IAM Access Analyzer, consultez Utilisation d’ AWS IAM Access Analyzer.

Cette page contient des exemples de politiques basées sur les ressources pour les deux types d'authentification et explique comment créer ces politiques à l'aide de l'opération AddPermission API ou de la console Lambda. Pour plus d’informations sur la procédure d’invocation de l’URL de votre fonction après avoir configuré les autorisations, consultez Invocation d’URL de fonctions Lambda.

Utilisation du type d'authentification AWS_IAM

Si vous choisissez le type d’authentification AWS_IAM, les utilisateurs qui ont besoin d’invoquer l’URL de votre fonction Lambda doivent avoir les autorisations lambda:InvokeFunctionUrl et lambda:InvokeFunction. Selon la personne qui effectue la demande d’invocation, vous devrez peut-être accorder cette autorisation à l’aide d’une stratégie basée sur les ressources.

Si le principal qui fait la demande se trouve dans la même adresse Compte AWS que l'URL de la fonction, alors le principal doit disposer d'lambda:InvokeFunctionautorisations lambda:InvokeFunctionUrl et d'autorisations dans sa politique basée sur l'identité, ou des autorisations lui ont été accordées dans la politique basée sur les ressources de la fonction. En d’autres termes, une stratégie basée sur les ressources est facultative si l’utilisateur possède déjà des autorisations lambda:InvokeFunctionUrl et lambda:InvokeFunction dans sa stratégie basée sur l’identité. L’évaluation des politiques suit les règles décrites dans la Logique d’évaluation des politiques.

Si le principal qui fait la demande se trouve dans un autre compte, il doit avoir à la fois une stratégie basée sur l’identité qui lui donne des autorisations lambda:InvokeFunctionUrl et lambda:InvokeFunction, et des autorisations qui lui sont accordées dans une stratégie basée sur les ressources de la fonction qu’il essaie d’invoquer. L’évaluation des stratégies suit les règles décrites dans Comment déterminer si une demande d’accès entre comptes est autorisée.

La politique basée sur les ressources suivante permet au example rôle in d' Compte AWS 444455556666invoquer l'URL de la fonction associée à la fonction. my-function La touche de InvokedViaFunctionUrl contexte lambda : limite l'lambda:InvokeFunctionaction aux appels d'URL de fonction. Cela signifie que le principal doit utiliser l’URL de la fonction pour invoquer la fonction. Si vous n’incluez pas lambda:InvokedViaFunctionUrl, le principal peut invoquer votre fonction via d’autres méthodes d’invocation, en plus de l’URL de la fonction.

Exemple— politique Cross-account basée sur les ressources
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "Bool": { "lambda:InvokedViaFunctionUrl": "true" } } } ] }

Vous pouvez créer cette politique basée sur les ressources via la console en suivant les étapes suivantes :

Comment accorder des autorisations d’invocation d’URL à un autre compte (console)
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez le nom de la fonction pour laquelle vous souhaitez accorder des autorisations d’invocation d’URL.

  3. Choisissez l’onglet Configuration, puis Permissions (Autorisations).

  4. Dans Resource-based la section Politique, choisissez Ajouter des autorisations.

  5. Choisissez Function URL (URL de fonction).

  6. Pour Auth type (type d’authentification), choisissez AWS_IAM (IAM_AWS).

  7. Entrez un ID de déclaration pour votre déclaration de politique.

  8. Pour Principal, saisissez l’ID de compte ou l’Amazon Resource Name (ARN) de l’utilisateur ou du rôle auquel vous souhaitez accorder des autorisations. Par exemple : 444455556666.

  9. Choisissez Enregistrer.

Vous pouvez également créer cette politique à l'aide des commandes add-permission AWS Command Line Interface (AWS CLI) suivantes. Lorsque vous utilisez le AWS CLI, vous devez ajouter les lambda:InvokeFunction instructions lambda:InvokeFunctionUrl et séparément. Par exemple :

aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeURL \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeFunction \ --action lambda:InvokeFunction \ --principal 444455556666 \ --invoked-via-function-url

Utilisation du type d'authentification NONE

Important

Lorsque le type d’authentification de votre URL de fonction est NONE et que vous disposez d’une politique basée sur les ressources qui accorde un accès public, tout utilisateur non authentifié ayant de votre URL de fonction peut invoquer votre fonction.

Dans certains cas, vous pouvez souhaiter que votre URL de fonction soit publique. Vus pourriez souhaiter répondre aux demandes envoyées directement à partir d’un navigateur Web. Pour autoriser l’accès public à votre URL de fonction, choisissez le type d’authentification NONE.

Si vous choisissez le NONE type d’authentification, Lambda n’utilise pas IAM pour authentifier les demandes vers votre URL de fonction. Toutefois, votre fonction doit disposer d’une politique basée sur les ressources qui autorise lambda:InvokeFunctionUrl et lambda:InvokeFunction. Lorsque vous créez une URL de fonction avec le type d'authentification à NONE l'aide de la console ou AWS Serverless Application Model (AWS SAM), Lambda crée automatiquement la politique basée sur les ressources pour vous. Si vous utilisez directement l' AWS CLI API Lambda ou l'API Lambda, vous devez ajouter la politique vous-même. AWS CloudFormation

Nous vous recommandons d'inclure la clé de InvokedViaFunctionUrl contexte lambda : dans vos politiques basées sur les ressources lorsque vous utilisez le NONE type d'authentification. Cette clé de contexte garantit que la fonction ne peut être invoquée que via l’URL de la fonction et non via d’autres méthodes d’invocation.

Notez ce qui suit concernant cette politique :

  • Toutes les entités peuvent appeler lambda:InvokeFunctionUrl et lambda:InvokeFunction. Cela signifie que toute personne disposant de votre URL de fonction peut invoquer votre fonction.

  • La valeur de la clé de condition lambda:FunctionUrlAuthType est NONE. Cela signifie que la déclaration de stratégie n’autorise l’accès que lorsque le type d’authentification de votre URL de fonction est également NONE.

  • La condition lambda:InvokedViaFunctionUrl garantit que la fonction ne peut être invoquée que via l’URL de la fonction et non via d’autres méthodes d’invocation.

Exemple– Politique basée sur les ressources par défaut pour le type d’authentification NONE
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "FunctionURLAllowPublicAccess", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } }, { "Sid": "FunctionURLInvokeAllowPublicAccess", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "Bool": { "lambda:InvokedViaFunctionUrl": "true" } } } ] }
Créez la politique basée sur les ressources à l'aide du AWS CLI

À moins que vous n'utilisiez la console ou AWS SAM que vous ne créiez une URL de fonction avec un type d'authentificationNONE, vous devez ajouter vous-même la politique basée sur les ressources. Utilisez les commandes suivantes pour créer des instructions pour les autorisations lambda:InvokeFunctionUrl et lambda:InvokeFunction. Chaque instruction doit être ajoutée dans une commande distincte.

aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeURL \ --action lambda:InvokeFunctionUrl \ --principal * \ --function-url-auth-type NONE
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeFunction \ --action lambda:InvokeFunction \ --principal * \ --invoked-via-function-url
Note

Si vous supprimez une URL de fonction avec un type d’authentification NONE, Lambda ne supprime pas automatiquement la politique basée sur les ressources associée. Si vous souhaitez supprimer cette politique, vous devez le faire manuellement.

Si la politique basée sur les ressources d'une fonction n'accorde pas d'lambda:InvokeFunctionautorisations, lambda:invokeFunctionUrl les utilisateurs reçoivent un code d'erreur 403 Forbidden lorsqu'ils essaient d'invoquer l'URL de votre fonction. Cela se produit même si l'URL de la fonction utilise le type d'NONEauthentification.

Gouvernance et contrôle d’accès

Outre les autorisations d’invocation d’URL de fonction, vous pouvez également contrôler l’accès aux actions utilisées pour configurer les URL de fonctions. Lambda prend en charge les actions de stratégie IAM suivantes pour les URL de fonctions :

  • lambda:InvokeFunctionUrl – Invoquer une fonction Lambda à l’aide de l’URL de fonction.

  • lambda:CreateFunctionUrlConfig – Créer une URL de fonction et définir son AuthType.

  • lambda:UpdateFunctionUrlConfig – Mettre à jour la configuration d’une URL de fonction et son AuthType.

  • lambda:GetFunctionUrlConfig – Affichez les détails d’une URL de fonction.

  • lambda:ListFunctionUrlConfigs – Répertorier les configurations d’URL de fonction.

  • lambda:DeleteFunctionUrlConfig – Supprimer une URL de fonction.

Pour autoriser ou refuser l'accès aux URL des fonctions à d'autres AWS entités, incluez ces actions dans les politiques IAM. Par exemple, la politique suivante accorde le example rôle dans les Compte AWS 444455556666 autorisations de mise à jour de l'URL de la fonction pour la fonction my-function dans le compte123456789012.

Exemple exemple de stratégie d’URL de fonction inter-comptes
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:UpdateFunctionUrlConfig", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Clés de condition

Pour un contrôle d’accès précis sur vos URL de fonctions, utilisez des clés de contexte. Lambda prend en charge les clés de contexte suivantes pour les URL de fonction :

  • lambda:FunctionUrlAuthType : définit une valeur d’énumération décrivant le type d’authentification utilisé par l’URL de votre fonction. La valeur peut être AWS_IAM ou NONE.

  • lambda:InvokedViaFunctionUrl : limite l’action lambda:InvokeFunction aux appels effectués via l’URL de la fonction. Cela garantit que la fonction ne peut être invoquée que via l’URL de la fonction et non via d’autres méthodes d’invocation. Pour des exemples de politiques basées sur les ressources qui utilisent la clé de contexte lambda:InvokedViaFunctionUrl, consultez les exemples dans Utilisation du type d'authentification AWS_IAM et Utilisation du type d'authentification NONE.

Vous pouvez utiliser ces clés de contexte dans les stratégies associées à votre fonction. Vous pourriez vouloir limiter les personnes pouvant apporter des modifications de configuration à vos URL de fonctions. Pour rejeter toutes les demandes UpdateFunctionUrlConfig à n’importe quelle fonction avec un type d’authentification URL NONE, vous pouvez définir la stratégie suivante :

Exemple exemple de stratégie d’URL de fonction avec refus explicite
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action":[ "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }

Pour attribuer le example rôle dans Compte AWS 444455556666 les autorisations à émettre CreateFunctionUrlConfig et les UpdateFunctionUrlConfig requêtes sur les fonctions avec le type d'authentification URLAWS_IAM, vous pouvez définir la politique suivante :

Exemple exemple de stratégie d’URL de fonction avec autorisation explicite
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

Vous pouvez également utiliser cette clé de condition dans une stratégie de contrôle de service (SCP). Utilisez les SCP pour gérer les autorisations dans toute une organisation dans AWS Organizations. Pour empêcher les utilisateurs de créer ou de mettre à jour des URL de fonctions qui utilisent autre chose que le type d’authentification AWS_IAM, utilisez la stratégie de contrôle de service suivante :

Exemple exemple d’URL de fonction SCP avec refus explicite
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:*:123456789012:function:*", "Condition": { "StringNotEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }