获取 GDC 信任文件包

信任软件包(也称为信任列表)是一组信任锚(例如实体),这些信任锚本身就受到信任,并且其信任度不会由其他实体(受信任的第三方)转移。这些信任锚以证书授权机构 (CA) 证书的形式提供。证书路径构建算法使用这些 CA 证书在需要验证的证书与信任锚之间建立链。

本文档面向平台管理员群组中的受众群体,例如 IT 管理员或安全工程师,他们希望获取 GDC 信任软件包。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体

准备工作

在获取 GDC 信任软件包之前,您必须为新组织建立初始信任。无论是对于知名服务器还是 kubectl 方法,此步骤都是必需的,但仅当您首次连接到新组织时才需要执行此步骤。

对于知名服务器方法,无需满足其他前提条件。对于 kubectl 方法,您还必须完成权限和工具方面的前提条件。

为新组织建立初始信任

如果您是首次连接到新的 GDC 组织,则必须建立初始信任。此一次性流程通过信任客户端计算机上的组织证书授权机构 (CA) 来确保安全连接。

  1. 请与您的基础设施运营商 (IO) 群组的成员联系,为新组织请求初始信任包。IO 具有提取此软件包所需的访问权限,该软件包通常来自组织基础架构集群中的 trust-store-root-ext Secret。

  2. 通过 GDC 以外的安全信道从 IO 获取初始信任包文件,如贵组织的安全政策所定义。

  3. 按照系统信任根 CA 证书的标准程序,将信任文件包安装到客户端计算机的受信任证书存储区中。

如果您需要访问 ServiceNow,请使用相同的流程获取并安装 gdchservices 组织信任软件包。

申请 IAM 角色

如需使用 kubectl 获取信任软件包,您需要拥有查看 Secret 的权限。 请与组织 IAM 管理员联系,请求授予 Trust Store Viewer (trust-store-viewer) 角色。

准备环境

如需使用 kubectl 方法,请准备本地环境:

  • 如果您尚未下载并安装 gdcloud CLI,请执行此操作。

  • 安装 kubectl CLI

  • 为目标区域中的管理 API 服务器生成 kubeconfig 文件。您需要 kubeconfig 文件的路径,才能替换 kubectl 命令中的 MANAGEMENT_API_SERVER_KUBECONFIG

信任包类型

Distributed Cloud 为平台管理员提供两种类型的受管信任软件包:

  • trust-store-root-ext:包含内部根 CA 和 Web-TLS CA。内容因其所在位置(例如根组织或租户组织)而异。使用此信任软件包可在组织边界之间进行通信,或访问组织内的对象存储等服务。

  • trust-store-global-root-ext:在全局 API 服务器和区域 API 服务器的 platform 命名空间中可用。当全局 API 服务器准备就绪时,该软件包会填充所有其他区域性 trust-store-root-ext 数据,包括本地数据。

提取信任包

您可以从已知服务器端点或使用 kubectl 从集群中提取信任包。

从知名服务器提取

GDC 提供了一种安全的方式,可通过众所周知的服务器端点访问信任包。如果您需要获取 trust-store-global-root-ext 软件包,但不想使用 kubectl 直接与集群互动,请使用此方法。

在执行本部分中的步骤之前,请确保您已与组织的特定 CA 建立初始信任

Linux

  1. 导出以下环境变量:

    export STORAGE=STORAGE
    export ORG_NAME=ORG_NAME
    export DNS_SUFFIX=DNS_SUFFIX
    

    替换以下内容:

    • STORAGE:您要存储信任软件包文件的目录路径。
    • ORG_NAME:您组织在 GDC 中的名称。
    • DNS_SUFFIX:您的 DNS 后缀。例如,如果您的某个网域是 org-1.zone1.google.gdch.test,则您的 DNS 后缀是 zone1.google.gdch.test
  2. 设置 WELL_KNOWN_URL 环境变量:

    export WELL_KNOWN_URL="https://console.${ORG_NAME:?}.${DNS_SUFFIX:?}/.well-known/certificate-authority"
    
  3. 设置 GLOBAL_TRUST_BUNDLE_FILE 环境变量。此文件会将 GDC 信任软件包本地存储在您指定的 $STORAGE 位置。

    export GLOBAL_TRUST_BUNDLE_FILE="${STORAGE:?}/global/ca-bundles/global-trust-bundle"
    
  4. 为信任软件包文件创建目录:

    mkdir -p "$(dirname "${GLOBAL_TRUST_BUNDLE_FILE:?}")"
    
  5. 从已知服务器获取 trust-store-global-root-ext 信任软件包,并将其存储在 GLOBAL_TRUST_BUNDLE_FILE 环境变量指定的文件中:

    curl "${WELL_KNOWN_URL:?}" | sed '$a\' > "${GLOBAL_TRUST_BUNDLE_FILE:?}"
    

