View a markdown version of this page

Sécurité et autorisations - AWS Lambda

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.

Sécurité et autorisations

Cette section décrit les rôles IAM, les jetons d'authentification et les contrôles d'accès pour les AWS Lambda microVM.

Rôles IAM

Créer un rôle

Ce rôle est utilisé lors de la création de l'image. Les autorisations suivantes sont nécessaires pour récupérer les artefacts sources et générer des journaux : s3:GetObjectlogs:CreateLogGroup,logs:CreateLogStream, etlogs:PutLogEvents. Ajoutez également ecr:GetAuthorizationToken si vous faites référence à des images ECR privées.

Le rôle de build est facultatif. Si vous ne fournissez pas de rôle de build, Lambda ne peut pas y écrire de journaux de build. CloudWatch

Rôle d'exécution

Ce rôle est utilisé lors de l'exécution de MicroVM pour fournir des autorisations d'accès permettant d'écrire des journaux CloudWatch et d'utiliser d'autres AWS services.

Le rôle d'exécution est facultatif. Si vous ne fournissez pas de rôle d'exécution, Lambda n'émet pas de journaux d'exécution CloudWatch et votre microVM ne peut pas accéder à d'autres services. AWS

Les hooks du cycle de vie s'exécutent sous le rôle associé à leur phase. Build-time les hooks (/readyet/validate) s'exécutent sous le rôle build. Les hooks d'exécution (/run/resume,/suspend, et/terminate) s'exécutent sous le rôle d'exécution.

Politiques d’approbation

Les deux rôles nécessitent une politique de confiance qui permet au principal du service Lambda lambda.amazonaws.com d'exécuter sts:AssumeRole et. sts:TagSession

Jetons d'authentification

Les jetons contrôlent l'accès entrant aux microVM en cours d'exécution. Ils sont limités par port ; chaque jeton indique les ports auxquels il accorde l'accès.

# Token granting access to all ports aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"allPorts":{}}]' # Token granting access to port 8080 only aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"port":8080}]'

Jetons d'accès Shell

L'accès au Shell utilise une API de jetons distincte. La microVM cible doit avoir été exécutée avec le connecteur SHELL_INGRESS réseau (arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS). Si le microVM n'a pas été lancé avec ce connecteur, il create-microvm-shell-auth-token échoue avec un ValidationException :

aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30

Pour une présentation complète de la connexion à un shell MicroVM, voir. Accès au shell

Balisage de ressources

Les ressources Lambda MicroVM (images, microVM) prennent en charge les balises de AWS ressources pour l'organisation et la répartition des coûts. Ajoutez des balises lors de la création d'une image à l'aide du --tags paramètre ou explicitement après la création. Vous pouvez également répertorier et supprimer des balises, comme illustré ci-dessous : vous pouvez également faire référence à des balises dans les conditions de politique IAM pour contrôler l'accès aux ressources microVM.

# Add tags when creating an image aws lambda-microvms create-microvm-image \ --name my-app-image \ --code-artifact '{"uri":"s3://my-bucket/app.zip"}' \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --tags '{"Environment":"production","Team":"platform"}' # List tags on a resource aws lambda-microvms list-tags \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image # Add tags to an existing resource aws lambda-microvms tag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tags '{"CostCenter":"12345","Project":"sandbox-platform"}' # Remove tags by key aws lambda-microvms untag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tag-keys '["CostCenter","Project"]'

Référence des autorisations IAM

Lambda MicroVMS définit les actions IAM suivantes. Utilisez-les dans les politiques IAM pour contrôler l'accès aux opérations de microVM.

Action Description
lambda:CreateMicrovmImage Créez une nouvelle image microVM.
lambda:UpdateMicrovmImage Mettez à jour une image microVM existante.
lambda:DeleteMicrovmImage Supprimez une image microVM.
lambda:GetMicrovmImage Obtenez les détails de l'image MicroVM.
lambda:ListMicrovmImages Répertoriez les images MicroVM dans le compte.
lambda:RunMicrovm Exécutez une nouvelle microVM.
lambda:GetMicrovm Obtenez l'état et les détails de MicroVM.
lambda:ListMicrovms Répertoriez les microVM dans le compte.
lambda:SuspendMicrovm Suspendez une microVM en cours d'exécution.
lambda:ResumeMicrovm Reprenez une microVM suspendue.
lambda:TerminateMicrovm Mettez fin à une microVM.
lambda:CreateMicrovmAuthToken Générez un jeton d'authentification pour une microVM.
lambda:CreateMicrovmShellAuthToken Générez un jeton d'accès au shell.

Formats d'ARN des ressources

# MicroVM image arn:aws:lambda:<region>:<account>:microvm-image:<image-name> # MicroVM instance arn:aws:lambda:<region>:<account>:microvm:<microvm-id> # Network connector arn:aws:lambda:<region>:<account>:network-connector:<connector-id>

Exemple : Least-privilege politique pour un opérateur

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:RunMicrovm", "lambda:GetMicrovm", "lambda:ListMicrovms", "lambda:SuspendMicrovm", "lambda:ResumeMicrovm", "lambda:TerminateMicrovm", "lambda:CreateMicrovmAuthToken" ], "Resource": "arn:aws:lambda:*:123456789012:microvm:*" }, { "Effect": "Allow", "Action": ["lambda:GetMicrovmImage", "lambda:ListMicrovmImages"], "Resource": "arn:aws:lambda:*:123456789012:microvm-image:*" } ] }