本页面介绍如何在现有存储桶中创建或更新存储桶 IP 过滤规则。
所需的角色
如需获得更新存储桶 IP 过滤规则所需的权限,请让您的管理员为您授予存储桶的 Storage Admin (roles/storage.admin
) 角色。此角色包含更新存储桶 IP 过滤规则所需的权限。
如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.update
storage.buckets.setIpFilter
您还可以通过自定义角色获得这些权限。 此外,您可能也可以通过其他预定义角色来获取这些权限。要查看哪些角色与哪些权限相关联,请参阅适用于 Cloud Storage 的 IAM 角色。
如需了解如何授予项目角色,请参阅管理对项目的访问权限。
在现有存储桶中创建或更新 IP 过滤规则。
gcloud
验证您是否已安装 Google Cloud CLI 526.0.0 版或更高版本:
gcloud version | head -n1
如果您安装的是早期 gcloud CLI 版本,请更新版本:
gcloud components update --version=526.0.0
创建一个 JSON 文件,用于定义传入请求的规则。如需查看示例以及有关如何构造存储桶 IP 过滤规则的信息,请参阅存储桶 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
是存储桶 IP 过滤配置的模式。有效值为Enabled
和Disabled
。如果设置为Enabled
,则会对存储桶应用 IP 过滤规则。系统会根据这些规则评估对存储桶的所有传入请求。设置为Disabled
时,所有传入请求均可访问存储桶。RANGE_CIDR
是允许访问存储桶的公共网络 IPv4 或 IPv6 地址范围。您可以以列表形式输入一个或多个地址范围。PROJECT_ID
是虚拟私有云 (VPC) 网络所在项目的 ID。如需配置多个 VPC 网络,您需要指定每个网络所在的项目。NETWORK_NAME
是可以访问存储桶的 VPC 网络的名称。如需配置多个 VPC 网络,您需要为每个网络指定一个名称。ALLOW_CROSS_ORG_VPCS
是一个布尔值,用于指示是否允许在vpcNetworkSources
中定义的 VPC 网络源自其他组织。此字段是可选字段。如果设置为true
,则请求允许使用跨组织 VPC 网络。如果设置为false
,则请求会将 VPC 网络限制为与存储桶位于同一组织。如果未指定,则默认值为false
。ALLOW_ALL_SERVICE_AGENT_ACCESS
是一个布尔值,用于指示是否允许服务代理访问存储桶,无论 IP 过滤条件配置如何。如果值为true
,则其他 Trusted Cloud 服务可以使用服务代理访问存储桶,而无需进行基于 IP 的验证。
如需更新存储桶 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
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。创建一个包含存储桶设置的 JSON 文件,其中必须包含存储桶的
name
和ipFilter
配置字段。如需查看示例以及有关如何构造存储桶 IP 过滤规则的信息,请参阅存储桶 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 过滤条件配置的状态。有效值为Enabled
和Disabled
。如果设置为Enabled
,则会对存储桶应用 IP 过滤规则,并根据这些规则评估存储桶的所有传入请求。设置为Disabled
时,所有传入请求都可以访问存储桶及其数据,不进行任何评估。RANGE_CIDR
是允许访问存储桶的公共网络 IPv4 或 IPv6 地址范围。您可以以列表形式输入一个或多个地址范围。PROJECT_ID
是 VPC 网络所在项目的 ID。如需配置多个 VPC 网络,您需要指定每个网络所在的项目。NETWORK_NAME
是可以访问存储桶的 VPC 网络的名称。如需配置多个 VPC 网络,您需要为每个网络指定一个名称。ALLOW_ALL_SERVICE_AGENT_ACCESS
是一个布尔值,用于指示是否允许服务代理访问存储桶,无论 IP 过滤条件配置如何。如果值为true
,则其他 Trusted Cloud 服务可以使用服务代理访问存储桶,而无需进行基于 IP 的验证。ALLOW_CROSS_ORG_VPCS
是一个布尔值,用于指示是否允许在vpcNetworkSources
列表中定义的 VPC 网络源自其他组织。此字段是可选字段。如果设置为true
,则请求允许使用跨组织 VPC 网络。如果设置为false
,则请求会将 VPC 网络限制为与存储桶位于同一组织。如果未指定,则默认值为false
。
使用
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
。