Seguridad y permisos
En esta sección se describen los roles de IAM, los tokens de autenticación y los controles de acceso de las MicroVM de AWS Lambda.
Roles de IAM
Rol de compilación
Este rol se utiliza durante la creación de la imagen. Requiere los siguientes permisos para recuperar los artefactos de origen y generar registros: s3:GetObject, logs:CreateLogGroup, logs:CreateLogStream y logs:PutLogEvents. Agregue también ecr:GetAuthorizationToken si se hace referencia a imágenes privadas de ECR.
El rol de compilación es opcional. Si no se proporciona un rol de compilación, Lambda no puede escribir los registros de compilación en CloudWatch.
Rol de ejecución
Este rol se usa durante el tiempo de ejecución de la MicroVM para conceder permisos de acceso que permiten escribir registros en CloudWatch y usar otros servicios de AWS.
El rol de ejecución es opcional. Si no se proporciona un rol de ejecución, Lambda no envía registros del tiempo de ejecución a CloudWatch y la MicroVM no puede acceder a otros servicios de AWS.
Los enlaces del ciclo de vida se ejecutan con el rol asociado a su fase. Los enlaces de compilación (/ready y /validate) se ejecutan con el rol de compilación. Los enlaces del tiempo de ejecución (/run, /resume, /suspend y /terminate) se ejecutan con el rol de ejecución.
Políticas de confianza
Ambos roles requieren una política de confianza que permita a la entidad principal de servicio de Lambda lambda.amazonaws.com realizar sts:AssumeRole y sts:TagSession.
Tokens de autenticación
Los tokens controlan el acceso entrante a las MicroVM en ejecución. Su ámbito se limita a los puertos; cada token especifica los puertos a los que concede acceso.
# 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}]'
Tokens de acceso al intérprete de comandos
El acceso al intérprete de comandos utiliza una API de tokens independiente. La MicroVM de destino se debe haber ejecutado con el conector de red SHELL_INGRESS (arn:aws:lambda:). Si la MicroVM no se lanzó con este conector, us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token genera un error ValidationException:
aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30
Para obtener una guía completa sobre cómo conectarse al intérprete de comandos de una MicroVM, consulte Acceso al intérprete de comandos.
Etiquetado de recursos
Los recursos de MicroVM de Lambda, como las imágenes y las MicroVM, admiten etiquetas de recursos AWS para fines de organización y asignación de costos. Agregue etiquetas al crear una imagen mediante el parámetro --tags o de forma explícita después de crearla. También puede enumerar y eliminar etiquetas, como se muestra a continuación. Asimismo, puede hacer referencia a las etiquetas en las condiciones de las políticas de IAM para controlar el acceso a los recursos de 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"]'
Referencia de permisos de IAM
Las MicroVM de Lambda definen las siguientes acciones de IAM. Use estas acciones en las políticas de IAM para controlar el acceso a las operaciones de MicroVM.
| Action | Descripción |
|---|---|
lambda:CreateMicrovmImage |
Crear una nueva imagen de MicroVM. |
lambda:UpdateMicrovmImage |
Actualizar una imagen de MicroVM existente. |
lambda:DeleteMicrovmImage |
Eliminar una imagen de MicroVM. |
lambda:GetMicrovmImage |
Obtener los detalles de una imagen de MicroVM. |
lambda:ListMicrovmImages |
Enumerar las imágenes de MicroVM de la cuenta. |
lambda:RunMicrovm |
Ejecutar una nueva MicroVM. |
lambda:GetMicrovm |
Obtener el estado y los detalles de una MicroVM. |
lambda:ListMicrovms |
Enumerar las MicroVM de la cuenta. |
lambda:SuspendMicrovm |
Suspender una MicroVM en ejecución. |
lambda:ResumeMicrovm |
Reanudar una MicroVM suspendida. |
lambda:TerminateMicrovm |
Terminar una MicroVM. |
lambda:CreateMicrovmAuthToken |
Generar un token de autenticación para una MicroVM. |
lambda:CreateMicrovmShellAuthToken |
Generar un token de acceso al intérprete de comandos. |
Formatos de ARN de recursos
# 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>
Ejemplo: política de privilegios mínimos para un operador
{ "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:*" } ] }