보안 및 권한
이 섹션에서는 AWS Lambda MicroVM에 대한 IAM 역할, 인증 토큰 및 액세스 제어를 설명합니다.
IAM 역할
빌드 역할
이 역할은 이미지 생성 중 사용됩니다. 소스 아티팩트를 검색하고 로그를 생성하려면 s3:GetObject, logs:CreateLogGroup, logs:CreateLogStream 및 logs:PutLogEvents 권한이 필요합니다. 프라이빗 ECR 이미지를 참조하는 경우 ecr:GetAuthorizationToken도 추가합니다.
빌드 역할은 선택 사항입니다. 빌드 역할을 제공하지 않으면 Lambda는 CloudWatch에 빌드 로그를 쓸 수 없습니다.
실행 역할
이 역할은 MicroVM 런타임에서 CloudWatch에 로그를 기록하고 다른 AWS 서비스를 사용할 수 있는 액세스 권한을 제공하는 데 사용됩니다.
실행 역할은 선택 사항입니다. 실행 역할을 제공하지 않으면 Lambda는 CloudWatch에 런타임 로그를 내보내지 않으며 MicroVM은 다른 AWS 서비스에 액세스할 수 없습니다.
수명 주기 후크는 해당 단계와 연결된 역할로 실행됩니다. 빌드 시간 후크(/ready 및 /validate)는 빌드 역할로 실행됩니다. 런타임 후크(/run, /resume, /suspend 및 /terminate)는 실행 역할로 실행됩니다.
신뢰 정책
두 역할 모두 Lambda 서비스 위탁자 lambda.amazonaws.com이 sts:AssumeRole 및 sts:TagSession을 수행할 수 있도록 허용하는 신뢰 정책이 필요합니다.
인증 토큰
토큰은 실행 중인 MicroVM에 대한 인바운드 액세스를 제어합니다. 토큰은 포트 범위가 지정되며, 각 토큰은 액세스 권한을 부여하는 포트를 지정합니다.
# 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}]'
쉘 액세스 토큰
쉘 액세스는 별도의 토큰 API를 사용합니다. 대상 MicroVM은 SHELL_INGRESS 네트워크 커넥터(arn:aws:lambda:)를 사용하여 실행되어야 합니다. MicroVM이 이 커넥터를 사용하여 시작되지 않은 경우 us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token은 ValidationException과 함께 실패합니다.
aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30
MicroVM 쉘 연결에 대한 전체 단계별 안내는 쉘 액세스 섹션을 참조하세요.
리소스에 태그 지정
Lambda MicroVM 리소스(이미지, MicroVM)는 구성과 비용 할당을 위한 AWS 리소스 태그를 지원합니다. --tags 파라미터를 사용하거나 생성 후 명시적으로 이미지를 생성할 때 태그를 추가합니다. 아래와 같이 태그를 나열하고 삭제할 수도 있습니다. IAM 정책 조건에서 태그를 참조하여 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"]'
IAM 권한 참조
Lambda MicroVM은 다음과 같은 IAM 작업을 정의합니다. IAM 정책에서 이를 사용하여 MicroVM 작업에 대한 액세스를 제어합니다.
| 작업 | 설명 |
|---|---|
lambda:CreateMicrovmImage |
새 MicroVM 이미지를 생성합니다. |
lambda:UpdateMicrovmImage |
기존 MicroVM 이미지를 업데이트합니다. |
lambda:DeleteMicrovmImage |
MicroVM 이미지를 삭제합니다. |
lambda:GetMicrovmImage |
MicroVM 이미지 세부 정보를 가져옵니다. |
lambda:ListMicrovmImages |
계정의 MicroVM 이미지를 나열합니다. |
lambda:RunMicrovm |
새 MicroVM을 실행합니다. |
lambda:GetMicrovm |
MicroVM 상태 및 세부 정보를 가져옵니다. |
lambda:ListMicrovms |
계정의 MicroVM을 나열합니다. |
lambda:SuspendMicrovm |
실행 중인 MicroVM을 일시 중지합니다. |
lambda:ResumeMicrovm |
일시 중지된 MicroVM을 재개합니다. |
lambda:TerminateMicrovm |
MicroVM을 종료합니다. |
lambda:CreateMicrovmAuthToken |
MicroVM에 대한 인증 토큰을 생성합니다. |
lambda:CreateMicrovmShellAuthToken |
쉘 액세스 토큰을 생성합니다. |
리소스 ARN 형식
# 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>
예시: 운영자에 대한 최소 권한 정책
{ "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:*" } ] }