擷取 GDC 信任組合

信任套件 (也稱為信任清單) 是一組信任錨點 (例如實體),這些錨點本身就值得信任,且其信任關係不會由其他實體 (受信任的第三方) 轉移。這些信任錨點會以憑證授權單位 (CA) 憑證的形式提供。憑證路徑建構演算法會使用這些 CA 憑證,在取得驗證的憑證和信任錨點之間建立鏈結。

本文適用於平台管理員群組中的對象,例如想擷取 GDC 信任套件的 IT 管理員或資安工程師。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

擷取 GDC 信任套件前,您必須為新組織建立初始信任。無論是知名伺服器或 kubectl 方法,都必須執行這個步驟,但只有在首次連線至新組織時才需要。

如果使用知名伺服器方法,則不需要其他必要條件。如要使用 kubectl 方法,您也必須完成權限和工具先決條件。

建立新新聞機構的初步信任

如果是首次連線至新的 GDC 機構,您必須建立初始信任。這項一次性程序會信任用戶端機器上的機構憑證授權單位 (CA),確保連線安全。

  1. 請與基礎架構運作人員 (IO) 群組成員聯絡,要求新組織的初始信任套件。IO 具備擷取這個套件所需的存取權,這個套件通常來自組織基礎架構叢集中的 trust-store-root-ext 密鑰。

  2. 請按照貴組織的安全性政策,透過 GDC 以外的安全管道,從 IO 取得初始信任套件檔案。

  3. 請按照系統信任根 CA 憑證的標準程序,將信任套件安裝到用戶端機器的信任存放區。

如需存取 ServiceNow,請一併使用相同程序取得並安裝 gdchservices 組織信任套件。

要求 IAM 角色

如要使用 kubectl 擷取信任套件,您必須具備查看 Secret 的權限。請與 IAM 機構組織管理員聯絡,要求取得信任存放區檢視者 (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-ext 或 trust-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_FILE 和 GLOBAL_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-----