擷取 GDC 信任組合

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

本文適用於平台管理員群組的對象,例如 IT 管理員或安全工程師,他們想要擷取 GDC 信任組合。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

擷取 GDC 信任組合前,您必須為新機構建立初始信任。無論是使用知名伺服器或 kubectl 方法,首次連線至新機構時都必須執行這個步驟。

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

為新機構建立初始信任感

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

  1. 請與基礎架構營運商 (IO) 群組成員聯絡,索取新機構的初始信任組合。IO 具有擷取這個套件的必要存取權,這通常是來自機構基礎架構叢集中的 trust-store-root-ext 密鑰。

  2. 透過 GDC 以外的安全管道,從 IO 取得初始信任組合檔案,具體做法請參照貴機構的安全性政策。

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

如要存取 ServiceNow,請使用相同程序取得並安裝gdchservices機構信任憑證組合。

要求 IAM 角色

如要使用 kubectl 擷取信任組合,您必須具備查看密鑰的權限。 請與機構 IAM 管理員聯絡,要求授予「信任儲存區檢視者」(trust-store-viewer) 角色。

準備環境

如要使用 kubectl 方法,請準備本機環境:

信任軟體包類型

Distributed Cloud 為平台管理員提供兩種受管理信任組合:

  • trust-store-root-ext:包含內部根 CA 和網頁 TLS CA。內容會因所在位置 (例如根目錄或租戶機構) 而異。您可以使用這個信任組合跨機構通訊,或存取機構內的物件儲存空間等服務。

  • trust-store-global-root-ext:可在全域 API 伺服器和區域 API 伺服器 platform 命名空間中使用。全域 API 伺服器準備就緒後,套件會填入所有其他區域 trust-store-root-ext 資料,包括本機資料。

擷取信任套件

您可以從知名伺服器端點或叢集擷取信任組合 (使用 kubectl)。

從知名伺服器擷取

GDC 提供安全的方式,透過已知的伺服器端點存取信任組合。如要擷取 trust-store-global-root-ext 組合包,但不想使用 kubectl 直接與叢集互動,請使用這個方法。

請務必先建立初始信任關係,再按照本節步驟操作。

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 信任組合,請使用這個方法。

請務必先建立初始信任關係,再按照本節步驟操作。

使用 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-----