擷取 GDC 信任組合

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

Google Distributed Cloud (GDC) 實體隔離方案具有專屬的信任套件。本指南說明如何為機構管理員擷取信任組合。

信任憑證組合類型

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 直接與叢集互動,請使用這個方法。

  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:?}.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 信任組合,並儲存在上一步建立的檔案中:

    Linux

    echo -n | curl ${WELL_KNOWN_URL:?} > ${GLOBAL_TRUST_BUNDLE_FILE:?}
    

    Windows

    Invoke-WebRequest -Uri "https://console.${ORG_NAME}.google.gdch.test/.well-known/certificate-authority" -OutFile ".\global-trust-bundle.crt"
    

    擷取的信任組合檔案含有一或多個 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) 角色。
  • 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-----