与 Assured OSS 集成以实现代码安全性

借助安全开源软件 (Assured OSS),您可以使用 Google 在自己的开发者工作流程中使用的 OSS 软件包增强代码安全性。使用 Assured OSS 时,您的开发者可以充分利用 Google 在保护自己的开源依赖项方面积累的安全专业知识和经验。

将 Assured OSS 与 Security Command Center 集成后,您可以执行以下操作:

  • 从 3,700 多个精选和最受欢迎的 Java 和 Python 软件包中进行选择,包括 TensorFlow、Pandas 和 Scikit-learn 等常见的机器学习和人工智能项目。
  • 配置安全代理以下载带有 Assured OSS 证明的所有 Java、Python 和 JavaScript 软件包,让 Google 成为知名且可信的供应商。
  • 在 Assured OSS 中使用以 SPDX 和 CycloneDX 等行业标准格式提供的 SBOM 和 VEX 来详细了解您的成分。
  • 通过 Google 签名的防篡改出处,提高对所用软件包完整性的信心。
  • Google 会主动扫描、查找和修复精选软件包中的新漏洞,因此可以降低安全风险。

准备工作

请先完成这些任务,然后再完成此页面中的其余任务。

激活 Security Command Center Enterprise 层级

验证是否已在组织级别激活 Security Command Center Enterprise 层级,并且您已完成设置指南中的前六个步骤。

在组织级别设置权限

您必须在组织级别和项目级别设置权限。

  1. 确保您拥有组织的以下一个或多个角色: Security Center Admin, Organization Admin

    检查角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择组织。
    3. 主账号列中,找到您的电子邮件地址所在的行。

      如果您的电子邮件地址不在此列,则表示您没有任何角色。

    4. 在您的电子邮件地址所在的行对应的角色列中,检查角色列表是否包含所需的角色。

    授予角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择组织。
    3. 点击 授予访问权限
    4. 新的主账号字段中,输入您的电子邮件地址。
    5. 选择角色列表中,选择一个角色。
    6. 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
    7. 点击 Save(保存)。

在项目级别设置权限

  1. 确保您拥有项目的以下一个或多个角色: Service Usage Admin, Service Account Admin, Project IAM Admin

    检查角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 主账号列中,找到您的电子邮件地址所在的行。

      如果您的电子邮件地址不在此列,则表示您没有任何角色。

    4. 在您的电子邮件地址所在的行对应的角色列中,检查角色列表是否包含所需的角色。

    授予角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 点击 授予访问权限
    4. 新的主账号字段中,输入您的电子邮件地址。
    5. 选择角色列表中,选择一个角色。
    6. 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
    7. 点击 Save(保存)。

设置 Google Cloud CLI

您可以从以下任一开发环境使用本页面上的 gcloud CLI 示例:

  • Cloud Shell:如需使用已设置 gcloud CLI 的在线终端,请激活 Cloud Shell。

    Cloud Shell 会话会在页面底部启动,并显示命令行提示符。该会话可能需要几秒钟来完成初始化。

  • 本地 shell:如需在本地开发环境中使用 gcloud CLI,请安装初始化 gcloud CLI。

设置 Assured OSS

控制台

  1. 在 Google Cloud 控制台中,前往 Security Command Center 风险概览页面。

    前往“风险概览”

  2. 验证您正在查看的组织是否启用了 Security Command Center Enterprise 层级。

  3. 点击查看设置指南

  4. 点击设置代码安全

  5. 选择新的服务帐号,或者选择要向其添加 Assured Open Source Software 权限的现有服务帐号。

  6. 选择要在其中查找 Assured OSS 资源的 Google Cloud 项目。

  7. 点击设置 Assured OSS

    设置过程会自动完成以下操作:

    • 如果选中此选项,则会创建新服务帐号 assuredoss@PROJECT_ID.gservicesaccount.com
    • 将 Assured OSS User 角色分配给指定的服务帐号,以便与 Assured OSS 配合使用。
    • 将 Assured OSS Admin 角色分配给登录的用户账号,以便该账号可以配置服务。
    • 启用 Assured Open Source Software API;如果未启用,则启用 Artifact Registry API。
    • 在所选项目的 Artifact Registry 实例中设置 Assured OSS 代理服务。为每种语言(Java、Python 和 JavaScript)预配了一个仓库。这些代码库可以自动从精选组合中提取软件包。如果某个软件包未作为精选组合的一部分提供,代码库会将请求重定向到规范代码库。代理服务仅支持美国区域。
    • 向您和服务帐号授予访问 Google 自有项目中的软件包元数据和通知的权限。
  8. 为每个指定的 Assured OSS 服务帐号创建服务帐号密钥,并以 JSON 格式下载密钥。

  9. 在本地机器上的命令行中,对下载的密钥文件运行以下命令,以获取 base64 编码的字符串:

    base64 KEY_FILENAME.json
    

    KEY_FILENAME.json 替换为您下载的服务帐号密钥的名称。

    为 Assured OSS 设置远程仓库时,您需要使用 base64 编码的字符串。

  10. 如需下载软件包,请使用 Assured OSS 为每种语言预配的端点。记下这些端点以备后续使用。

    • Java:
      http://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      http://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      http://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    PROJECT_ID 替换为您在设置 Assured OSS 时所选项目的 ID。

  11. 点击下一步。使用贵组织的工件代码库管理器(如 JFrog Artifactory 或 Sonatype Nexus)配置 Assured OSS

