針對現有值區建立或更新 IP 篩選規則

本頁說明如何建立或更新現有 bucket 的bucket IP 篩選規則。

必要的角色

如要取得更新值區 IP 篩選規則所需的權限,請要求管理員授予您值區的「儲存空間管理員」角色 (roles/storage.admin)。這個角色具備更新值區 IP 篩選規則所需的權限。

如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

  • storage.buckets.update
  • storage.buckets.setIpFilter

您也可以透過自訂角色取得這些權限。您或許還可透過其他預先定義的角色取得這些權限。如要查看哪些角色與哪些權限相關聯,請參閱「Cloud Storage 的 IAM 角色」。

如需授予專案角色的操作說明,請參閱「管理專案存取權」。

在現有值區中建立或更新 IP 篩選規則

gcloud

  1. 確認您已安裝 Google Cloud CLI 526.0.0 以上版本:

    gcloud version | head -n1
    
  2. 如果您安裝的是舊版 gcloud CLI,請更新版本:

    gcloud components update --version=526.0.0
    
  3. 建立 JSON 檔案,定義傳入要求的規則。如需範例和如何建構 Bucket IP 過濾規則的資訊,請參閱「Bucket IP 過濾設定」。

        {
          "mode":"MODE",
          "publicNetworkSource":{
              "allowedIpCidrRanges":[
                "RANGE_CIDR",
                "..."
              ]
          },
          "vpcNetworkSources":[
              {
                "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges":[
                    "RANGE_CIDR",
                    "..."
                ]
              },
              "..."
          ],
          "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS,
          "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
        }
        

    其中:

    • MODE 是 bucket IP 篩選器設定的模式。有效值為 EnabledDisabled。設為 Enabled 時,系統會將 IP 篩選規則套用至 bucket。系統會根據這些規則評估傳送至 bucket 的所有要求。如果設為 Disabled,所有傳入的要求都能存取 Bucket。

    • RANGE_CIDR 是允許存取值區的公開網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個地址範圍做為清單。

    • PROJECT_ID 是虛擬私有雲 (VPC) 網路所在的專案 ID。如要設定多個虛擬私有雲網路,您必須指定每個網路所在的專案。

    • NETWORK_NAME 是允許存取值區的 VPC 網路名稱。如要設定多個 VPC 網路,請為每個網路指定名稱。

    • ALLOW_CROSS_ORG_VPCS 是布林值,表示是否允許在 vpcNetworkSources 中定義的虛擬私有雲網路來自其他機構。這是選填欄位。如果設為 true,要求允許跨機構的虛擬私有雲網路。如果設為 false,要求會將虛擬私有雲網路限制為與儲存空間相同的機構。如未指定,則預設值為 false。只有在 vpcNetworkSources 不為空白時,這個欄位才會生效。

    • ALLOW_ALL_SERVICE_AGENT_ACCESS 是布林值,表示是否允許服務代理程式存取 bucket,無論 IP 篩選器設定為何。如果值為 true,其他服務可以使用服務代理存取 bucket,不必進行 IP 驗證。 Trusted Cloud

  4. 如要更新 bucket IP 篩選規則,請在開發環境中執行 gcloud alpha storage buckets update 指令:

    gcloud alpha storage buckets update gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE

    其中:

    • BUCKET_NAME 是值區的名稱。例如:my-bucket
    • IP_FILTER_CONFIG_FILE 是在上一個步驟中建立的 JSON 檔案。

REST API

JSON API

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。

  2. 建立包含 bucket 設定的 JSON 檔案,其中必須包含 bucket 的 nameipFilter 設定欄位。如需範例和如何建構 Bucket IP 篩選規則的資訊,請參閱「 Bucket IP 篩選設定」。

    {
      "ipFilter":{
          "mode":"MODE",
          "publicNetworkSource":{
            "allowedIpCidrRanges":[
                "RANGE_CIDR",
                "..."
            ]
          },
          "vpcNetworkSources":[
            {
                "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges":[
                  "RANGE_CIDR",
                  "..."
                ]
            },
            "..."
          ],
          "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS,
          "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
      }
    }

    其中:

    • MODE 是 IP 篩選器設定的狀態。有效值為 EnabledDisabled。設為 Enabled 時,系統會將 IP 篩選規則套用至 bucket,並根據這些規則評估 bucket 的所有傳入要求。設為 Disabled 時,所有傳入的要求都能存取 bucket 及其資料,不必經過任何評估。

    • RANGE_CIDR 是允許存取值區的公開網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個地址範圍做為清單。

    • PROJECT_ID 是虛擬私有雲網路所在的專案 ID。如要設定多個虛擬私有雲網路,您必須指定每個網路所在的專案。

    • NETWORK_NAME 是允許存取值區的 VPC 網路名稱。如要設定多個 VPC 網路,您必須為每個網路指定名稱。

    • ALLOW_ALL_SERVICE_AGENT_ACCESS 是布林值,表示是否允許服務代理程式存取 bucket,無論 IP 篩選器設定為何。如果值為 true,其他 Trusted Cloud 服務可以使用服務代理存取 bucket,不必進行 IP 位址驗證。

    • ALLOW_CROSS_ORG_VPCS 是布林值,表示是否允許 vpcNetworkSources 清單中定義的虛擬私有雲網路來自不同機構。這是選填欄位。如果設為 true,要求允許跨機構的虛擬私有雲網路。如果設為 false,要求會將虛擬私有雲網路限制為與儲存空間相同的機構。如未指定,則預設值為 false。只有在 vpcNetworkSources 不為空白時,這個欄位才會生效。

  3. 使用 cURL 透過 PATCH bucket 要求呼叫 JSON API

    curl -X PATCH --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME?project=PROJECT_IDENTIFIER"

    其中:

    • JSON_FILE_NAME 是您在上一個步驟建立的 JSON 檔案名稱。
    • BUCKET_NAME 是值區名稱。
    • PROJECT_IDENTIFIER 是與值區建立關聯的專案 ID 或編號。例如:my-project

後續步驟