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.
Utilisation de politiques basées sur les ressources dans Lambda
Grâce aux politiques d'autorisations basées sur les ressources, vous pouvez accorder à d'autres utilisateurs Comptes AWS, à des organisations et à Services AWS accéder à vos fonctions Lambda. Une politique basée sur les ressources est un document JSON qui contient une ou plusieurs instructions. Chaque déclaration définit les éléments suivants :
-
Principal: L'entité à laquelle vous souhaitez accorder des autorisations (une autre Service AWS, un rôle ou un utilisateur IAM, ou autre Compte AWS) -
Action: une liste des actions d'API que vous souhaitez autoriser ou refuser pour le principal spécifié -
Effect: si vous souhaitez autoriser ou refuser au principal la possibilité d'utiliser les actions d'API choisies -
Resource: fonction, version ou alias Lambda à laquelle vous souhaitez que l'instruction s'applique (vous pouvez également utiliser un caractère générique pour spécifier toutes les versions et tous les alias de votre fonction)
Vous pouvez également utiliser des éléments facultatifs tels que Sid (un identifiant de déclaration) et Condition (des conditions logiques pour un contrôle d'accès précis). Pour obtenir la liste complète des éléments de stratégie pris en charge, reportez-vous à la référence des éléments de stratégie JSON IAM dans le Guide de l'Gestion des identités et des accès AWS utilisateur.
Ajouter des autorisations basées sur les ressources à une fonction Lambda
Vous pouvez ajouter des autorisations basées sur les ressources à votre fonction Lambda à l'aide de deux méthodes :
-
Politique JSON complète : utilisez la console Lambda ou l'action d'PutResourcePolicyAPI pour ajouter un document de stratégie JSON complet. AWS CLI Avec une politique JSON complète, vous pouvez utiliser la gamme complète de clés de condition globales IAM, ajouter plusieurs instructions avec plusieurs principes et créer des instructions explicites
Deny. La taille maximale d'une politique basée sur les ressources JSON est de 20 Ko. -
Autorisations individuelles : utilisez la console ou l'action de l'AddPermissionAPI pour ajouter
Allowdes instructions uniques. Les autorisations individuelles ne prennent en charge qu'un ensemble limité de clés de condition (aws:SourceArnaws:SourceAccount, etaws:PrincipalOrgID).
Nous vous recommandons de définir des politiques JSON complètes pour ajouter des autorisations basées sur les ressources à votre fonction. La création d'une politique JSON complète vous donne plus de flexibilité et un contrôle précis de vos autorisations.
Important
L'utilisation put-resource-policy remplace toute politique basée sur les ressources existante sur la ressource. Si la ressource possède déjà des autorisations définies paradd-permission, les put-resource-policy remplace. get-resource-policyUtilisez-le pour récupérer la politique existante avant d'apporter des modifications.
Autorisations requises
Pour utiliser les actions d'DeleteResourcePolicyAPI PutResourcePolicyGetResourcePolicy, et, vous devez disposer des autorisations IAM suivantes :
| Action d’API | Autorisations requises |
|---|---|
| PutResourcePolicy | lambda:PutResourcePolicy, lambda:AddPermission et lambda:RemovePermission |
| GetResourcePolicy | lambda:GetResourcePolicy et lambda:GetPolicy |
| DeleteResourcePolicy | lambda:DeleteResourcePolicy et lambda:RemovePermission |
Afficher la politique basée sur les ressources d'une fonction
Supprimer la politique basée sur les ressources d'une fonction
Mettre à jour les politiques existantes
Lorsque vous mettez à jour les autorisations basées sur les ressources existantes d'une fonction, le comportement dépend de la méthode que vous utilisez :
-
put-resource-policy/PutResourcePolicy— Remplace l'intégralité de la politique existante. Toutes les autorisations individuelles ajoutées précédemment sont remplacées. -
add-permission/AddPermission— Ajoute une déclaration à la politique existante sans la remplacer. Si vous appelezadd-permissionafterput-resource-policy, la nouvelle instruction s'ajoute à la politique JSON existante.
Pour éviter de remplacer involontairement les autorisations existantes lors de l'utilisationput-resource-policy, récupérez d'abord la politique existante de votre fonction. La get-resource-policy sortie comprend un RevisionId champ.
aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function
Lorsque vous attachez une nouvelle politique, indiquez la RevisionId valeur avec le --revision-id paramètre pour vous assurer que vous mettez à jour la dernière version. Si vous fournissez un ancien ID de révision, Lambda ne met pas à jour la politique de votre fonction.
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json \ --revision-ida1b2c3d4-5678-90ab-cdef-EXAMPLE11111
Note
Les politiques basées sur les ressources existantes créées avec AddPermission continuent de fonctionner sans modification. Aucune modification du code de votre fonction n'est requise pour utiliser la nouvelle PutResourcePolicy API.
Bonnes pratiques de sécurité
Grâce aux politiques basées sur les ressources JSON, vous pouvez suivre les modèles d'accès avec le moindre privilège. Vous pouvez également satisfaire aux exigences réglementaires en matière de refus explicites. Avec des politiques JSON complètes, vous pouvez :
-
Créez des
Denydéclarations explicites pour bloquer des principes ou des conditions spécifiques. -
Utilisez les conditions organisationnelles (
aws:PrincipalOrgID,aws:PrincipalOrgPaths) pour restreindre l'accès à vos organisations sans énumérer les comptes individuels. -
Étendez les autorisations à des comptes sources ou à des ARN spécifiques à l'aide de la gamme complète de clés de condition globales IAM.
Exemples de politiques basées sur les ressources
Exemple Octroi d'une autorisation à Amazon S3 avec une instruction de refus
La politique suivante autorise tous les compartiments Amazon S3 d'un compte à invoquer une fonction, à l'exception d'un compartiment explicitement refusé.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "deny-s3-bucket", "Effect": "Deny", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:111122223333:function:my-function", "arn:aws:lambda:us-east-2:111122223333:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
Exemple Octroi d'autorisations aux comptes d'une organisation
La politique suivante permet d'invoquer l'accès à tous les membres Comptes AWS d'une organisation.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }
Exemple Octroi d'autorisations à plusieurs rôles IAM sous certaines conditions
La politique suivante autorise deux rôles IAM à utiliser l' CreateAlias action à partir d'une adresse IP spécifiée.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-roles", "Effect": "Allow", "Action": "lambda:CreateAlias", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/role-name", "arn:aws:iam::444455556666:role/role-name2" ] }, "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0" } } } ] }
Exemple Refuser l'accès sauf si l'appelant fait partie d'une organisation spécifiée
{ "Version": "2012-10-17", "Statement": [ { "Sid": "deny-access", "Effect": "Deny", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAllValues:StringNotLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } }, { "Sid": "allow-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } } ] }
Actions d’API prises en charge
Les actions de l’API Lambda suivantes prennent en charge les politiques basées sur les ressources :
-
InvokeFunctionUrl(autorisation uniquement)