如要根據來源 IP 位址或虛擬私有雲 (VPC) 網路限制 bucket 存取權,可以建立具有 IP 過濾規則的 Cloud Storage bucket。
如要新增或修改現有 bucket 的規則,請參閱「更新 bucket IP 篩選規則」。如需背景資訊,請參閱「Bucket IP 篩選」。
必要的角色
如要取得建立 bucket 並設定 IP 篩選規則所需的權限,請要求管理員授予 bucket 的 Storage 管理員 (roles/storage.admin) 角色。這個角色具備建立 bucket 和 IP 篩選規則所需的權限。
如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
storage.buckets.createstorage.buckets.setIpFilter
您也可以透過自訂角色取得這些權限。您或許也能透過其他預先定義的角色取得這些權限。如要瞭解哪些角色與哪些權限相關聯,請參閱「Cloud Storage 的 IAM 角色」。
如需授予 bucket 角色的操作說明,請參閱「在 bucket 上設定及管理 IAM 政策」。
建立具有 IP 篩選規則的 bucket
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
- 點選 「Create」(建立)。
在「Create a bucket」(建立 bucket) 頁面中,輸入 bucket 資訊。完成下列各步驟後,請點選「Continue」(繼續) 繼續進行下一個步驟:
-
在「Get started」(開始使用) 部分,執行下列操作:
-
輸入符合 bucket 名稱規定的全域不重複名稱。
-
如要新增值區標籤,請按一下 展開箭頭,展開「Labels」(標籤) 區段,然後按一下 add_box「Add label」(新增標籤),並為標籤指定
key和value。
-
-
在「Choose where to store your data」(選擇資料的儲存位置) 部分,執行下列操作:
-
使用位置類型的下拉式選單,選取要永久儲存 bucket 內物件資料的位置。
-
如果選取「雙區域」位置類型,也可以勾選相關核取方塊,啟用強化型複製功能。
-
-
如要設定跨 bucket 複製作業,請選取「新增透過 Storage 移轉服務執行的跨 bucket 複製作業」,然後按照下列步驟操作:
設定跨 bucket 複製作業
- 在「Bucket」選單中選取 bucket。
-
在「Replication settings」(複製設定) 專區中,按一下「Configure」(設定),即可調整複製工作的設定。
「Configure cross-bucket replication」(設定跨 bucket 複製作業) 窗格隨即顯示。
- 如要依物件名稱前置字串篩選要複製的物件,請輸入要納入或排除物件的前置字串,然後按一下「 新增前置字串」。
- 如要為複製的物件設定儲存空間級別,請從「Storage class」(儲存空間級別) 選單中選取儲存空間級別。如果略過這個步驟,複製的物件預設會使用目的地 bucket 的儲存空間級別。
- 按一下「完成」。
-
在「Choose how to store your data」(選擇資料儲存方式) 部分,執行下列操作:
-
選取 bucket 的預設儲存空間級別,或選取「Autoclass」,讓系統自動管理 bucket 資料的儲存空間級別。
-
在「Optimize storage for data-intensive workloads」(為資料密集型工作負載提供最理想的儲存空間) 部分,執行下列操作:
-
如要啟用階層命名空間,請選取「Enable Hierarchical namespace on this bucket」(為這個 bucket 啟用階層命名空間)。
- 如要啟用 Rapid Cache,請選取「Enable Rapid Cache」(啟用 Rapid Cache),然後按照下列步驟操作:
-
如要建立快取,請按一下「設定」。
-
在顯示的「Configure cache settings」(設定快取設定) 對話方塊中,按一下所列區域旁的下拉式箭頭,然後選取要建立快取的可用區。
-
按一下「完成」。
-
-
-
-
在「Choose how to control access to objects」(選取如何控制物件的存取權) 部分,執行下列操作:
-
選取 bucket 是否強制執行禁止公開存取。
-
選取「Uniform」(統一),啟用 bucket 的統一 bucket 層級存取權。
-
如要設定 bucket 的 IP 過濾功能,請按照下列步驟操作:
在「IP filtering」(IP 過濾) 部分,按一下 「Configure」(設定)。
-
如要允許從公開 IP 位址存取,請按照下列步驟操作:
- 按一下「Public internet」(公開網際網路)。
-
在「Allowed IP range(s)」(允許的 IP 範圍) 欄位中,指定一或多個要允許的 IPv4 位址範圍或 IPv6 CIDR 範圍。例如:
192.0.2.0/24或2001:db8::/32。為避免無法存取 bucket,請加入自己的 IP 位址。
-
如要允許從虛擬私有雲網路存取,請按照下列步驟操作:
- 按一下「虛擬私有雲網路」。
-
針對每個聯播網執行下列操作:
- 按一下「Add VPC network」(新增虛擬私有雲網路)。
-
在「New VPC network」(新增虛擬私有雲網路) 區段中,指定下列資訊:
- 在「Project ID」欄位中輸入專案 ID。
- 在「Network name」(網路名稱) 欄位中,輸入網路名稱。
-
在「Allowed IP range(s)」(允許的 IP 範圍) 欄位中,輸入一或多個 IPv4 或 IPv6 CIDR 範圍,例如
192.0.2.0/24或2001:db8::/32。為避免無法存取 bucket,請加入自己的 IP 位址。
- 按一下「完成」。
-
如要允許其他組織中受信任的 Google Cloud 服務代理和虛擬私有雲網路略過 IP 過濾設定,請按照下列步驟操作:
- 按一下「其他設定」。
-
在「Google Cloud 服務代理存取權」部分,選取下列其中一個選項:
- 允許服務代理存取:啟用 Google Cloud 服務 (例如 BigLake、儲存空間分析、Vertex AI 和 BigQuery),在需要存取這個 bucket 時,略過 IP 過濾驗證程序。
- 拒絕服務代理存取權:對 Google Cloud 服務代理強制執行 IP 篩選器規則。
- 在「Cross-organization VPC access」(跨組織虛擬私有雲存取權) 專區,執行下列其中一項操作:
- 如要允許不同 Google Cloud 組織中指定虛擬私有雲網路的存取權,請將切換鈕設為「允許」位置。
- 如要禁止從 Google Cloud 組織外部的虛擬私有雲網路存取,請將切換鈕設為「Deny」(拒絕) (預設狀態)。
- 依序點選「查看」和「儲存」。
-
-
在「Choose how to protect object data」(選擇保護物件資料的方式) 部分,執行下列操作:
-
在「Data protection」(資料保護) 下方,選取要為 bucket 設定的選項。
-
如要變更虛刪除功能在刪除後保留物件的時間長度,請勾選「虛刪除政策」核取方塊,然後選取「設定自訂保留時間長度」選項。然後指定已刪除物件的保留時間。
如要停用虛刪除功能 (例如 bucket 主要包含短期暫存資料),請取消勾選「Soft delete policy」(虛刪除政策) 核取方塊。
-
如要選擇加密物件資料的方式,請按一下標示為「Data encryption」(資料加密) 的展開箭頭 ,然後執行下列操作:
- 在「Default encryption key type」(預設加密金鑰類型) 區段中,選取 bucket 的預設加密金鑰。如果選取「Cloud KMS key」(Cloud KMS 金鑰),請提供 Cloud Key Management Service 金鑰。
- 在「Encryption enforcement rules」(加密機制強制執行規則) 區段中,針對「Key types」(金鑰類型),選取要允許或限制 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,其他 Google Cloud 服務可以使用服務代理存取 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是允許存取 bucket 的虛擬私有雲網路名稱。如要設定多個虛擬私有雲網路,您必須為每個網路指定名稱。ALLOW_ALL_SERVICE_AGENT_ACCESS是布林值,指出是否允許服務代理存取 bucket,無論 IP 篩選器設定為何。如果值為true,其他 Google Cloud 服務就能使用服務代理存取 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.googleapis.com/storage/v1/b?project=PROJECT_ID"
其中:
JSON_FILE_NAME是 JSON 檔案的名稱,其中包含 bucket 的設定。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 } }
下列範例設定只會將存取權授予來自與 VM 相關聯的虛擬私有雲要求,該 VM 的外部 IPv4 位址為
192.0.2.0/24,並封鎖來自公開 IP 位址的流量:gcloud
{ "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 } }
後續步驟
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 Cloud Storage 平台的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
免費試用 Cloud Storage