View a markdown version of this page

安全與許可 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安全與許可

本節說明 AWS Lambda MicroVMs 的 IAM 角色、身分驗證字符和存取控制。

IAM 角色

組建角色

此角色會在映像建立期間使用。它需要下列許可才能擷取來源成品並產生日誌:s3:GetObjectlogs:CreateLogStreamlogs:CreateLogGrouplogs:PutLogEventsecr:GetAuthorizationToken 如果參考私有 ECR 映像,也請新增 。

建置角色是選用的。如果您不提供建置角色,Lambda 無法將建置日誌寫入 CloudWatch。

執行角色

此角色用於 MicroVM 執行期,以提供將日誌寫入 CloudWatch 並使用其他服務的存取許可 AWS 。

執行角色是選用的。如果您不提供執行角色,Lambda 不會向 CloudWatch 發出執行期日誌,而且您的 MicroVM 無法存取其他 AWS 服務。

生命週期掛鉤會在與其階段相關聯的角色下執行。在建置角色下執行建置時間掛鉤 (/ready/validate)。執行期關聯 (/run/suspend/resume/terminate) 會在執行角色下執行。

信任政策

這兩個角色都需要信任政策,允許 Lambda 服務主體lambda.amazonaws.com執行 sts:AssumeRolests:TagSession

身分驗證字符

權杖控制對執行 MicroVMs傳入存取。它們是連接埠範圍;每個字符指定其授予存取權的連接埠。

# 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 資源 (映像、MicroVMs) 支援組織和成本分配 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 操作的存取。

Action 說明
lambda:CreateMicrovmImage 建立新的 MicroVM 映像。
lambda:UpdateMicrovmImage 更新現有的 MicroVM 映像。
lambda:DeleteMicrovmImage 刪除 MicroVM 映像。
lambda:GetMicrovmImage 取得 MicroVM 映像詳細資訊。
lambda:ListMicrovmImages 列出帳戶中的 MicroVM 映像。
lambda:RunMicrovm 執行新的 MicroVM。
lambda:GetMicrovm 取得 MicroVM 狀態和詳細資訊。
lambda:ListMicrovms 列出帳戶中MicroVMs。
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:*" } ] }