View a markdown version of this page

보안 및 권한 - AWS Lambda

보안 및 권한

이 섹션에서는 AWS Lambda MicroVM에 대한 IAM 역할, 인증 토큰 및 액세스 제어를 설명합니다.

IAM 역할

빌드 역할

이 역할은 이미지 생성 중 사용됩니다. 소스 아티팩트를 검색하고 로그를 생성하려면 s3:GetObject, logs:CreateLogGroup, logs:CreateLogStreamlogs:PutLogEvents 권한이 필요합니다. 프라이빗 ECR 이미지를 참조하는 경우 ecr:GetAuthorizationToken도 추가합니다.

빌드 역할은 선택 사항입니다. 빌드 역할을 제공하지 않으면 Lambda는 CloudWatch에 빌드 로그를 쓸 수 없습니다.

실행 역할

이 역할은 MicroVM 런타임에서 CloudWatch에 로그를 기록하고 다른 AWS 서비스를 사용할 수 있는 액세스 권한을 제공하는 데 사용됩니다.

실행 역할은 선택 사항입니다. 실행 역할을 제공하지 않으면 Lambda는 CloudWatch에 런타임 로그를 내보내지 않으며 MicroVM은 다른 AWS 서비스에 액세스할 수 없습니다.

수명 주기 후크는 해당 단계와 연결된 역할로 실행됩니다. 빌드 시간 후크(/ready/validate)는 빌드 역할로 실행됩니다. 런타임 후크(/run, /resume, /suspend/terminate)는 실행 역할로 실행됩니다.

신뢰 정책

두 역할 모두 Lambda 서비스 위탁자 lambda.amazonaws.comsts:AssumeRolests: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:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS)를 사용하여 실행되어야 합니다. MicroVM이 이 커넥터를 사용하여 시작되지 않은 경우 create-microvm-shell-auth-tokenValidationException과 함께 실패합니다.

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