提取 GDC 信任文件包

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

Google Distributed Cloud (GDC) 网闸隔离配置具有专用信任包。本指南概述了组织管理员获取信任包的步骤。

信任包类型

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 直接与集群互动,请使用此方法。

  1. 导出以下环境变量:

    export STORAGE=STORAGE
    export ORG_NAME=ORG_NAME
    

    替换以下内容:

    • STORAGE:您要存储信任软件包文件的目录路径。
    • ORG_NAME:您组织在 GDC 中的名称。
  2. 设置 WELL_KNOWN_URL 环境变量:

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

    export GLOBAL_TRUST_BUNDLE_FILE="$STORAGE/global/ca-bundles/global-trust-bundle"
    
  4. 从知名服务器获取 trust-store-global-root-ext 信任捆绑包,并将其存储在上一步中创建的文件中:

    echo -n | curl ${WELL_KNOWN_URL:?} > ${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-----
    

使用 kubectl 从集群中提取

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

您必须先获得以下信息,然后才能完成本部分中的步骤:

  • 所需权限:请让您的组织 IAM 管理员为您授予 Trust Store Viewer (trust-store-viewer) 角色。
  • Kubeconfig 文件:登录并为 Management API 服务器生成 kubeconfig 文件(如果您还没有)。您需要 kubeconfig 文件的路径,以便在以下步骤中替换 MANAGEMENT_API_SERVER_KUBECONFIG

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

  1. 导出以下环境变量:

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

    替换以下内容:

    • MANAGEMENT_API_SERVER_KUBECONFIG:管理 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. 获取证书授权机构 (CA),并将其存储在第 2 步中创建的文件中:

    对于 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-----