View a markdown version of this page

Segurança e permissões - AWS Lambda

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:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS). Se a microVM não tiver sido iniciada com esse conector, create-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:*" } ] }