Windows

  1. 设置以下 PowerShell 变量:

    $STORAGE = "STORAGE"
    $ORG_NAME = "ORG_NAME"
    $DNS_SUFFIX = "DNS_SUFFIX"
    

    替换以下内容:

    • STORAGE:您要存储信任软件包文件的目录路径,例如 C:\Users\username\bundles
    • ORG_NAME:您组织在 GDC 中的名称。
    • DNS_SUFFIX:您的 DNS 后缀。例如,如果您的某个网域是 org-1.zone1.google.gdch.test,则您的 DNS 后缀是 zone1.google.gdch.test
  2. 为信任软件包文件创建目录:

    New-Item -ItemType Directory -Force -Path (Split-Path -Path "STORAGE\global\ca-bundles\global-trust-bundle")
    
  3. 从知名服务器获取 trust-store-global-root-ext 信任软件包并将其存储在信任软件包文件中:

    Invoke-WebRequest -Uri "https://console.ORG_NAME.DNS_SUFFIX/.well-known/certificate-authority" -OutFile "STORAGE\global\ca-bundles\global-trust-bundle"
    

提取的信任包文件包含一个或多个 CA 证书。输出类似于以下内容:

   -----BEGIN CERTIFICATE-----
   MIIC8TCCAdmgAwIBAgIRAODQ/dOB39RBs8ZpN0RujIswDQYJKoZIhvcNAQELBQAw
   EjEQMA4GA1UEAxMHcm9vdC1jYTAeFw0yNTAxMDYwNzM3MzVaFw00ODEyMzEwNzM3
   MzVaMBIxEDAOBgNVBAMTB3Jvb3QtY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
   ggEKAoIBAQC41U4+3M1EAHggUBw5ki97533zTvwHukmZyORwbQ3tlQ4GQDscoCEh
   nn+KCaG767VCaGDcQhq99hl6qa/nBoc1X6WQ3a/uhv5E2ztRD40PB5NFNdSulxTH
   gsitukSmv+DAx15UJnVkJtPP/FzxEWPu0piIiFZakTxT83VUSs54QRmTahxP80FI
   R0xZ0ohsu9jzA2CAyxTccJU0/xE2kDwN8c8kiYYuG+czMdNVdnT4Jm2ToSkzIDux
   Yi9MzNmarVGG/rtW5SlqnUMYzSsxtUYSmMRlCsFDVxkSzfmICmTRw2zmNkFA/3nz
   XneVSIsUHOA2NzvMN4eoLTVRgSFcHlZRAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
   hjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTEeB0EQwhc5p++GhwNymsBfN93
   WjANBgkqhkiG9w0BAQsFAAOCAQEAKBqn4AXjUWmhIUOrWQ5cetsmI76Wl+RBeSzU
   HxbqMBH8Dk1oJbGHtmQbu7EmWz1pKYge650s9N83hMgjFZD24t9GiQZ7YY+i+317
   D6HzJ8VIKPnxVtnUIQzCpkRTQoglDlb1f/7+fi2SYJoHdhnRI/3OaVQTnObjbW5T
   mBhsMxFKc0zGa3HIEm9SUH608V60xUPanl23YZ6X7W8nWAJfnzKvH+3q3Fz58u/S
   VR5t/FkbOktVtnU8AfcMKLof6KG2KhE2L7FAC+fp0ZsjV9vE2uqlZ+8mIQHyc3tM
   cbWxOx+SO/XUCenY9C1yrublln9aOEn4/s3aSURPguiSZOfDyQ==
   -----END CERTIFICATE-----

使用 kubectl 从集群中提取

您可以使用 kubectl 命令行工具直接从 GDC 集群中提取信任包。如果您可以直接访问集群及其配置,并且需要提取 trust-store-root-exttrust-store-global-root-ext 信任软件包,请使用此方法。

在执行本部分中的步骤之前,请确保您已与组织的特定 CA 建立初始信任

