工作负载操作员可以将选项传递给 Confidential Space 工作负载虚拟机,以便在其运行之前确定其行为。虽然某些标志具有不变的必需值,但您仍需要做出以下选择:
是否使用 AMD SEV 或 Intel TDX 机密计算技术。
需要传递哪些 VM 元数据变量,其中包括要运行哪个工作负载容器映像、是否要记录日志到 Cloud Logging 以及要设置哪些环境变量等详细信息。
要附加到虚拟机上运行工作负载的服务账号,以及该服务账号需要哪些权限才能访问其他项目中的机密数据并将结果写入某个位置。
虚拟机实例应在哪个可用区运行。
以下示例说明了如何根据最新的生产 Confidential Space 映像在 us-west1-b
可用区中创建机密虚拟机,并运行名为 WORKLOAD_CONTAINER_NAME 的 Docker 容器:
gcloud compute instances create workload-vm-name \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--zone=us-west1-b
下表中详细说明了此示例中使用的选项。
标志 | 说明 |
---|---|
--confidential-compute-type |
必需。指示 Compute Engine 在创建机密虚拟机实例时使用哪种机密计算技术。
将
机密计算技术应与您选择的映像系列相匹配。 |
--machine-type |
可选。指定机密虚拟机机器类型名称。如需了解支持 AMD SEV 和 Intel TDX(预览版)的机器类型,请参阅 支持的配置。 |
--maintenance-policy |
对于使用 SEV 的 N2D 机器类型,请将此值设置为 MIGRATE 以支持实时迁移。对于所有其他机器类型,请将此值设置为 TERMINATE ,因为它们
不支持实时迁移。
|
--shielded-secure-boot |
必需。指示 Compute Engine 对实例使用 安全启动。 |
--image-project=confidential-space-images |
必需。指示 Compute Engine 在 confidential-space-images 项目中查找
Confidential Space 映像。
|
|
必需。指示 Compute Engine 使用最新的 Confidential Space 映像,该映像属于
如需将生产映像用于处理机密数据的最终工作负载,请将
如需将调试映像用于
监控和调试,请将
您使用的映像系列应与您选择的机密计算技术相匹配。 |
--metadata |
必需。通过传入变量来更改 Confidential Space 虚拟机的行为。 如需查看可用的键值对,请参阅元数据变量。 |
--service-account |
可选。关联到运行工作负载的虚拟机实例的服务账号,并冒充关联到其他项目中工作负载身份池的服务账号。如果未指定,则使用默认 Compute Engine 服务账号。 |
--scopes=cloud-platform |
必需。设置
访问权限范围。
cloud-platform 范围是
大多数 Google Cloud 服务的 OAuth 范围,可让虚拟机与证明验证程序通信。
|
--zone |
必需。虚拟机实例在其中运行的可用区。Confidential Space 需要以下服务,这些服务可在特定位置使用: |
关联的服务账号
必须将服务账号附加到工作负载的机密虚拟机才能运行该工作负载。服务账号必须按以下方式设置:
具有以下角色:
roles/confidentialcomputing.workloadUser
来生成认证令牌。roles/artifactregistry.reader
用于检索存储在 Artifact Registry 中的工作负载容器映像。roles/logging.logWriter
,如果您想将STDOUT
和STDERR
重定向到 Cloud Logging。
对数据协作者存储其机密数据的位置(例如 Cloud Storage 存储桶或 BigQuery 表)拥有读取权限。
对工作负载应输出数据的位置(例如 Cloud Storage 存储桶)具有写入权限。数据协作者应对此位置拥有读取权限。
此外,数据协作者和工作负载操作员需要设置以下内容:
数据协作者必须将服务账号作为属性条件添加到其工作负载身份池提供程序中:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
工作负载操作员需要具有
roles/iam.serviceAccountUser
角色才能模拟服务账号。这样,他们就可以将其附加到工作负载虚拟机,以便其运行工作负载。
元数据变量
您可以在创建虚拟机时将变量传递到 --metadata
选项,以更改 Confidential Space 工作负载虚拟机行为。
如需传入多个变量,请首先在 --metadata
值前面添加 ^~^
来设置分隔符。这会将分隔符设置为 ~
,因为变量值中使用了 ,
。
例如:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
下表详细介绍了您可以为工作负载虚拟机设置的元数据变量。
元数据键 | 类型 | 说明和值 |
---|---|---|
与以下各项互动:
|
字符串 |
必需。指向工作负载容器所在的位置。 示例
|
与以下各项互动:
|
JSON 字符串数组 |
替换工作负载容器的 示例
|
与以下各项互动:
|
已定义的字符串 |
将 有效值包括:
串行控制台中的日志量过大可能会影响工作负载性能。 示例
|
|
整数 |
设置 示例
|
与以下各项互动:
|
字符串 |
在工作负载容器中设置环境变量。 工作负载作者还必须将环境变量名称添加到
示例
|
与以下各项互动:
|
字符串 |
工作负载操作员可以模拟的服务账号列表。工作负载操作员必须能够模拟服务账号。 可以列出多个服务账号(以英文逗号分隔)。 示例
|
与以下各项互动:
|
布尔值 |
默认为 示例
|
与以下各项互动:
|
字符串 |
以英文分号分隔的挂载定义列表。挂载定义由键值对的逗号分隔列表组成,需要 示例
|
与以下各项互动:
|
已定义的字符串 |
工作负载停止时容器启动器的重启政策 有效值包括:
此变量仅受生产 Confidential Space 映像支持。 示例
|
与以下各项互动:
|
字符串 |
以英文逗号分隔的容器代码库列表,用于存储由 Sigstore Cosign 生成的签名。 示例
|
扩缩
如需了解如何伸缩和实现生产 Confidential Space 工作负载的高可用性,请参阅托管实例组。