gcloud

  1. 使用您要用来启用 Assured OSS 的用户帐号向 Google Cloud 进行身份验证:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login
    
  2. 搜索要查找 Assured OSS 资源的项目:

    gcloud alpha projects search --query="displayName=PROJECT_NAME"
    

    PROJECT_NAME 替换为项目名称。

  3. 设置要在其中找到 Assured OSS 资源的项目:

    gcloud config set project PROJECT_ID
    

    PROJECT_ID 替换为项目标识符。

  4. 向用户账号授予角色以设置 Assured OSS:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/assuredoss.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/serviceusage.serviceUsageAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/iam.serviceAccountAdmin
    

    其中,[email protected] 是您的用户帐号的电子邮件地址。

  5. 在项目中启用 Assured OSS。启用 Assured OSS 也会启用 Artifact Registry API。

    gcloud services enable assuredoss.googleapis.com
    
  6. 如需为 Assured OSS 创建新的服务帐号(而不是使用现有服务帐号),请完成以下步骤:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="Service account for using Assured OSS"
      --display-name="Assured OSS service account"
    

    SERVICE_ACCOUNT_NAME 替换为服务帐号的名称(例如 assuredoss)。

  7. 为 Assured OSS 配置服务账号:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/assuredoss.user
    

    请替换以下内容:

    • SERVICE_ACCOUNT_NAME:服务帐号的名称(例如 assuredoss)。
    • PROJECT_ID:项目标识符。
  8. 通过创建 Assured OSS 代码库,在 Artifact Registry 实例中设置 Assured OSS 代理服务。您必须为所有语言创建代码库。用于配置代码库的 Assured OSS 代理服务仅支持美国区域。

    alias gcurlj='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X'
    
    gcurlj POST http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
    

    PROJECT_ID 替换为您在设置 Assured OSS 时所选项目的 ID。

    这些代码库可以自动从精选组合中拉取软件包。如果某个软件包未包含在精选组合中,代码库会将请求重定向到规范代码库。

  9. 为每个 Assured OSS 服务帐号创建服务帐号密钥,并以 JSON 格式下载密钥。

  10. 在命令行中,对下载的密钥文件运行以下命令,以获取 base64 编码的字符串:

    base64 KEY_FILENAME.json
    

    KEY_FILENAME.json 替换为您下载的服务帐号密钥的名称。

    为 Assured OSS 设置远程仓库时,您需要使用 base64 编码的字符串。

  11. 如需下载软件包,请使用 Assured OSS 为每种语言预配的端点。记下以下端点:

    • Java:
      http://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python:
      http://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      http://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    PROJECT_ID 替换为您在设置 Assured OSS 时所选项目的 ID。

  12. 配置 Assured OSS,以使用贵组织的工件代码库管理器(例如 JFrog Artifactory 或 Sonatype Nexus)下载软件包。

  13. (可选)查看可用的 Java、Python 和 JavaScript 软件包:

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login --cred-file=KEY_FILENAME.json
    

    KEY_FILENAME.json 替换为您下载的服务帐号密钥的名称。

    export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILENAME.json
    

    KEY_FILENAME.json 替换为您下载的服务帐号密钥的名称。

    gcurlj GET "http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
    gcurlj GET "http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
    gcurlj GET "http://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
    

    PROJECT_ID 替换为您在设置 Assured OSS 时所选项目的 ID。

后续步骤