使用 kubectl 从集群中提取信任软件包:

  1. 导出以下环境变量:

    export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIG
    export STORAGE=STORAGE
    export ZONE=ZONE
    

    替换以下内容:

    • MANAGEMENT_API_SERVER_KUBECONFIG:Management API 服务器 kubeconfig 的路径。
    • STORAGE:您要存储信任软件包文件的目录路径。
    • ZONE:您的 GDC 可用区名称。
  2. 设置 TRUST_BUNDLE_FILE 环境变量。此文件会将 GDC 信任软件包本地存储在您为 GDC $ZONE 指定的 $STORAGE 位置:

    export TRUST_BUNDLE_FILE="${STORAGE:?}/${ZONE:?}/ca-bundles/trust-bundle"
    export GLOBAL_TRUST_BUNDLE_FILE="${STORAGE:?}/global/ca-bundles/global-trust-bundle"
    
  3. 为命名空间设置 NS 命名空间环境变量:

    export NS=platform
    
  4. 为信任软件包文件创建目录:

    mkdir -p "$(dirname "${TRUST_BUNDLE_FILE:?}")"
    mkdir -p "$(dirname "${GLOBAL_TRUST_BUNDLE_FILE:?}")"
    
  5. 获取证书授权机构 (CA),并将其存储在 TRUST_BUNDLE_FILEGLOBAL_TRUST_BUNDLE_FILE 环境变量指定的文件中:

    对于 trust-store-root-ext

    kubectl --kubeconfig ${KUBECONFIG:?} get secret trust-store-root-ext -n ${NS:?} -o go-template='{{ index .data "ca.crt" }}' | base64 -d | sed '$a\' > ${TRUST_BUNDLE_FILE:?}
    

    对于 trust-store-global-root-ext

    kubectl --kubeconfig ${KUBECONFIG:?} get secret trust-store-global-root-ext -n ${NS:?} -o go-template='{{ index .data "ca.crt" }}' | base64 -d | sed '$a\' > ${GLOBAL_TRUST_BUNDLE_FILE:?}
    

    提取的信任包文件包含一个或多个 CA 证书。输出类似于以下内容:

    -----BEGIN CERTIFICATE-----
    MIIC8TCCAdmgAwIBAgIRAODQ/dOB39RBs8ZpN0RujIswDQYJKoZIhvcNAQELBQAw
    EjEQMA4GA1UEAxMHcm9vdC1jYTAeFw0yNTAxMDYwNzM3MzVaFw00ODEyMzEwNzM3
    MzVaMBIxEDAOBgNVBAMTB3Jvb3QtY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    ggEKAoIBAQC41U4+3M1EAHggUBw5ki97533zTvwHukmZyORwbQ3tlQ4GQDscoCEh
    nn+KCaG767VCaGDcQhq99hl6qa/nBoc1X6WQ3a/uhv5E2ztRD40PB5NFNdSulxTH
    gsitukSmv+DAx15UJnVkJtPP/FzxEWPu0piIiFZakTxT83VUSs54QRmTahxP80FI
    R0xZ0ohsu9jzA2CAyxTccJU0/xE2kDwN8c8kiYYuG+czMdNVdnT4Jm2ToSkzIDux
    Yi9MzNmarVGG/rtW5SlqnUMYzSsxtUYSmMRlCsFDVxkSzfmICmTRw2zmNkFA/3nz
    XneVSIsUHOA2NzvMN4eoLTVRgSFcHlZRAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
    hjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTEeB0EQwhc5p++GhwNymsBfN93
    WjANBgkqhkiG9w0BAQsFAAOCAQEAKBqn4AXjUWmhIUOrWQ5cetsmI76Wl+RBeSzU
    HxbqMBH8Dk1oJbGHtmQbu7EmWz1pKYge650s9N83hMgjFZD24t9GiQZ7YY+i+317
    D6HzJ8VIKPnxVtnUIQzCpkRTQoglDlb1f/7+fi2SYJoHdhnRI/3OaVQTnObjbW5T
    mBhsMxFKc0zGa3HIEm9SUH608V60xUPanl23YZ6X7W8nWAJfnzKvH+3q3Fz58u/S
    VR5t/FkbOktVtnU8AfcMKLof6KG2KhE2L7FAC+fp0ZsjV9vE2uqlZ+8mIQHyc3tM
    cbWxOx+SO/XUCenY9C1yrublln9aOEn4/s3aSURPguiSZOfDyQ==
    -----END CERTIFICATE-----