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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 了解如何为项目中的元数据设置访问权限控制。如果您仅使用 Artifact Analysis 容器扫描创建的漏洞发生实例中的元数据,请跳过此步骤。
container-analysis-notes-v1
container-analysis-occurrences-v1
前往 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
前往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
- NOTE_KIND 是
NoteKind
中的一个值 - NOTIFICATION_TIME 是采用 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式的时间戳,精确到纳秒。
如需了解如何使用 Artifact Analysis 存储和管理自定义元数据,请参阅创建自定义注释和出现情况。
您可以将证明与漏洞扫描搭配使用,以防止存在已知安全问题的映像在您的部署环境中运行。如需了解如何执行此操作,请参阅使用 Kritis Signer 创建证明。
创建 Pub/Sub 主题
激活 Artifact Analysis API 后,Artifact Analysis 会自动创建具有以下主题 ID 的 Pub/Sub 主题:
如果主题缺失或被意外删除,您可以自行添加。例如,如果您的 Google Cloud组织具有组织政策限制条件,要求使用客户管理的加密密钥 (CMEK) 进行加密,则主题可能缺失。当 Pub/Sub API 位于此限制条件的拒绝列表中时,服务无法自动创建带有Google-owned and Google-managed encryption keys的主题。
如需使用 Google-owned and Google-managed encryption keys创建主题,请执行以下操作:
控制台
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 订阅:
控制台
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 客户端库。 如需了解详情,请参阅 Artifact Analysis Java API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Artifact Analysis 客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Go API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Artifact Analysis 客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Node.js API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Artifact Analysis 客户端库,请参阅 Artifact Analysis 客户端库。 如需了解详情,请参阅 Artifact Analysis Ruby API 参考文档。
如需向 Artifact Analysis 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Artifact Analysis 客户端库,请参阅 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", }
其中:
查看详情
如需详细了解某个备注或事件,您可以访问存储在 Artifact Analysis 中的元数据。例如,您可以请求特定事件的所有详细信息。请参阅调查漏洞中的说明。