View a markdown version of this page

Seguridad y permisos - AWS Lambda

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:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS). Si la MicroVM no se lanzó con este conector, create-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:*" } ] }