安全性和权限
本节介绍 AWS Lambda MicroVMs 的 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}]'
Shell 访问令牌
Shell 访问需要使用单独的令牌 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 Shell 的完整演示,请参阅Shell 访问权限。
标注资源
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 MicroVMs 定义了以下 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 |
生成一个 Shell 访问令牌。 |
资源 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:*" } ] }