本页面介绍了如何将与存储在 Artifact Registry 中的制品相关的元数据存储为附件。
存储在附件中的元数据可以包括有关制品漏洞、build 出处、软件包内容、认证、漏洞评估、软件物料清单 (SBOM) 等的信息。政策系统可以使用存储在 Artifact Registry 附件中的信息,用户也可以检查这些信息,以确保合规性。
如需详细了解如何使用附件,请参阅通过附件管理元数据。
准备工作
- 如果您还没有代码库,请创建一个标准模式的代码库。
- (可选)为 Google Cloud CLI 命令配置默认值。
所需的角色
如需获得创建附件所需的权限,请让您的管理员为您授予制品的 Artifact Registry Writer (roles/artifactregistry.writer
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建连接
对于 Docker 代码库,附件必须是 OCI 制品。对于除 Docker 之外的所有格式,附件可以是任何文件类型。
您可以使用 gcloud CLI 或 Oras 在 Docker 格式的代码库中创建附件。
如需创建附件,请完成以下步骤:
gcloud(所有格式)
在使用下面的命令数据之前,请先进行以下替换:
ATTACHMENT
:附件的完全限定名称,例如projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment
。 或者,仅提供附件 ID,并使用--location
和--repository
标志。TARGET
:完全限定的版本名称。 对于 Docker 映像,您还可以使用附件所指工件的 Artifact Registry URI。在 URI 中,您可以使用摘要,也可以使用标记(对于 Docker 映像而言),例如us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
。TYPE
:附件的type
属性。对于 Docker 映像,type
必须符合 OCI 关于artifactType
属性的规范。ATTACHMENT_NAMESPACE
:附件特有的变量,用于标识附件数据源,例如example.com
。FILES
:要包含在附件中的本地文件的英文逗号分隔列表。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud artifacts attachments create ATTACHMENT \ --target=TARGET \ --attachment-type=TYPE \ --attachment-namespace=ATTACHMENT_NAMESPACE \ --files=FILES
Windows (PowerShell)
gcloud artifacts attachments create ATTACHMENT ` --target=TARGET ` --attachment-type=TYPE ` --attachment-namespace=ATTACHMENT_NAMESPACE ` --files=FILES
Windows (cmd.exe)
gcloud artifacts attachments create ATTACHMENT ^ --target=TARGET ^ --attachment-type=TYPE ^ --attachment-namespace=ATTACHMENT_NAMESPACE ^ --files=FILES
gcloud artifacts attachments create
命令。
Oras(仅限 Docker)
使用 Oras 创建附件时,Artifact Registry 会生成一个随机 UUID 用作附件名称。
在使用 Oras 之前,请完成以下步骤:
安装 Oras 1.2 或更高版本。如需验证版本,请运行
oras version
命令。配置 Oras 以通过 Artifact Registry 进行身份验证。
在运行命令之前,请先进行以下替换:
ARTIFACT_TYPE
:附件的artifactType
。IMAGE_URI
:附件所指的图片容器的 URI。FILE
:要作为附件中的元数据包含在内的本地文件。MEDIA_TYPE
:层的mediaType
。
oras attach --artifact-type ARTIFACT_TYPE IMAGE_URI FILE:MEDIA_TYPE
以下示例创建了一个附件,其中包含一个文件 (hello-world.txt
),该文件引用了一个容器映像 (my-image
),该容器映像由其 URI 和标记标识:
oras attach --artifact-type doc/example \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 \
hello-world.txt:application/vnd.me.hi
其中:
doc/example
用于定义附件的artifactType
属性。us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
是 URI,包含附件将引用的容器映像版本标记。hello-world.txt
是附件将作为其数据保存的本地文件。application/vnd.me.hi
定义图层的mediaType
。
如需查看完整指南和更多示例,请参阅 oras attach
文档。
通过清理政策管理附件
当附加的制品被删除时,Docker 代码库附件(包括 build 出处)也会被删除。如果您使用清理政策从代码库中删除映像,默认情况下,这些映像上的附件也会被删除。
为确保您要保留的附件不会因清理政策而被意外删除,您可以为包含要保留的附件的图片分配标记。然后,您可以配置清理政策,以保留带有这些标记的映像。例如,您可以为附有 build 出处的图片分配 production-signed
标记。
后续步骤
- 管理制品元数据。
- 了解如何为容器映像生成和存储 SBOM。