本頁說明如何建立含有 IP 篩選規則的 bucket。建立具有 IP 過濾功能的 bucket 後,系統會根據 bucket IP 過濾規則中指定的 IP 位址,檢查傳入要求,控管 bucket 的存取權。詳情請參閱「bucket IP 篩選」。
如要瞭解如何建立或更新現有 bucket 的 IP 篩選規則,請參閱「更新 bucket IP 篩選規則」。
必要的角色
如要取得建立含有 IP 過濾規則的 bucket 所需的權限,請要求管理員授予 bucket 的「Storage 管理員」(roles/storage.admin) 角色。這個角色具備建立含有 IP 篩選規則的 bucket 所需的權限。
如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
storage.buckets.createstorage.buckets.setIpFilter
您也可以透過自訂角色取得這些權限。您或許還可透過其他預先定義的角色取得這些權限。如要瞭解哪些角色與哪些權限相關聯,請參閱「Cloud Storage 的 IAM 角色」。
如需授予 bucket 角色的操作說明,請參閱「在 bucket 上設定及管理 IAM 政策」。
建立含有 IP 過濾規則的 bucket
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
- 點選 「Create」(建立)。
在「建立 bucket」頁面中,輸入 bucket 資訊。完成下列每個步驟後,請點選「繼續」前往下一個步驟:
-
在「Get started」(開始使用) 部分,執行下列操作:
-
輸入符合 bucket 名稱規定的全域不重複名稱。
-
如要新增值區標籤,請按一下 展開箭頭,展開「標籤」部分,然後按一下 add_box「新增標籤」,並為標籤指定
key和value。
-
-
在「Choose where to store your data」(選擇資料的儲存位置) 部分,執行下列操作:
-
在「Choose how to store your data」(選擇資料儲存方式) 部分,執行下列操作:
-
為 bucket 選取預設儲存空間級別,或選取「Autoclass」,讓系統自動管理 bucket 資料的儲存空間級別。
-
在「為資料密集型工作負載提供最理想的儲存空間」部分,執行下列操作:
-
如要啟用階層命名空間,請選取「為這個 bucket 啟用階層命名空間」。
- 如要啟用 Rapid Cache,請選取「Enable Rapid Cache」(啟用 Rapid Cache),然後按照下列步驟操作:
-
如要建立快取,請按一下「設定」。
-
在隨即顯示的「設定快取設定」對話方塊中,按一下所列區域旁的下拉式箭頭,然後選取要建立快取的區域。
-
按一下「完成」。
-
-
-
-
在「Choose how to control access to objects」(選取如何控制物件的存取權) 部分,執行下列操作:
-
選取 bucket 是否強制執行禁止公開存取。
-
選取「Uniform」(統一),啟用 bucket 的統一 bucket 層級存取權。
-
如要為 bucket 設定 IP 過濾功能,請按照下列步驟操作:
在「IP 過濾」部分,按一下「設定」。
-
如要允許從公開 IP 位址存取,請按照下列步驟操作:
- 按一下「Public internet」(公開網際網路)。
-
在「允許的 IP 範圍」欄位中,指定一或多個允許的 IPv4 位址範圍或 IPv6 CIDR 範圍。例如:
192.0.2.0/24或2001:db8::/32。為避免無法存取 bucket,請加入自己的 IP 位址。
-
如要允許從虛擬私有雲網路存取,請按照下列步驟操作:
- 按一下「虛擬私有雲網路」。
-
針對每個電視網執行下列操作:
- 按一下「Add VPC network」(新增虛擬私有雲網路)。
-
在「New VPC network」(新增虛擬私有雲網路) 區段中,指定下列資訊:
- 在「專案 ID」欄位中,輸入專案 ID。
- 在「Network name」(網路名稱) 欄位中,輸入網路名稱。
-
在「允許的 IP 範圍」欄位中,輸入一或多個 IPv4 或 IPv6 CIDR 範圍,例如
192.0.2.0/24或2001:db8::/32。為避免無法存取 bucket,請加入自己的 IP 位址。
- 按一下「完成」。
-
如要允許其他組織中受信任的 Cloud de Confiance 服務代理和虛擬私有雲網路略過 IP 過濾設定,請按照下列步驟操作:
- 按一下「其他設定」。
-
在「Google Cloud 服務代理存取權」部分,選取下列其中一個選項:
- 允許服務代理存取:啟用這項設定後,BigLake、儲存空間分析、Vertex AI 和 BigQuery 等服務在需要存取這個 bucket 時,可以略過 IP 過濾驗證程序。 Cloud de Confiance
- 拒絕服務代理存取權:對 Cloud de Confiance 服務代理強制執行 IP 過濾規則。
- 在「Cross-organization VPC access」(跨組織虛擬私有雲存取權) 專區,執行下列其中一項操作:
- 如要允許來自不同 Cloud de Confiance 組織中特定虛擬私有雲網路的存取權,請按一下切換按鈕,將其切換至「允許」位置。
- 如要禁止從 Cloud de Confiance 組織外部的虛擬私有雲網路存取,請將切換鈕設為「Deny」(拒絕) (預設狀態)。
- 按一下「檢查」,然後按一下「儲存」。
-
-
在「Choose how to protect object data」(選擇保護物件資料的方式) 部分,執行下列操作:
-
在「Data protection」(資料保護) 下方,選取要為 bucket 設定的選項。
-
如要變更虛刪除功能在刪除物件後保留物件的時間長度,請選取「虛刪除政策」核取方塊,然後選取「設定自訂保留期限」選項。然後指定已刪除物件的保留時間。
如要停用虛刪除功能 (例如 bucket 主要包含短期暫存資料),請取消勾選「Soft delete policy」(虛刪除政策) 核取方塊。
-
如要選擇如何加密物件資料,請按一下標示為「資料加密」的 展開箭頭,然後執行下列操作:
- 在「Default encryption key type」(預設加密金鑰類型) 區段中,選取 bucket 的預設加密金鑰。如果選取「Cloud KMS key」(Cloud KMS 金鑰),請提供 Cloud Key Management Service 金鑰。
- 在「加密機制強制執行規則」部分的「金鑰類型」,選取要允許或限制 bucket 中新物件使用的加密類型。
-
-
點選「建立」。
gcloud
確認您已安裝 Google Cloud CLI 526.0.0 以上版本:
gcloud version | head -n1如果已安裝舊版 gcloud CLI,請更新版本:
gcloud components update --version=526.0.0建立 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 過濾設定的模式。有效值為Enabled和Disabled。設為Enabled時,IP 篩選規則會套用至 bucket。系統會根據這些規則評估對 bucket 的任何傳入要求。如果設為Disabled,所有傳入要求都能存取 bucket。RANGE_CIDR是允許存取 bucket 的公用網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個位址範圍,並以清單形式呈現。PROJECT_ID是虛擬私有雲 (VPC) 網路所在的專案 ID。如要設定多個虛擬私有雲網路,您必須指定每個網路所在的專案。NETWORK_NAME是可存取 bucket 的虛擬私有雲網路名稱。如要設定多個虛擬私有雲網路,您必須為每個網路指定名稱。ALLOW_CROSS_ORG_VPCS是布林值,表示是否允許在vpcNetworkSources中定義的虛擬私有雲網路,源自不同機構。這是選填欄位。如果設為true,要求會允許跨組織的虛擬私有雲網路。如果設為false,要求會將虛擬私有雲網路限制在與 bucket 相同的組織。如未指定,預設值為false。只有在vpcNetworkSources不為空白時,這個欄位才會生效。ALLOW_ALL_SERVICE_AGENT_ACCESS是布林值,指出是否允許服務代理存取 bucket,無論 IP 篩選器設定為何。如果值為true,其他 Cloud de Confiance 服務可以使用服務代理存取 bucket,不必經過 IP 驗證。
如要建立含有 IP 過濾規則的 bucket,請在開發環境中執行
gcloud storage buckets create指令:gcloud storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
其中:
BUCKET_NAME是您要為 bucket 指定的名稱,須符合命名規定。例如:my-bucket。IP_FILTER_CONFIG_FILE是 JSON 檔案,定義傳入要求的規則。
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立包含 bucket 設定的 JSON 檔案,其中必須包含 bucket 的
name和ipFilter設定欄位。如需 bucket IP 篩選規則的範例和結構資訊,請參閱「Bucket IP 篩選設定」。{ "name": "BUCKET_NAME", "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 篩選器設定的狀態。有效值為Enabled和Disabled。如果設為Enabled,IP 篩選規則會套用至 bucket,且所有傳入 bucket 的要求都會根據這些規則進行評估。設為Disabled時,只要您具備必要的 IAM 權限,所有傳入的要求都能存取 bucket 及其資料,不必經過任何評估。RANGE_CIDR是允許存取 bucket 的公用網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個位址範圍,並以清單形式呈現。PROJECT_ID是虛擬私有雲網路所在的專案 ID。如要設定多個虛擬私有雲網路,您必須指定每個網路所在的專案。NETWORK_NAME是允許存取值區的虛擬私有雲網路名稱。如要設定多個虛擬私有雲網路,您必須為每個網路指定名稱。ALLOW_ALL_SERVICE_AGENT_ACCESS是布林值,表示是否允許服務代理程式存取 bucket,無論 IP 篩選器設定為何。如果值為true,其他 Cloud de Confiance 服務可以使用服務代理存取 bucket,無須進行 IP 驗證。ALLOW_CROSS_ORG_VPCS是布林值,表示是否允許在vpcNetworkSources中定義的虛擬私有雲網路來自不同機構。這是選填欄位。如果設為true,要求會允許跨組織的虛擬私有雲網路。如果設為false,要求會將虛擬私有雲網路限制在與 bucket 相同的組織。如未指定,預設值為false。只有在vpcNetworkSources不為空白時,這個欄位才會生效。
使用
cURL呼叫 JSON API,並發出 POST bucket 要求:curl -X POST --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?project=PROJECT_ID"
其中:
JSON_FILE_NAME是包含 bucket 設定的 JSON 檔案名稱。PROJECT_ID是與 bucket 相關聯的專案 ID。例如:my-project。
Bucket IP 過濾設定
本節提供 bucket IP 過濾 JSON 檔案設定範例,說明如何控管 Cloud Storage bucket 的存取權。您可以使用下列任一範例,授予傳入要求的存取權:
任何公開 IP 位址 (IPv4 或 IPv6):
下列設定會授予任何公開 IPv4 或 IPv6 位址的存取權,但會封鎖來自任何虛擬私有雲的流量:
gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false } }
特定公開 IP 範圍:
以下設定範例會授予
192.0.2.0/24公開 IPv4 位址範圍的存取權,但會封鎖來自任何虛擬私有雲的流量:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false } }
以下設定範例會授予
2001:db8::/32公開 IPv6 位址範圍的存取權,但會封鎖來自任何虛擬私有雲的流量:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false } }
虛擬私有雲網路:使用下列設定,即可授予虛擬私有雲網路中資源的存取權。您可以授予虛擬私有雲中所有 IP 位址或特定 IP 範圍的存取權。在以下範例中,
PROJECT_ID是虛擬私有雲網路所在的專案 ID,NETWORK_NAME則是有權存取 bucket 的虛擬私有雲網路名稱。下列範例設定會授予來自特定虛擬私有雲的任何 IPv4 或 IPv6 位址要求存取權,並封鎖來自公開 IP 位址的流量:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false } }
以下範例設定只會授予存取權給來自虛擬私有雲的請求,該虛擬私有雲與具有外部 IPv4 位址的 VM 相關聯,並封鎖來自公開 IP 位址的流量:
192.0.2.0/24gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false } }
下列設定範例僅授予存取權給來自虛擬私有雲的要求,該虛擬私有雲具有與沒有外部 IP 位址的 VM 相關聯的內部 IPv4 子網路範圍,並封鎖源自公開 IP 位址的流量:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
其中:
IP_ADDRESS是內部 IPv4 子網路範圍。JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false } }
其中:
IP_ADDRESS是內部 IPv4 子網路範圍。下列範例設定僅允許來自 VPC 的要求,該 VPC 具有與 VM 相關聯的雙重堆疊 IPv4 和 IPv6 子網路範圍,且外部 IPv6 位址範圍為
2001:db8::/32,並封鎖來自公開 IP 位址的流量:gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false }
JSON API
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false } }