您可以选择将自己的元数据提供给 Artifact Analysis,以满足特定的业务需求。例如,为客户的 Docker 容器提供安全管理的组织,可以使用 Artifact Analysis 来存储和检索这些映像的安全相关元数据。
请按照以下步骤使用 Artifact Analysis API 为您的映像提供自定义漏洞元数据。您可以使用相同的说明存储和检索 Artifact Analysis 支持的任何种类的元数据。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Container Analysis API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Container Analysis API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 了解如何为项目中的元数据设置访问权限控制。如果您只使用由 Artifact Analysis 容器扫描创建的漏洞出现情况中的元数据,请跳过此步骤。
为项目创建备注和事件
本部分介绍了如何创建备注和发生实例。在此示例中,您将使用 VULNERABILITY
类型。
作为提供方,您需要在自己的项目中为每种漏洞创建备注,还需要在客户的项目中为该漏洞的备注创建事件。
创建备注
请按照以下步骤创建备注并为其指定备注 ID。
API
创建一个名为
note.json
的文件,其中包含漏洞说明和详细信息。以下代码显示了一个示例note.json
文件:{ "shortDescription": "A brief Description of the note", "longDescription": "A longer description of the note", "kind": "VULNERABILITY", "vulnerability": { "details": [ { "affectedPackage": "libexempi3", "affectedCpeUri": "cpe:/o:debian:debian_linux:7", "affectedVersionStart": { "name": "2.5.7", "revision": "1", "kind": "MINIMUM"}, "affectedVersionEnd": { "name": "2.5.9", "revision": "1", "kind": "MINIMUM"}, }, { "affectedCpeUri": "cpe:/o:debian:abc:10", "affectedPackage": "anotherPackage", } ] } }
如需详细了解记事 JSON 表示法,请参阅 Notes API 文档。
运行以下 curl 命令以创建备注:
curl -v -H "Content-Type: application/json" -H \ "Authorization: Bearer $(gcloud auth print-access-token)" \ https://containeranalysis.googleapis.com/v1/projects/PROVIDER_PROJECT_ID/notes?note_id=NOTE_ID -d @note.json
其中:
- PROVIDER_PROJECT_ID 是项目 ID。
- NOTE_ID 用于指定备注的标识符。使用长度不超过 100 个字符的字符串。
Java
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Java API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Go API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Node.js API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Ruby API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Python API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
为备注创建事件
要为备注创建事件,请按如下所述操作:
API
创建名为
occurrence.json
且包含以下内容的文件:{ "resourceUri": "<resource_url>", "noteName": "projects/<provider-project-id>/notes/<note_id>", "kind": "VULNERABILITY", "vulnerability": { "packageIssue": [{ "affectedCpeUri": "cpe:/o:debian_linux:7", "affectedPackage": "packageName", "affectedVersion": { "kind": "NORMAL", "name": "8.1", "revision": "3" }, "fixedCpeUri": "cpe:/o:debian_linux:7", "fixedPackage": "packageName", "fixedVersion": { "kind": "MAXIMUM" } }] "severity": "LOW" } }
其中:
- resource_url 是与相应出现情况关联的资源的网址,例如
https://us-central1-docker.pkg.dev/my-project/my-repository/my-image@sha256:123
。 - note_id 用于指定备注的标识符。使用长度不超过 100 个字符的字符串。
如需详细了解出现次数 JSON 表示法,请参阅 Occurrences API 文档。
- resource_url 是与相应出现情况关联的资源的网址,例如
运行以下 curl 命令,其中 CUSTOMER_PROJECT_ID 是客户的项目 ID:
curl -v -H "Content-Type: application/json" -H \ "Authorization: Bearer $(gcloud auth print-access-token)" \ https://containeranalysis.googleapis.com/v1/projects/CUSTOMER_PROJECT_ID/occurrences -d @occurrence.json
Java
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Java API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Go API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Node.js API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Ruby API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Python API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
获取特定备注的所有事件
您可以使用 notes.occurrences.list()
查看客户项目中特定漏洞的所有发生实例。
API
如需列出某一备注的所有发生实例,请按如下方式发送 GET 请求:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes/NOTE_ID/occurrences
如需了解完整的详细信息,请参阅 projects.notes.occurrences.list
API 端点。
Java
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Java API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Go API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Node.js API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Ruby API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用工件分析的客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Python API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
后续步骤
如需了解如何查看和过滤容器映像的备注和发生实例,请参阅查看漏洞事件。
如需了解如何设置通知,请参阅 Pub/Sub 通知。