使用 MD5 驗證

Cloud Router 會透過邊界閘道通訊協定 (BGP),在虛擬私有雲 (VPC) 網路與對等互連網路之間交換路徑。根據預設,Cloud Router BGP 工作階段未經過驗證。不過,如果您將 Cloud Router 與特定產品搭配使用,可以選擇將 BGP 工作階段設定為使用 MD5 驗證。

可使用 MD5 驗證的產品包括:

您也可以搭配使用 MD5 驗證和第三方網路虛擬設備。詳情請參閱 Network Connectivity Center 說明文件中的「路由器裝置」。

設定工作階段以使用 MD5 驗證時,您會提供密鑰共用金鑰,也就是設定 Cloud Router 時使用的金鑰,以及設定對等路由器時使用的金鑰。完成必要的設定步驟後,Cloud Router 會使用該金鑰驗證 BGP 對等端。Cloud Router 會使用 RFC 2385 中所述的模型,強制執行 MD5 驗證。

您可以在建立對等裝置時新增 MD5 驗證。您也可以為現有工作階段新增驗證機制、變更工作階段使用的金鑰,或移除驗證機制。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
    1. 如果您使用的是 Google Cloud CLI,請執行下列指令來設定專案 ID。本頁的 gcloud 操作說明假設您已設定專案 ID。
      gcloud config set project PROJECT_ID
          
    1. 執行下列指令,確認 ID 已設定:
      gcloud config list --format='text(core.project)'
          

    建立使用驗證的工作階段

    對於某些網路連線產品,您可以在建立資源時,設定 BGP 同級節點使用 MD5 驗證。這些產品包括高可用性 VPN 和專屬互連網路。

    如需更多資訊,請參閱下列各節:

    如果您要建立第 2 層合作夥伴互連網路 VLAN 連結,請先建立連結,然後更新 BGP 對等點,以便新增 MD5 驗證。如要瞭解如何在更新 BGP 工作階段時新增驗證,請參閱下一個章節。如果您使用的是第 3 層連線,請洽詢服務供應商取得操作說明。

    在現有工作階段中新增驗證

    如要在現有 BGP 對等端新增驗證機制,請使用下列任一程序。新增驗證時,請確認您使用的金鑰與對等路由器使用的金鑰相同。

    Google Cloud 不會顯示 MD5 驗證金鑰,且在設定成功時顯示金鑰名稱。

    • 如果您透過 gcloud 或使用者介面設定 MD5 驗證, Google Cloud會自動以 PEER_NAME-key 的形式產生金鑰名稱。
    • 如果您透過 API 設定 MD5 驗證,可以指定金鑰名稱。

    主控台

    1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

      前往 Cloud Router

    2. 在「名稱」欄位中,按一下適當的 Cloud Router 名稱。

    3. 在「路由器詳細資料」頁面中,按一下要修改的 BGP 工作階段名稱。

    4. 在「BGP 工作階段詳細資料」頁面中,按一下 「編輯」

    5. 如要新增 MD5 驗證,請按照下列步驟操作:

      1. 在「MD5 驗證」部分中,選取「已啟用」。頁面更新後會加入文字欄位。
      2. 輸入安全金鑰,或按一下「產生並複製」來產生新的安全金鑰。
      3. 請記下金鑰。離開這個頁面後,您就無法擷取金鑰。

    6. 按一下 [儲存]

    gcloud

    如要使用 gcloud CLI 更新工作階段,請使用 gcloud compute routers update-bgp-peer 指令:

      gcloud compute routers update-bgp-peer ROUTER_NAME \
         --peer-name=PEER_NAME \
         --region=REGION \
         --md5-authentication-key=SECRET_KEY
     

    替換下列值:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等點的名稱
    • REGION: Google Cloud 區域
    • SECRET_KEY:您的 MD5 共用驗證金鑰

    API

    如要使用 API 更新工作階段,請使用 compute.routers.patch 方法。使用此方法為工作階段新增驗證時,要求必須執行兩項操作:

    • md5AuthenticationKeys 陣列中新增鍵的項目。新增項目時,您必須提供鍵的名稱和值。
    • 更新 bgpPeers 陣列,加入 md5AuthenticationKeyName 欄位的值。這個欄位會依名稱參照鍵。

    修補 md5AuthenticationKeys 陣列時,您必須提供陣列中每個項目的 name (除非您要移除某些項目)。不過,您不必為每個項目的 key 欄位提供值。如果省略這個值,Cloud Router 會保留先前使用的值。這項行為旨在保護金鑰的機密性。這與其他修補方法不同,後者通常會要求您為陣列項目的每個欄位指定值。

    修補 bgpPeers 陣列時,您必須為每個項目的每個欄位提供值 (除非您想移除某些同儕或某些值)。

    舉例來說,假設 Cloud Router 有兩個對等端,其中一個使用 MD5 驗證,另一個則不使用。如果您想讓第一個對等端保持不變,但在第二個對等端新增 MD5 驗證,請使用以下類似的請求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
      {
        "md5AuthenticationKeys": [
          {
            "name": "KEY_NAME_1",
          },
          {
            "name": "KEY_NAME_2",
            "key": "SECRET_KEY"
          }
        ],
        "bgpPeers": [
          {
            "name": "PEER_NAME_1",
            "md5AuthenticationKeyName": "KEY_NAME_1",
            "interfaceName": "INTERFACE_NAME_1",
            "ipAddress": "IP_ADDRESS_1",
            "peerIpAddress": "PEER_IP_ADDRESS_1",
            "peerAsn": "PEER_ASN_1"
          },
          {
            "name": "PEER_NAME_2",
            "md5AuthenticationKeyName": "KEY_NAME_2",
            "interfaceName": "INTERFACE_NAME_2",
            "ipAddress": "IP_ADDRESS_2",
            "peerIpAddress": "PEER_IP_ADDRESS_2",
            "peerAsn": "PEER_ASN_2"
          }
        ],
      }
     

    替換下列值:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION: Google Cloud 區域
    • ROUTER_NAME:Cloud Router 的名稱
    • KEY_NAME_1:目前使用 (由 PEER_NAME_1 使用) 的鍵名稱
    • KEY_NAME_2:您要為 PEER_NAME_2 新增的新鍵名稱。請記下名稱。如果之後想使用 API 進行變更,就需要這個名稱。
    • SECRET_KEY:您為 PEER_NAME_2 新增的 MD5 密鑰
    • PEER_NAME_1:您變更的 BGP 對等互連名稱
    • INTERFACE_NAME_1:BGP 對等連線工作階段的介面名稱,不會變更
    • IP_ADDRESS_1:Cloud Router 上的 IP 位址 (適用於不會變更的對等端)
    • PEER_IP_ADDRESS_1:不變的對等端 IP 位址
    • PEER_ASN_1:不變動的對等端 BGP 自治系統編號 (ASN)
    • PEER_NAME_2:您要更新的 BGP 對等端名稱,以便使用 MD5 驗證
    • INTERFACE_NAME_2:BGP 對等工作階段的介面名稱
    • IP_ADDRESS_2:Cloud Router 上的 IP 位址
    • PEER_IP_ADDRESS_2:對等 Router 的 IP 位址
    • PEER_ASN_2:這個 BGP 對等點的 BGP 自治系統編號 (ASN)

    更新驗證金鑰

    如要變更 Cloud Router 用於對等互連工作階段的金鑰,請使用下列任一程序。更新 Cloud Router 上的金鑰時,請確認您使用的金鑰與對等路由器使用的金鑰相同。

    Google Cloud 不會顯示 MD5 驗證金鑰,且在設定成功時顯示金鑰名稱。

    • 如果您透過 gcloud 或使用者介面設定 MD5 驗證, Google Cloud會自動以 PEER_NAME-key 的形式產生金鑰名稱。
    • 如果您透過 API 設定 MD5 驗證,可以指定金鑰名稱。

    主控台

    1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

      前往 Cloud Router

    2. 在「名稱」欄位中,按一下適當的 Cloud Router 名稱。

    3. 在「路由器詳細資料」頁面中,按一下要修改的 BGP 工作階段名稱。

    4. 在「BGP 工作階段詳細資料」頁面中,按一下 「編輯」

    5. 在「MD5 驗證」部分中,按一下「更新 MD5 驗證金鑰」

    6. 在「MD5 驗證金鑰」欄位中輸入新的秘密驗證金鑰,或按一下「產生並複製」,讓系統填入欄位。

    7. 請記下金鑰。離開這個頁面後,您就無法擷取金鑰。

    8. 按一下 [儲存]

    gcloud

    如要更新工作階段,請使用 gcloud compute routers update-bgp-peer 指令。

      gcloud compute routers update-bgp-peer ROUTER_NAME \
         --peer-name=PEER_NAME \
         --region=REGION \
         --md5-authentication-key=SECRET_KEY
     

    替換下列值:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等點的名稱
    • REGION: Google Cloud 區域
    • SECRET_KEY:您要使用的新密鑰 MD5 驗證金鑰

    API

    如要更新工作階段,請使用 compute.routers.patch 方法。例如,使用以下要求。

    這個範例會取代整個同行陣列,而非只取代已識別的特定同行。也就是說,它會移除 PEER_NAME 以外的所有同儕。它會移除 KEY_NAME 以外的所有金鑰,並使用新值 UPDATED_SECRET_KEY 更新 KEY_NAME

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
      {
        "md5AuthenticationKeys": [
           {
            "name": "KEY_NAME",
            "key": "UPDATED_SECRET_KEY"
          }
        ],
    
        "bgpPeers": [
          {
            "name": "PEER_NAME",
            "md5AuthenticationKeyName": "KEY_NAME",
            "interfaceName": "INTERFACE_NAME",
            "ipAddress": "IP_ADDRESS",
            "peerIpAddress": "PEER_IP_ADDRESS",
            "peerAsn": "PEER_ASN"
          }
        ],
      }
     

    替換下列值:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION: Google Cloud 區域
    • ROUTER_NAME:Cloud Router 的名稱
    • KEY_NAME:您要更新的金鑰名稱;每當您使用 API 處理 MD5 驗證時,都必須依名稱參照金鑰
    • UPDATED_SECRET_KEY:新的 MD5 驗證金鑰
    • PEER_NAME:BGP 對等點的名稱
    • INTERFACE_NAME:BGP 對等工作階段的介面名稱
    • IP_ADDRESS:Cloud Router 上的 IP 位址
    • PEER_IP_ADDRESS:對等 Router 的 IP 位址
    • PEER_ASN:這個 BGP 對等點的 BGP 自治系統編號 (ASN)

    檢查驗證狀態

    請按照下列步驟查看 MD5 驗證狀態。另請參閱「查看 Cloud Router 詳細資料」。

    主控台

    1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

      前往 Cloud Router

    2. 在「名稱」欄位中,按一下適當的 Cloud Router 名稱。

    3. 在「路由器詳細資料」頁面中,找出「MD5 驗證」欄。對於每個工作階段,這個欄中的值會指出是否已啟用 MD5 驗證。

    gcloud

    如要使用 gcloud CLI 檢查工作階段,請使用 gcloud compute routers get-status 指令。

      gcloud compute routers get-status ROUTER_NAME \
         --project=PROJECT \
         --region=REGION \
     

    替換下列值:

    • ROUTER_NAME:Cloud Router 的名稱
    • PROJECT:專案名稱
    • REGION: Google Cloud 區域

    輸出內容包含 result.bgpPeerStatus[] 物件,其中包含 Cloud Router 的 BGP 工作階段相關資訊。每個工作階段的資料包含下列兩個欄位:

    • md5AuthEnabled:布林值欄位,指出是否已為工作階段啟用 MD5 驗證
    • statusReason:用於說明工作階段狀態的欄位

    API

    請使用 routers.getRouterStatus 方法:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME/getRouterStatus
    

    更改下列內容:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION:Cloud Router 所在的區域
    • ROUTER_NAME:Cloud Router 的名稱

    輸出結果包含每個 BGP 工作階段的資訊。每個工作階段的資料包含下列兩個欄位:

    • md5AuthEnabled:布林值欄位,表示是否已為工作階段啟用 MD5 驗證
    • statusReason:描述工作階段狀態的欄位。只有在 MD5 驗證發生問題時,系統才會顯示這個欄位。(在這種情況下,欄位的值為 MD5_AUTH_INTERNAL_PROBLEM)。

    如要設定持續監控 BGP 工作階段,請使用 Cloud Logging。記錄會記錄 BGP 事件中的 MD5 驗證狀態資訊,這部分屬於資訊記錄

    從工作階段中移除驗證

    如要從 BGP 工作階段移除 MD5 驗證,您必須從 Cloud Router 和對等路由器中移除 MD5 驗證。

    如要從 Cloud Router 的 BGP 工作階段中移除 MD5 驗證,請使用下列任一程序。

    主控台

    1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

      前往 Cloud Router

    2. 在「名稱」欄位中,按一下適當的 Cloud Router 名稱。

    3. 在「路由器詳細資料」頁面中,按一下要修改的 BGP 工作階段名稱。

    4. 在「BGP 工作階段詳細資料」頁面中,按一下 「編輯」

    5. 針對「MD5 驗證」,按一下「已停用」

    6. 按一下 [儲存]。系統隨即會顯示「Disable MD5 Authentication key」對話方塊。

    7. 在確認對話方塊中,按一下「確認」

    gcloud

    如要移除 MD5 驗證,請使用 gcloud compute routers update-bgp-peer 指令:

       gcloud compute routers update-bgp-peer ROUTER_NAME \
         --peer-name=PEER_NAME \
         --region=REGION \
         --clear-md5-authentication-key
    

    替換下列值:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等點的名稱
    • REGION: Google Cloud 區域

    API

    如要移除 MD5 驗證,請使用 compute.routers.patch 方法。

    使用 API 移除驗證機制時,更新必須執行兩項操作:

    • 更新 md5AuthenticationKeys 陣列
    • 從相關的 bgpPeers 項目中移除 md5AuthenticationKey

    舉例來說,如果 Cloud Router 有兩個 BGP 對等點,而您想從其中一個對等點移除 MD5 驗證,在這種情況下,請使用類似下方的請求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
      {
        "md5AuthenticationKeys": [
            "name": "KEY_NAME_FOR_UNCHANGED_PEER",
            ],
        "bgpPeers": [
          {
            "name": "NAME_OF_UPDATED_PEER",
            "interfaceName": "INTERFACE_NAME_FOR_UPDATED_PEER",
            "ipAddress": "IP_ADDRESS_FOR_UPDATED_PEER",
            "peerIpAddress": "PEER_IP_ADDRESS_FOR_UPDATED_PEER",
            "peerAsn": "PEER_ASN_FOR_UPDATED_PEER"
          },
          {
            "name": "NAME_OF_UNCHANGED_PEER",
            "interfaceName": "INTERFACE_NAME_FOR_UNCHANGED_PEER",
            "ipAddress": "IP_ADDRESS_FOR_UNCHANGED_PEER",
            "peerIpAddress": "PEER_IP_ADDRESS_FOR_UNCHANGED_PEER",
            "peerAsn": "PEER_ASN_FOR_UNCHANGED_PEER"
            "md5AuthenticationKeyName": "KEY_NAME_FOR_UNCHANGED_PEER"
          }
        ],
        ],
      }
     

    替換下列值:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION: Google Cloud Cloud Router 所在的地區
    • ROUTER_NAME:Cloud Router 的名稱
    • NAME_OF_UPDATED_PEER:要修改的對等連線工作階段名稱
    • INTERFACE_NAME_FOR_UPDATED_PEER:您要修改的 BGP 對等互連介面名稱
    • IP_ADDRESS_FOR_UPDATED_PEER:Cloud Router 中的 IP 位址,由您要修改的對等端使用
    • PEER_IP_ADDRESS_FOR_UPDATED_PEER:要修改的對等連線工作階段對等路由器的 IP 位址
    • PEER_ASN:您要修改的 BGP 對等端的 BGP 自治系統編號 (ASN)
    • NAME_OF_UNCHANGED_PEER:要保留原狀的對等連線工作階段名稱
    • INTERFACE_NAME_FOR_UNCHANGED_PEER:您要保留原狀的 BGP 對等互連介面名稱
    • IP_ADDRESS_FOR_UNCHANGED_PEER:Cloud Router 上的 IP 位址,由您要保留的對等端使用
    • PEER_IP_ADDRESS_FOR_UNCHANGED_PEER:您要保留原狀的對等連線工作階段對等路由器的 IP 位址
    • PEER_ASN_FOR_UNCHANGED_PEER:您要保留不變的 BGP 對等點的 BGP 自治系統編號 (ASN)
    • KEY_NAME_FOR_UNCHANGED_PEER:要保留原狀的 BGP 同級節點的 MD5 驗證金鑰名稱

    移除使用驗證機制的會話

    如要移除使用 MD5 驗證的對等連線工作階段,請使用下列任一程序。

    主控台

    1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

      前往 Cloud Router

    2. 選取要移除 BGP 工作階段的路由器。
    3. 針對「BGP 工作階段」,選取要移除的 BGP 工作階段。
    4. 按一下頁面頂端的「刪除」圖示 ,然後確認刪除。

    gcloud

    如要移除啟用 MD5 驗證功能的 BGP 工作階段,請使用 gcloud compute routers remove-bgp-peer 指令。

    詳情請參閱「停用或移除 BGP 工作階段」。

    API

    如要移除啟用 MD5 驗證的 BGP 工作階段,請使用 compute.routers.patch 方法。

    使用 API 移除採用 MD5 驗證的 BGP 工作階段時,更新必須執行兩項操作:從 md5AuthenticationKeys 陣列中移除金鑰,並移除 bgpPeer 本身。

    舉例來說,假設 Cloud Router 有兩個對等端,而您想要移除其中一個。在這種情況下,請使用類似下方的請求:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
      {
        "md5AuthenticationKeys": [
            "name": "KEY_NAME_FOR_RETAINED_PEER",
            ],
        "bgpPeers": [
          {
            "name": "NAME_OF_RETAINED_PEER",
            "interfaceName": "INTERFACE_FOR_RETAINED_PEER",
            "ipAddress": "IP_ADDRESS_FOR_RETAINED_PEER",
            "peerIpAddress": "PEER_IP_ADDRESS_FOR_RETAINED_PEER",
            "peerAsn": "PEER_ASN_FOR_RETAINED_PEER",
            "md5AuthenticationKeyName": "KEY_NAME_FOR_RETAINED_PEER"
          }
        ],
      }
     

    替換下列值:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION: Google Cloud 區域
    • ROUTER_NAME:Cloud Router 的名稱
    • KEY_NAME_FOR_RETAINED_PEER:您要保留的對等端使用的鍵名稱
    • NAME_OF_RETAINED_PEER:您要保留的 BGP 對等端名稱
    • INTERFACE_FOR_RETAINED_PEER:您要保留的 BGP 對等互連介面名稱
    • IP_ADDRESS_FOR_RETAINED_PEER:Cloud Router 上要保留的對等端 IP 位址
    • PEER_IP_ADDRESS_FOR_RETAINED_PEER:您要保留的對等端 IP 位址
    • PEER_ASN_FOR_RETAINED_PEER:您要保留的對等端的 BGP 自治系統編號 (ASN)
    • KEY_NAME_FOR_RETAINED_PEER:您保留的 BGP 對等互連 MD5 驗證金鑰名稱

    舉例來說,假設您建立了下列對等端:

      PATCH https://compute.googleapis.com/compute/v1/projects/project_id/regions/region_name/routers/cloud_router_name
      {
        "md5AuthenticationKeys": [
          {
            "name":  "first_key_name",
            "key":  "first_secret_key_value"
          },
          {
            "name":  "second_key_name",
            "key":  "second_secret_key_value"
          }
        ],
        "bgpPeers": [
          {
            "name": "first_peer",
            "md5AuthenticationKeyName": "first_key_name",
            "interfaceName": "first_interface",
            "ipAddress": "first_address",
            "peerIpAddress": "first_peer_interface",
            "peerAsn": "first_peer_asn"
          },
          {
            "name": "second_peer",
            "md5AuthenticationKeyName": "second_key_name",
            "interfaceName": "second_interface",
            "ipAddress": "second_address",
            "peerIpAddress": "second_peer_interface",
            "peerAsn": "second_peer_asn"
          }
        ],
      }
     

    如果您想移除第二個對等端,請使用類似以下的請求:

      PATCH https://compute.googleapis.com/compute/v1/projects/project_id/regions/region_name/routers/cloud_router_name
      {
        "md5AuthenticationKeys": [
          {
            "name":  "first_key_name",
          }
        ],
        "bgpPeers": [
          {
            "name": "first_peer",
            "md5AuthenticationKeyName": "first_key_name",
            "interfaceName": "first_interface",
            "ipAddress": "first_address",
            "peerIpAddress": "first_peer_interface",
            "peerAsn": "first_peer_asn"
          }
        ],
      }
     

    後續步驟