View a markdown version of this page

安全性和权限 - AWS Lambda

安全性和权限

本节介绍 AWS Lambda MicroVMs 的 IAM 角色、身份验证令牌和访问控制。

IAM 角色

构建角色

此角色将在映像创建期间使用。该角色需要以下权限以检索源构建和生成日志:s3:GetObjectlogs:CreateLogGrouplogs:CreateLogStreamlogs:PutLogEvents。如果引用私有 ECR 映像,则还需要添加 ecr:GetAuthorizationToken 权限。

构建角色是可选的。如果不提供构建角色,Lambda 将无法将构建日志写入 CloudWatch。

执行角色

此角色将在 MicroVM 运行时使用,提供将日志写入 CloudWatch 以及使用其他 AWS 服务的访问权限。

执行角色是可选的。如果不提供执行角色,则 Lambda 不会向 CloudWatch 发送运行时日志,并且您的 MicroVM 也无法访问其他 AWS 服务。

生命周期挂钩在与其阶段相关的角色下执行。构建时钩子(/ready/validate)在构建角色下执行。运行时钩子(/run/resume/suspend/terminate)在执行角色下执行。

信任策略

这两个角色都需要一个允许 Lambda 服务主体 lambda.amazonaws.com 执行 sts: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}]'

Shell 访问令牌

Shell 访问需要使用单独的令牌 API。目标 MicroVM 必须使用 SHELL_INGRESS 网络连接器 (arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS) 运行。如果 MicroVM 不是使用该连接器启动的,则 create-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:*" } ] }