

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

# 安全與許可
<a name="microvms-security"></a>

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

## IAM 角色
<a name="microvms-security-iam-roles"></a>

### 組建角色
<a name="microvms-security-build-role"></a>

此角色會在映像建立期間使用。它需要下列許可才能擷取來源成品並產生日誌：`s3:GetObject`、`logs:CreateLogStream`、 `logs:CreateLogGroup`和 `logs:PutLogEvents`。`ecr:GetAuthorizationToken` 如果參考私有 ECR 映像，也請新增 。

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

### 執行角色
<a name="microvms-security-execution-role"></a>

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

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

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

### 信任政策
<a name="microvms-security-trust-policies"></a>

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

## 身分驗證字符
<a name="microvms-security-auth-tokens"></a>

權杖控制對執行 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 存取字符
<a name="microvms-security-shell-tokens"></a>

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 存取](microvms-troubleshooting.md#microvms-troubleshooting-shell)。

## 標記資源
<a name="microvms-security-tagging"></a>

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 許可參考
<a name="microvms-security-iam-reference"></a>

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 格式
<a name="microvms-security-resource-arns"></a>

```
# 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>
```

## 範例： 運算子的最低權限政策
<a name="microvms-security-least-privilege"></a>

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