本页面介绍了如何将软件物料清单 (SBOM) 文件上传到 Cloud Storage,以帮助跟踪和证明您存储在 Artifact Registry 中的容器映像的组件。
如需了解 Cloud Storage 价格,请参阅 价格。
准备工作
-
登录您的 Google 账号。
如果您还没有 Google 账号,请 注册新账号。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Analysis APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Analysis APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init - 在 Artifact Registry 中拥有一个 Docker 代码库,其中包含 SBOM 所描述的容器映像。如果您不熟悉 Artifact Registry,请参阅 Docker 快速入门。
- 准备好采用支持的格式之一上传 SBOM 文件。
所需角色
如需获得创建和管理 Cloud Storage 存储分区和 SBOM 文件所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
如果您使用的是默认 Cloud Storage 存储桶,则需要以下角色来管理存储分区:
Storage Admin(
roles/storage.admin) -
如果您指定了 Cloud Storage 存储桶,则需要以下角色来管理存储分区:
Storage Object Admin(
roles/storage.objectAdmin) -
如果 SBOM 参考的备注已存在,则需要以下角色:
Container Analysis Notes Attacher (
roles/containeranalysis.notes.attacher) -
如需在当前项目中为 SBOM 参考出现创建新备注,则需要以下角色:
Container Analysis Notes Editor(
(roles/containeranalysis.notes.editor) -
如需创建 SBOM 参考发生实例,则需要以下角色:
Container Analysis Occurrences Editor(
roles/containeranalysis.occurrences.editor)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。
支持的格式
您的 SBOM 文件必须是采用以下格式之一的 JSON 文件:
- 软件包数据交换 (SPDX) 版本 2.2 或 2.3
- CycloneDX 版本 1.4 或 1.5
上传 SBOM
使用以下命令上传 SBOM:
gcloud artifacts sbom load /
--source SOURCE /
--uri URI
其中:
- SOURCE:要上传的 SBOM 文件的路径。
- URI:SBOM 文件所描述的 Docker 映像的 URI。 映像可以采用标记格式或摘要格式。以标记格式提供的映像将解析为摘要格式。
可选标志
--destination:指定要使用的 Cloud Storage 存储桶,而不是默认存储分区。--kms-key-version:提供用于签署 SBOM 参考发生实例载荷的密钥版本。您可以使用此密钥来验证 SBOM 的来源。
例如,以下命令上传了从标记的映像 us-east1-docker.pkg.dev/my-image-repo/my-image 生成的 JSON 文件 my-sbom.bom.json,并使用以 my-key/cryptoKeyVersions/1 结尾的 KMS 密钥版本签署了 SBOM 参考发生实例。
gcloud artifacts sbom load /
--source=my-sbom.bom.json
--uri=us-east1-docker.pkg.dev/my-image-repo/my-image
--kms-key-version=projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/1
以下命令上传了与映像摘要 my-local-image@sha256:abcxyz 关联的 JSON 文件 my-sbom.spdx.json,并将该文件存储在 Cloud Storage 存储桶 gs://my-sbom-bucket 中。
gcloud artifacts sbom load /
--source=my-sbom.spdx.json /
--uri=my-local-image@sha256:abcxyz /
--destination=gs://my-sbom-bucket
Artifact Analysis 会将您的 SBOM 上传到 Cloud Storage 并创建 SBOM 参考发生实例。
您可以使用 Google Cloud 控制台或 gcloud CLI 查看 SBOM。 如果您想找到包含您的 SBOM 的 Cloud Storage 存储桶,则必须 使用 gcloud CLI 搜索 SBOM。