Segurança e permissões
Esta seção descreve os perfis, os tokens de autenticação e os controles de acesso do IAM para o AWS Lambda MicroVMs.
Perfis do IAM
Perfil de compilação
Esse perfil é usado durante a criação da imagem. Ele exige as seguintes permissões para recuperar artefatos de origem e gerar registros em log:s3:GetObject, logs:CreateLogGroup, logs:CreateLogStream e logs:PutLogEvents. Adicione também ecr:GetAuthorizationToken se estiver fazendo referência a imagens do ECR privadas.
O perfil de compilação é opcional. Se você não fornecer um perfil de compilação, o Lambda não poderá gravar os registros em log da compilação no CloudWatch.
Função de execução
Esse perfil é usado no runtime da microVM para fornecer permissões de acesso para gravar registros em log no CloudWatch e usar outros serviços da AWS.
O perfil de execução é opcional. Se você não fornecer um perfil de execução, o Lambda não emitirá logs de runtime para o CloudWatch e sua microVM não poderá acessar outros serviços da AWS.
Os ganchos do ciclo de vida são executados sob o perfil associado à respectiva fase. Os hooks do tempo de compilação (/ready e /validate) são executados sob o perfil de compilação. Os hooks de runtime (/run, /resume, /suspend e /terminate) são executados sob o perfil de execução.
Políticas de confiança
Ambos os perfis exigem uma política de confiança que permita à entidade principal do serviço do Lambda lambda.amazonaws.com realizar sts:AssumeRole e sts:TagSession.
Tokens de autenticação
Os tokens controlam o acesso de entrada às microVMs em execução. Eles têm escopo de porta e cada token especifica a quais portas concede acesso.
# 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 acesso do shell
O acesso ao shell usa uma API de token separada. A microVM de destino deve ter sido executada com o conector de rede SHELL_INGRESS (arn:aws:lambda:). Se a microVM não tiver sido iniciada com esse conector, us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token falhará com uma ValidationException:
aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30
Para obter uma orientação completa sobre como se conectar ao shell da microVM, consulte Acesso ao shell.
Marcar recursos
As imagens do Lambda MicroVM oferecem suporte a tags de recursos da AWS para organização e alocação de custos. Adicione tags ao criar uma imagem usando o parâmetro --tags ou explicitamente após a criação. Você também pode listar e excluir tags, conforme demonstrado abaixo. Você também pode fazer referência às tags nas condições da política do IAM para controlar o acesso aos recursos da 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"]'
Referência das permissões do IAM
O Lambda MicroVMs define as ações do IAM a seguir. Use-as nas políticas do IAM para controlar o acesso às operações da MicroVM.
| Ação | Descrição |
|---|---|
lambda:CreateMicrovmImage |
Criar uma nova imagem da microVM |
lambda:UpdateMicrovmImage |
Atualize uma imagem existente da microVM. |
lambda:DeleteMicrovmImage |
Exclua uma imagem da microVM. |
lambda:GetMicrovmImage |
Obtenha detalhes da imagem da microVM |
lambda:ListMicrovmImages |
Liste imagens da microVM na conta. |
lambda:RunMicrovm |
Execute uma nova microVM. |
lambda:GetMicrovm |
Obtenha o estado e os detalhes da microVM. |
lambda:ListMicrovms |
Liste as microVMs na conta. |
lambda:SuspendMicrovm |
Suspenda uma microVM em execução. |
lambda:ResumeMicrovm |
Retome uma microVM suspensa. |
lambda:TerminateMicrovm |
Finalize uma microVM. |
lambda:CreateMicrovmAuthToken |
Gere um token de autenticação para uma microVM. |
lambda:CreateMicrovmShellAuthToken |
Gere um token de acesso do shell. |
Formatos do ARN dos recursos
# MicroVM image arn:aws:lambda:<region>:<account>:microvm-image:<image-name> # Network connector arn:aws:lambda:<region>:<account>:network-connector:<connector-id>
Exemplo: política de privilégios mínimos para um operador
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:ListMicrovms", "lambda:ListMicrovmImages" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:RunMicrovm", "lambda:GetMicrovm", "lambda:SuspendMicrovm", "lambda:ResumeMicrovm", "lambda:TerminateMicrovm", "lambda:CreateMicrovmAuthToken", "lambda:GetMicrovmImage" ], "Resource": "arn:aws:lambda:*:123456789012:microvm-image:*" } ] }