Artifact Analysis 通过 Pub/Sub 发送有关自动扫描发现的漏洞和其他元数据的通知。当创建或更新注释或事件时,系统会针对每个 API 版本向相应的主题发布消息。请使用与您所用 API 版本对应的主题。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
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.
Enable the Container Analysis API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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.
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.
Enable the Container Analysis API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 容器扫描创建的发生实例中的元数据,请跳过此步骤。
创建 Pub/Sub 主题
激活 Artifact Analysis API 后,Artifact Analysis 会自动创建具有以下主题 ID 的 Pub/Sub 主题:
container-analysis-notes-v1container-analysis-occurrences-v1
如果主题被意外删除或缺失,您可以自行添加。例如,如果您的 Google Cloud组织具有组织政策限制条件,要求使用客户管理的加密密钥 (CMEK) 进行加密,则主题可能缺失。当 Pub/Sub API 位于此限制的拒绝列表中时,服务无法使用Google-owned and Google-managed encryption keys自动创建主题。
如需使用 Google-owned and Google-managed encryption keys创建主题,请执行以下操作:
控制台
前往 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 客户端库。 如需了解详情,请参阅 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", }
其中:
- NOTE_KIND 是
NoteKind中的一个值 - NOTIFICATION_TIME 是一个时间戳,采用 RFC 3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒。
查看详情
如需详细了解备注或发生实例,您可以访问存储在 Artifact Analysis 中的元数据。例如,您可以请求特定发生实例的所有详细信息。请参阅调查漏洞中的说明。
后续步骤
- 如需了解如何使用 Artifact Analysis 存储和管理自定义元数据,请参阅创建自定义备注和发生实例。