本頁說明如何建立含有 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」頁面。
- 按一下 「建立」。
在「建立 bucket」頁面中,輸入 bucket 資訊。完成下列每個步驟後,請點選「繼續」前往下一個步驟:
-
在「開始使用」部分,執行下列操作:
-
輸入符合bucket 名稱要求的全域不重複名稱。
-
如要新增值區標籤,請按一下 展開箭頭,展開「標籤」部分,然後按一下 add_box「新增標籤」,並為標籤指定
key和value。
-
-
在「Choose where to store your data」(選擇資料的儲存位置) 部分,執行下列操作:
-
在「選擇資料儲存方式」部分,執行下列操作:
-
在「Choose how to control access to objects」(選取如何控制物件的存取權) 部分,執行下列操作:
-
選取 bucket 是否要強制執行禁止公開存取。
-
選取「統一」,即可在 bucket 上啟用統一 bucket 層級存取權。
-
如要為 bucket 設定 IP 過濾功能,請按照下列步驟操作:
在「IP 過濾」部分,按一下「設定」。
-
如要允許從公開 IP 位址存取,請按照下列步驟操作:
- 按一下「公用網際網路」。
-
在「允許的 IP 範圍」欄位中,指定一或多個允許的 IPv4 位址範圍或 IPv6 CIDR 範圍。例如
192.0.2.0/24或2001:db8::/32。為避免無法存取 bucket,請加入自己的 IP 位址。
-
如要允許從虛擬私有雲網路存取,請按照下列步驟操作:
- 按一下「虛擬私有雲網路」。
-
針對每個電視網執行下列操作:
- 按一下「新增虛擬私有雲網路」。
-
在「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 過濾規則。
- 在「跨組織虛擬私有雲存取權」部分,執行下列其中一項操作:
- 如要允許來自不同 Cloud de Confiance 組織中特定虛擬私有雲網路的存取權,請按一下切換按鈕,將其切換至「允許」位置。
- 如要禁止從貴機構外部的虛擬私有雲網路存取資料,請點選切換鈕,將其設為「拒絕」(預設狀態)。 Cloud de Confiance
- 按一下「檢查」,然後按一下「儲存」。
-
-
在「選擇保護物件資料的方式」部分,執行下列操作:
-
選取「資料保護」下方的任何選項,為 bucket 設定保護措施。
-
如要變更虛刪除功能在刪除物件後保留物件的時間長度,請選取「虛刪除政策」核取方塊,然後選取「設定自訂保留期限」選項。然後指定要保留已刪除物件的時間長度。
如要停用虛刪除功能 (例如值區主要包含短期暫存資料),請取消勾選「虛刪除政策」核取方塊。
-
如要選擇如何加密物件資料,請按一下標示為「資料加密」的 展開箭頭,然後執行下列操作:
- 在「預設加密金鑰類型」部分,選取 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,要求會將虛擬私有雲網路限制為與儲存空間相同的機構。如未指定,預設值為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 位址的存取權,但會封鎖來自任何 VPC 的流量:
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 位址範圍的存取權,但封鎖來自任何 VPC 的流量: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 } }