Contrôler l'accès à la fonction Lambda URLs - 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ôler l'accès à la fonction Lambda URLs

Note

À compter d'octobre 2025, la nouvelle fonction URLs nécessitera à la fois des lambda:InvokeFunction autorisations lambda:InvokeFunctionUrl et des autorisations.

Vous pouvez contrôler l'accès à votre fonction Lambda à URLs l'aide du AuthTypeparamètre combiné aux politiques basées sur les ressources associé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 AWS Identity and Access Management (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 puissent appeler votre fonction à l'aide de 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 gratuitement. 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 AddPermissionAPI ou de la console Lambda. Pour plus d'informations sur la façon d'invoquer l'URL de votre fonction une fois que vous avez configuré les autorisations, consultezInvocation de la fonction Lambda URLs.

Utilisation du type d’authentification AWS_IAM

Si vous choisissez le type d'AWS_IAMauthentification, les utilisateurs qui doivent appeler l'URL de votre fonction Lambda doivent disposer lambda:InvokeFunctionUrl des lambda:InvokeFunction autorisations et. En fonction de l'auteur de la demande d'invocation, vous devrez peut-être accorder cette autorisation en utilisant une politique basée sur les ressources.

Si le principal qui fait la demande se trouve dans la même URL Compte AWS que l'URL de la fonction, il doit soit disposer lambda:InvokeFunctionUrl d'lambda:InvokeFunctionautorisations dans sa politique basée sur l'identité, soit avoir des autorisations qui lui sont accordées dans le cadre de la politique basée sur les ressources de la fonction. En d'autres termes, une politique basée sur les ressources est facultative si l'utilisateur possède lambda:InvokeFunctionUrl déjà des lambda:InvokeFunction autorisations 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 disposer à la fois d'une politique basée sur l'identité qui lui donne les lambda:InvokeFunction autorisations lambda:InvokeFunctionUrl et autorisations qui lui sont accordées dans le cadre d'une politique basée sur les ressources concernant la fonction qu'il essaie d'invoquer. L'évaluation des politiques suit les règles décrites dans la section Déterminer si une demande entre comptes est autorisée.

La politique basée sur les ressources suivante permet au example rôle in d'invoquer l'URL Compte AWS 444455556666 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 appeler la fonction. Si vous ne l'incluez paslambda:InvokedViaFunctionUrl, le principal peut appeler votre fonction via d'autres méthodes d'invocation, en plus de l'URL de la fonction.

Exemple — Politique basée sur les ressources entre comptes
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. Sous Resource-based policy (stratégie basée sur une ressource), choisissez Add permissions (Ajouter des autorisations).

  5. Choisissez Function URL (URL de fonction).

  6. Pour le type d'authentification, choisissez AWS_IAM.

  7. Entrez un numéro de relevé pour votre déclaration de politique.

  8. Pour Principal, entrez l'ID de compte ou le nom de ressource Amazon (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 l'URL de votre fonction est le NONE même et que vous disposez d'une politique basée sur les ressources qui accorde un accès public, tout utilisateur non authentifié disposant de l'URL de votre fonction peut invoquer votre fonction.

Dans certains cas, vous souhaiterez peut-être que l'URL de votre 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 un 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'API AWS CLI AWS CloudFormation, ou l'API Lambda, vous devez ajouter la politique vous-même.

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'appel.

Notez ce qui suit à propos de cette politique :

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

  • La valeur de la clé de lambda:FunctionUrlAuthType condition estNONE. Cela signifie que la déclaration de politique autorise l'accès uniquement lorsque le type d'authentification de l'URL de votre fonction l'est égalementNONE.

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

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 d'utiliser la console ou AWS SAM de créer 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 lambda:InvokeFunction autorisations lambda:InvokeFunctionUrl et. 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 aucune lambda:InvokeFunction autorisation, lambda:invokeFunctionUrl les utilisateurs recevront un code d'erreur 403 Forbidden lorsqu'ils essaieront d'invoquer l'URL de votre fonction. Cela se produira même si l'URL de la fonction utilise le type d'NONEauthentification.

Gouvernance et contrôle d’accès

Outre les autorisations d'appel d'URL de fonction, vous pouvez également contrôler l'accès aux actions utilisées pour configurer la fonction URLs. Lambda prend en charge les actions de politique IAM suivantes pour les fonctions : URLs

  • 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 à l'URL des fonctions à d'autres AWS entités, incluez ces actions dans les politiques IAM. Par exemple, la politique suivante accorde au example rôle dans les Compte AWS 444455556666 autorisations de mettre à jour 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 à votre fonction URLs, utilisez les touches contextuelles de condition. Lambda prend en charge les clés de contexte suivantes pour la fonction : URLs

  • lambda:FunctionUrlAuthType— Définit une valeur enum 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'lambda:InvokeFunctionaction aux appels effectués via l'URL de la fonction. Cela garantit que la fonction ne peut être invoquée qu'à l'aide de l'URL de la fonction et non par le biais d'autres méthodes d'appel. Pour des exemples de politiques basées sur les ressources qui utilisent la clé de lambda:InvokedViaFunctionUrl contexte, consultez les exemples dans Utilisation du type d’authentification AWS_IAM et. Utilisation du type d’authentification NONE

Vous pouvez utiliser ces touches contextuelles dans les politiques associées à votre fonction. Par exemple, vous souhaiterez peut-être limiter les personnes autorisées à apporter des modifications de configuration à votre fonction URLs. 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 accorder le example rôle dans Compte AWS 444455556666 les autorisations de création CreateFunctionUrlConfig et de UpdateFunctionUrlConfig requêtes sur les fonctions avec un 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). SCPs À utiliser pour gérer les autorisations dans l'ensemble d'une organisation dans AWS Organizations. Par exemple, pour empêcher les utilisateurs de créer ou de mettre à jour des fonctions URLs utilisant autre chose que le type d'AWS_IAMauthentification, appliquez la politique de contrôle des services 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" } } } ] }