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'autorisation basées sur les ressources, vous pouvez accorder à d'autres utilisateurs Comptes AWS, organisations et l' Services AWS accès à vos fonctions d'événement 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: 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: la fonction, la version ou l'alias Lambda auxquels vous souhaitez appliquer l'instruction (vous pouvez également utiliser un caractère générique pour spécifier toutes les versions et 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 IAM JSON 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 d'événement
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 PutResourcePolicyAPI pour ajouter un document de politique JSON complet. AWS CLI Avec une politique JSON complète, vous pouvez utiliser la gamme complète des 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 l'action de console ou d'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 avecadd-permission, les put-resource-policy remplace. get-resource-policyÀ utiliser pour récupérer la politique existante avant d'apporter des modifications.
Autorisations requises
Pour utiliser les actionsPutResourcePolicy,GetResourcePolicy, et DeleteResourcePolicy API, 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 précédemment ajoutées sont remplacées. -
add-permission/AddPermission— Ajoute une instruction à la politique existante sans la remplacer. Si vous appelezadd-permissionaprèsput-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 inclut 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 de votre code de fonction n'est requise pour utiliser la nouvelle PutResourcePolicy API.
Bonnes pratiques de sécurité
Avec les politiques basées sur les ressources JSON, vous pouvez suivre des modèles d'accès avec le moindre privilège. Vous pouvez également satisfaire aux exigences réglementaires relatives aux 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. -
Élargissez 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 déclaration de refus
La politique suivante accorde à tous les compartiments Amazon S3 d'un compte l'autorisation d'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 accorde un accès invoqué à tous Comptes AWS les membres 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 à moins que l'appelant ne fasse 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)