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
Os recursos do Lambda MicroVM (imagens, microVMs) oferecem suporte às 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> # MicroVM instance arn:aws:lambda:<region>:<account>:microvm:<microvm-id> # 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: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:*" } ] }