

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

**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 [AuthType](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html#lambda-CreateFunctionUrlConfig-request-AuthType)paramètre combiné aux [politiques basées sur les ressources](access-control-resource-based.md) 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 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 URL Compte AWS que l'URL de la fonction, il doit **soit** disposer `lambda:InvokeFunctionUrl` d'`lambda:InvokeFunction`autorisations 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) 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'invoquer l'URL Compte AWS `444455556666` de la fonction associée à la fonction. `my-function` La touche de InvokedViaFunctionUrl contexte [lambda :](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) 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 – Stratégie intercompte basée sur une ressource**    
****  

```
{
  "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. Sous **Resource-based policy** (stratégie basée sur une ressource), choisissez **Add permissions** (Ajouter des autorisations).

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

1. Pour le **type d'authentification**, choisissez **AWS\$1IAM**.

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 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](#policy-cli).

Nous vous recommandons d'inclure la clé de InvokedViaFunctionUrl contexte [lambda :](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) 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 stratégie basée sur les ressources d’une fonction n’accorde pas les autorisations `lambda:invokeFunctionUrl` et `lambda:InvokeFunction`, les utilisateurs obtiendront alors un code d’erreur 403 Forbidden lorsqu’ils essaient d’invoquer l’URL de votre fonction. Cela se produira même si l’URL de la fonction utilise le type d’authentification `NONE`.

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

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 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 à 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 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. Par exemple, vous souhaiterez peut-être limiter les personnes autorisées à modifier la configuration de 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 :

**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 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 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). 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_IAM`authentification, appliquez la politique de contrôle des services 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"
                }
            }
        }
    ]
}
```