Artifact Analysis 会通过 Pub/Sub 提供有关自动扫描发现的漏洞和其他元数据的通知。创建或更新备注或发生实例后,该服务会向每个 API 版本的相应主题发布一条消息。请使用您所使用的 API 版本对应的主题。
准备工作
- 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 容器扫描创建的漏洞出现情况中的元数据,请跳过此步骤。
创建 Pub/Sub 主题
激活 Artifact Analysis API 后,Artifact Analysis 会自动创建具有以下主题 ID 的 Pub/Sub 主题:
container-analysis-notes-v1
container-analysis-occurrences-v1
如果主题缺失或被意外删除,您可以自行添加。例如,如果您的 Google Cloud 组织存在组织政策限制条件,要求使用客户管理的加密密钥 (CMEK) 进行加密,则可能无法看到这些主题。如果 Pub/Sub API 在此限制的拒绝列表中,服务将无法使用 Google 拥有和 Google 管理的密钥自动创建主题。
如需使用 Google 拥有的密钥和 Google 管理的密钥创建主题,请执行以下操作:
控制台
前往 Google Cloud 控制台中的 Pub/Sub 主题页面。
点击创建主题。
输入主题 ID:
container-analysis-notes-v1
以便名称与 URI 匹配:
projects/PROJECT_ID/topics/container-analysis-notes-v1
其中 PROJECT_ID 是您的 Google Cloud 项目 ID。
点击创建。
输入主题 ID:
container-analysis-occurrences-v1
以便名称与 URI 匹配:
projects/PROJECT_ID/topics/container-analysis-occurrences-v1
gcloud
在 shell 或终端窗口中运行以下命令:
gcloud pubsub topics create projects/PROJECT_ID/topics/container-analysis-notes-v1
gcloud pubsub topics create projects/PROJECT_ID/topics/container-analysis-occurrences-v1
如需详细了解 gcloud pubsub topics
命令,请参阅 topics
文档。
如需使用 CMEK 加密创建主题,请参阅 Pub/Sub 有关加密主题的说明。
无论何时创建或更新备注或事件,该服务都会向相应主题发布一条消息,但您还必须创建 Pub/Sub 订阅,才能监听事件并接收来自 Pub/Sub 服务的消息。
创建 Pub/Sub 订阅
如需监听事件,请创建与主题相关联的 Pub/Sub 订阅:
控制台
前往 Google Cloud 控制台中的 Pub/Sub 订阅页面。
点击创建订阅。
为该订阅输入一个名称。例如“notes”。
输入下面的 URI 作为备注的主题:
projects/PROJECT_ID/topics/container-analysis-notes-v1
其中 PROJECT_ID 是您的 Google Cloud 项目 ID。
点击创建。
输入下面的 URI 为发生实例创建另一个订阅:
projects/PROJECT_ID/topics/container-analysis-occurrences-v1
gcloud
如需接收 Pub/Sub 事件,您必须首先创建与 container-analysis-occurrences-v1
主题相关联的订阅:
gcloud pubsub subscriptions create \
--topic container-analysis-occurrences-v1 occurrences
今后,您可以使用新订阅来拉取与您的发生实例相关的消息:
gcloud pubsub subscriptions pull \
--auto-ack occurrences
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 载荷采用 JSON 格式,其架构如下所示:
备注:
{ "name": "projects/PROJECT_ID/notes/NOTE_ID", "kind": "NOTE_KIND", "notificationTime": "NOTIFICATION_TIME", }
发生实例:
{ "name": "projects/PROJECT_ID/occurrences/OCCURRENCE_ID", "kind": "NOTE_KIND", "notificationTime": "NOTIFICATION_TIME", }
其中:
- NOTE_KIND 是
NoteKind
中的一个值 - NOTIFICATION_TIME 是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。
查看详情
如需详细了解某条备注或某个出现情况,您可以访问存储在 Artifact Analysis 中的元数据。例如,您可以请求获取特定出现情况的所有详细信息。请参阅调查漏洞中的说明。
后续步骤
如需了解如何使用 Artifact Analysis 来存储和管理自定义元数据,请参阅创建自定义备注和出现情况。
您可以将证明与漏洞扫描结合使用,以防止存在已知安全问题的映像在您的部署环境中运行。如需了解如何执行此操作,请参阅使用 Kritis Signer 创建证明。