

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
<a name="microvms-security"></a>

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
<a name="microvms-security-iam-roles"></a>

### Créer un rôle
<a name="microvms-security-build-role"></a>

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:GetObject``logs:CreateLogGroup`,`logs:CreateLogStream`, et`logs: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
<a name="microvms-security-execution-role"></a>

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 (`/ready`et`/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
<a name="microvms-security-trust-policies"></a>

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
<a name="microvms-security-auth-tokens"></a>

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
<a name="microvms-security-shell-tokens"></a>

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](microvms-troubleshooting.md#microvms-troubleshooting-shell)

## Balisage de ressources
<a name="microvms-security-tagging"></a>

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
<a name="microvms-security-iam-reference"></a>

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
<a name="microvms-security-resource-arns"></a>

```
# 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
<a name="microvms-security-least-privilege"></a>

```
{
  "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:*"
    }
  ]
}
```