本頁說明如何建立含有 IP 篩選規則的 bucket。建立含有 IP 篩選器的 bucket 後,您就能根據 bucket IP 篩選規則中指定的 IP 位址檢查傳入要求,藉此控管 bucket 的存取權。詳情請參閱「儲存空間值區 IP 篩選」。
如要瞭解如何建立或更新現有 bucket 的 IP 篩選規則,請參閱「更新 bucket IP 篩選規則」。
必要的角色
如要取得建立含有 IP 篩選規則值區的必要權限,請要求管理員授予您值區的「儲存空間管理員」角色 (roles/storage.admin
)。這個角色具備建立含有 IP 篩選規則的 bucket 所需的權限。
如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.buckets.create
storage.buckets.setIpFilter
您也可以透過自訂角色取得這些權限。您或許還可透過其他預先定義的角色取得這些權限。如要瞭解哪些角色與哪些權限相關聯,請參閱「Cloud Storage 的 IAM 角色」。
如需如何授予值區角色的操作說明,請參閱「將 IAM 與值區搭配使用」。
建立含有 IP 篩選規則的 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。系統會根據這些規則評估傳送至儲存空間的所有要求。如果設為Disabled
,所有傳入要求都能存取 bucket。RANGE_CIDR
是允許存取值區的公開網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個地址範圍做為清單。PROJECT_ID
是虛擬私有雲 (VPC) 網路所在的專案 ID。如要設定多個虛擬私有雲網路,您需要指定每個網路所在的專案。NETWORK_NAME
是允許存取值區的 VPC 網路名稱。如要設定多個虛擬私有雲網路,您必須為每個網路指定名稱。ALLOW_CROSS_ORG_VPCS
是布林值,表示是否允許在vpcNetworkSources
中定義的虛擬私有雲網路來自不同機構。這是選填欄位。如果設為true
,要求允許跨機構的虛擬私有雲網路。如果設為false
,要求會將虛擬私有雲網路限制為與儲存空間相同的機構。如未指定,則預設值為false
。ALLOW_ALL_SERVICE_AGENT_ACCESS
是布林值,表示是否允許服務代理程式存取 bucket,無論 IP 篩選器設定為何。如果值為true
,其他 Google Cloud 服務可以使用服務代理存取 bucket,不必進行 IP 位址驗證。
如要建立含有 IP 篩選規則的 bucket,請在開發環境中執行
gcloud alpha storage buckets create
指令:gcloud alpha storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
其中:
BUCKET_NAME
是您要授予值區的名稱,必須遵守命名要求。例如:my-bucket
。IP_FILTER_CONFIG_FILE
是 JSON 檔案,定義傳入要求的規則。
REST API
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
是允許存取值區的公開網路 IPv4 或 IPv6 位址範圍。您可以輸入一或多個地址範圍做為清單。PROJECT_ID
是虛擬私有雲網路所在的專案 ID。如要設定多個虛擬私有雲網路,您必須指定每個網路所在的專案。NETWORK_NAME
是允許存取值區的 VPC 網路名稱。如要設定多個虛擬私有雲網路,您必須為每個網路指定名稱。ALLOW_ALL_SERVICE_AGENT_ACCESS
是布林值,表示是否允許服務代理程式存取 bucket,無論 IP 篩選器設定為何。如果值為true
,其他服務可以使用服務代理存取 bucket,不必進行 IP 驗證。 Google CloudALLOW_CROSS_ORG_VPCS
是布林值,表示是否允許在vpcNetworkSources
中定義的虛擬私有雲網路來自不同機構。這是選填欄位。如果設為true
,要求允許跨機構的虛擬私有雲網路。如果設為false
,要求會將虛擬私有雲網路限制為與儲存空間相同的機構。如未指定,則預設值為false
。
使用
cURL
來透過 POST bucket 要求呼叫 JSON API: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_IDENTIFIER"
其中:
JSON_FILE_NAME
是包含 bucket 設定的 JSON 檔案名稱。PROJECT_IDENTIFIER
是與值區建立關聯的專案 ID 或編號。例如:my-project
。
Bucket IP 篩選設定
本節提供值區 IP 篩選 JSON 檔案設定範例,說明如何控管 Cloud Storage 值區的存取權。您可以使用下列任何範例,授予對傳入要求的存取權:
任何公開 IP 位址 (IPv4 或 IPv6):
下列設定會授予任何公開 IPv4 或 IPv6 位址的存取權,但會封鎖來自任何 VPC 的流量:
gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false } }
特定公開 IP 範圍:
以下範例設定會授予
192.0.2.0/24
公開 IPv4 位址範圍的存取權,但會封鎖來自任何 VPC 的流量:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "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 }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false } }
VPC 網路:使用下列設定,即可授予 VPC 網路內資源的存取權。您可以授予存取權給虛擬私有雲中的所有 IP 位址,或是虛擬私有雲中的特定 IP 範圍。在每個範例中,
PROJECT_ID
是虛擬私有雲網路所在的專案 ID,NETWORK_NAME
是允許存取儲存空間的虛擬私有雲網路名稱。以下範例設定會授予來自特定 VPC 的任何 IPv4 或 IPv6 位址要求存取權,並封鎖來自公開 IP 位址的流量:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false } }
以下範例設定只會授予存取權給與 VM 相關聯的 VPC 提出的要求,該 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 }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false } }
以下範例設定只會授予存取權給來自 VPC 的要求,該 VPC 具有與沒有外部 IP 位址的 VM 相關聯的內部 IPv4 子網路範圍,並封鎖來自公開 IP 位址的流量:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
其中:
IP_ADDRESS
是內部 IPv4 子網路範圍。REST API
JSON API
{ "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 }
REST API
JSON API
{ "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