与 Assured OSS 集成确保代码安全

借助 Assured Open Source Software (Assured OSS) 高级 层级,您可以使用 Google 用于其自身开发者 工作流的 OSS 软件包来增强代码 安全性。使用 Assured OSS 时,您的开发者可以利用 Google 为保护自己的开源依赖项而应用的安全专业知识和经验。

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

  • 从数以千计最受欢迎的精选 Java、Python 和 Go 软件包中进行选择,包括 TensorFlow、Pandas 和 Scikit-learn 等常见的机器学习和人工智能项目。
  • 配置一个安全代理,用以从 Assured OSS 下载所有附带证明的 Java、Python、Go 和 JavaScript 软件包,让 Google 这个身份明确、值得信赖的供应方成为您的坚实后盾。
  • 使用 Assured OSS 中以 SPDX 和 CycloneDX 等业界标准格式提供的 SBOM 和 VEX,来更深入地了解您所使用的软件组件。
  • 通过 Google 提供的有签名的防篡改构建来源,提高对您所用软件包完整性的信心。
  • 由于 Google 会主动扫描、查找和修复精选软件包中的新漏洞,因此可降低安全风险。

准备工作

请先完成以下任务,然后再完成本页面上的其余任务。

激活 Security Command Center 企业方案或高级层级

验证是否已在 组织级激活 Security Command Center 高级方案Security Command Center 企业方案

在组织级设置权限

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

    确保您在该组织中拥有以下一个或多个角色: Security Center 管理员、组织管理员

    检查角色

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

      转到 IAM
    2. 选择组织。
    3. 主账号 列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的 管理员联系。

    4. 对于指定或包含您的所有行,请检查角色 列以查看 角色列表是否包含所需的角色。

    授予角色

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

      转到 IAM
    2. 选择组织。
    3. 点击 授予访问权限
    4. 新的主账号 字段中,输入您的用户标识符。 这通常是员工身份池中的用户的标识符。如需了解详情, 请参阅 在 IAM 政策中表示员工池用户,或与您的管理员联系。

    5. 点击选择角色,然后搜索相应角色。
    6. 如需授予其他角色,请点击 添加其他角色 ,然后添加其他各个角色。
    7. 点击 Save (保存)。

在项目级设置权限

    确保您在项目中拥有以下一个或多个角色: Service Usage 管理员、服务账号管理员、Project IAM 管理员

    检查角色

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

      转到 IAM
    2. 选择项目。
    3. 主账号 列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的 管理员联系。

    4. 对于指定或包含您的所有行,请检查角色 列以查看 角色列表是否包含所需的角色。

    授予角色

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

      转到 IAM
    2. 选择项目。
    3. 点击 授予访问权限
    4. 新的主账号 字段中,输入您的用户标识符。 这通常是员工身份池中的用户的标识符。如需了解详情, 请参阅 在 IAM 政策中表示员工池用户,或与您的管理员联系。

    5. 点击选择角色,然后搜索相应角色。
    6. 如需授予其他角色,请点击 添加其他角色 ,然后添加其他各个角色。
    7. 点击 Save (保存)。

设置 Google Cloud CLI

安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后, 初始化 Google Cloud CLI,方法是运行以下命令:

gcloud init

设置 Assured OSS

控制台

以下步骤仅适用于 Security Command Center Enterprise 层级。

  1. 在 Google Cloud 控制台中,前往 Security Command Center 设置指南

    前往设置指南

  2. 验证您查看的是已激活 Security Command Center Enterprise 层级的组织。

  3. 展开查看安全功能摘要面板。

  4. 依次点击代码安全 > 设置

  5. 设置代码安全性面板中,点击 AOSS 设置

  6. 选择新的服务账号或选择要添加“有保障的开源软件”权限的现有服务账号。

  7. 选择您要将 Assured OSS 资源放在其中的 Google Cloud 项目。

  8. 点击设置 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、Go 和 JavaScript)预配一个代码库。这些代码库可以自动从精选组合中提取软件包。如果某个软件包不在精选组合中,存储库会将请求重定向到规范存储库。代理服务仅支持美国区域。 如需了解详情,请参阅 Assured OSS 代码库选项
    • 向您和服务帐号授予访问 Google 拥有的项目中软件包元数据和通知的权限。
  9. 为每个指定的 Assured OSS 服务账号创建服务账号密钥,并以 JSON 格式下载密钥。

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

    base64 KEY_FILENAME.json
    

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

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

  11. 如需下载软件包,请使用 Assured OSS 为每种语言提供的端点。记下这些端点以备稍后使用。

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

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

  12. 点击下一步。使用贵组织的 Artifact 存储库管理器(例如 JFrog Artifactory 或 Sonatype Nexus)配置 Assured OSS

gcloud

以下步骤适用于 Security Command Center 高级方案和 Enterprise 方案。

  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@domain.com \
      --role=roles/assuredoss.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/serviceusage.serviceUsageAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:email@domain.com \
      --role=roles/iam.serviceAccountAdmin
    

    其中,email@domain.com 是您的用户账号的邮箱。

  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. \
      --role roles/assuredoss.user
    

    替换以下内容:

    • SERVICE_ACCOUNT_NAME:服务账号的名称(例如 assuredoss)。
    • PROJECT_ID:项目标识符。
  8. 使用 gcloud 设置 Assured OSS 高级方案后,如需访问安全元数据代码库,请发送邮件至 customer-support-aoss@google.com,并在邮件中附上您为 Assured OSS 启用的服务账号。
  9. 通过创建 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 https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-go   -d '{"format": "GO", "mode": "AOSS_REPOSITORY"}'
    

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

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

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

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

    base64 KEY_FILENAME.json
    

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

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

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

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

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

  13. 使用贵组织的 Artifact 存储库管理器(例如 JFrog Artifactory 或 Sonatype Nexus)配置 Assured OSS 以下载软件包。

  14. (可选)查看可用的 Java、Python、Go 和 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 "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-go/packages"
    

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

后续步骤