

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
<a name="urls-auth"></a>

**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](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html#lambda-CreateFunctionUrlConfig-request-AuthType) combiné avec les [stratégies basées sur les ressources](access-control-resource-based.md) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

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 ](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html) 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](urls-invocation.md).

**Topics**
+ [Utilisation du type d'authentification `AWS_IAM`](#urls-auth-iam)
+ [Utilisation du type d'`authentification` NONE](#urls-auth-none)
+ [Gouvernance et contrôle d’accès](#urls-governance)

## Utilisation du type d'authentification `AWS_IAM`
<a name="urls-auth-iam"></a>

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](access-control-resource-based.md).

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:InvokeFunction`autorisations `lambda:InvokeFunctionUrl` et d'autorisations dans sa politique [ basée sur l'identité](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html), ** 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html).

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html#policy-eval-cross-account).

La politique basée sur les ressources suivante permet au `example` rôle in d' Compte AWS `444455556666`invoquer l'URL de la fonction associée à la fonction. `my-function` La touche de InvokedViaFunctionUrl [ contexte ](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) lambda : limite l'`lambda:InvokeFunction`action 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.

**Example — politique Cross-account basée sur les ressources**    
****  

```
{
  "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](https://console.aws.amazon.com/lambda/home#/functions) (Fonctions) de la console Lambda.

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

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

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

1. Choisissez **Function URL** (URL de fonction).

1. Pour **Auth type** (type d’authentification), choisissez **AWS\_IAM** (IAM\_AWS).

1. Entrez un **ID de déclaration** pour votre déclaration de politique.

1. 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**.

1. Choisissez **Enregistrer**.

Vous pouvez également créer cette politique à l'aide des commandes [ add-permission ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) 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
<a name="urls-auth-none"></a>

**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](access-control-resource-based.md) 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](#policy-cli)

Nous vous recommandons d'inclure la clé de InvokedViaFunctionUrl [ contexte ](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) 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.

**Example – Politique basée sur les ressources par défaut pour le type d’authentification NONE**    
****  

```
{
  "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'authentification`NONE`, 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:InvokeFunction`autorisations, `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'`NONE`authentification.

## Gouvernance et contrôle d’accès
<a name="urls-governance"></a>

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 compte`123456789012`.

**Example exemple de stratégie d’URL de fonction inter-comptes**    
****  

```
{
    "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
<a name="urls-condition-keys"></a>

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`](#urls-auth-iam) et [Utilisation du type d'`authentification` NONE](#urls-auth-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 :

**Example exemple de stratégie d’URL de fonction avec refus explicite**    
****  

```
{
    "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 URL`AWS_IAM`, vous pouvez définir la politique suivante :

**Example exemple de stratégie d’URL de fonction avec autorisation explicite**    
****  

```
{
    "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](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (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 :

**Example exemple d’URL de fonction SCP avec refus explicite**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action":[
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:*:123456789012:function:*",
            "Condition": {
                "StringNotEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}
```