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

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:*" } ] }