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.
Vous pouvez contrôler l'accès à votre fonction Lambda à URLs l'aide du AuthType
paramè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 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.
En plus du paramètre AuthType
, vous pouvez également utiliser des stratégies basées sur les ressources pour accorder des autorisations à d’autres Comptes AWS pour invoquer votre fonction. Pour de plus amples informations, veuillez consulter Afficher les politiques IAM basées sur les ressources dans Lambda.
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. L'utilisation d'IAM Access Analyzer est gratuite pour tous AWS les clients. Pour commencer à utiliser IAM Access Analyzer, consultez la section Utilisation d' AWS IAM Access Analyzer.
Cette page contient des exemples de politiques basées sur les ressources pour les deux types d'authentification, ainsi que la façon de créer ces politiques à l'aide de l'opération AddPermissionAPI 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 de la fonction Lambda URLs.
Rubriques
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 l’autorisation lambda:InvokeFunctionUrl
. 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 URL Compte AWS que l'URL de la fonction, le principal doit soit disposer d'lambda:InvokeFunctionUrl
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 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
dans sa stratégie basée sur l’identité. L’évaluation des stratégies suit les règles décrites dans Identification d’une demande autorisée ou refusée dans un compte.
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 des autorisations qui lui sont accordées dans une stratégie basée sur les ressources de la fonction qu’il essaie d’invoquer. Dans ces cas de comptes croisés, l’évaluation de la stratégie suit les règles décrites dans Comment déterminer si une demande d’accès entre comptes est autorisée.
Pour un exemple d'interaction entre comptes, la politique basée sur les ressources suivante permet au example
rôle in d'invoquer l'URL de la fonction associée Compte AWS 444455556666
à la fonction : my-function
Exemple exemple de stratégie d’invocation entre comptes d’URL de fonction
{ "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" } } } ] }
Vous pouvez créer cette déclaration de stratégie via la console en procédant comme suit :
Comment accorder des autorisations d’invocation d’URL à un autre compte (console)
-
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Choisissez le nom de la fonction pour laquelle vous souhaitez accorder des autorisations d’invocation d’URL.
-
Choisissez l’onglet Configuration, puis Permissions (Autorisations).
-
Sous Resource-based policy (stratégie basée sur une ressource), choisissez Add permissions (Ajouter des autorisations).
-
Choisissez Function URL (URL de fonction).
-
Pour le type d'authentification, choisissez AWS_IAM.
-
(Facultatif) Pour Statement ID (ID de déclaration), saisissez un ID de déclaration pour votre déclaration de stratégie.
-
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. olpPar exemple :
444455556666
. -
Choisissez Save (Enregistrer).
Vous pouvez également créer cette déclaration de politique à l'aide de la commande add permission
aws lambda add-permission --function-name my-function \ --statement-id example0-cross-account-statement \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM
Dans l’exemple précédent, la valeur de la clé de condition lambda:FunctionUrlAuthType
est AWS_IAM
. Cette stratégie n’autorise l’accès que lorsque le type d’authentification de l’URL de votre fonction est également AWS_IAM
.
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 stratégie basée sur une ressource 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, les utilisateurs doivent toujours avoir des autorisations lambda:InvokeFunctionUrl
afin d’invoquer correctement l’URL de votre fonction. Vous pouvez accorder des autorisations lambda:InvokeFunctionUrl
à l’aide de la stratégie basée sur une ressource suivante :
Exemple exemple de stratégie d’invocation d’URL de fonction pour tous les principaux non authentifiés
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:
my-function
", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }
Note
Lorsque vous créez une URL de fonction avec un type d'authentification NONE
via la console ou AWS Serverless Application Model (AWS SAM), Lambda crée automatiquement pour vous la déclaration de politique basée sur les ressources précédente. Si la stratégie existe déjà, ou si l’utilisateur ou le rôle qui crée l’application ne dispose pas des autorisations appropriées, Lambda ne la créera pas pour vous. Si vous utilisez directement l'API AWS CLI AWS CloudFormation, ou l'API Lambda, vous devez ajouter vous-même lambda:InvokeFunctionUrl
des autorisations. Cela rend votre fonction publique.
En outre, si vous supprimez l’URL de votre 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.
Dans cette déclaration, la valeur de la clé de condition lambda:FunctionUrlAuthType
est NONE
. Cette déclaration de stratégie n’autorise l’accès que lorsque le type d’authentification de votre URL de fonction est également NONE
.
Si la stratégie basée sur les ressources d’une fonction n’accorde pas d’autorisations lambda:invokeFunctionUrl
, les utilisateurs obtiendront alors un code d’erreur 403 Forbidden lorsqu’ils essaient d’invoquer l’URL de votre fonction, même si l’URL de la fonction utilise le type d’autorisation NONE
.
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 sonAuthType
. -
lambda:UpdateFunctionUrlConfig
– Mettre à jour la configuration d’une URL de fonction et sonAuthType
. -
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.
Note
La console Lambda prend en charge l’ajout d’autorisations uniquement pour lambda:InvokeFunctionUrl
. Pour toutes les autres actions, vous devez ajouter des autorisations à l’aide de l’API Lambda ou AWS CLI.
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
{ "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 une clé de condition. Lambda prend en charge une clé de condition supplémentaire pour la fonction URLs :. FunctionUrlAuthType
La clé 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
.
Vous pouvez utiliser cette clé de condition dans les stratégies 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
{
"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
{
"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_IAM
authentification, appliquez la politique de contrôle des services suivante :
Exemple 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"
}
}
}
]
}