Esta página descreve como criar um bucket com regras de filtragem de IP. Ao criar um bucket com filtragem de IP, você pode controlar o acesso aos buckets examinando as solicitações recebidas em relação aos endereços IP especificados nas regras de filtragem de IP do bucket. Para mais detalhes, consulte Filtragem de IP do bucket.
Para informações sobre como criar ou atualizar as regras de filtragem de IP em um bucket atual, consulte Atualizar regras de filtragem de IP do bucket.
Funções exigidas
Para ter as permissões necessárias para criar um bucket com regras de filtragem de IP, peça ao administrador para conceder a você o papel de Administrador do Storage (roles/storage.admin) no bucket. Esse papel contém as permissões necessárias para criar um bucket com regras de filtragem de IP.
Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
storage.buckets.createstorage.buckets.setIpFilter
Também é possível receber essas permissões com funções personalizadas. Também é possível conseguir essas permissões com outros papéis predefinidos. Para conferir quais papéis estão associados a quais permissões, consulte Papéis do IAM para o Cloud Storage.
Para instruções sobre como conceder papéis nos buckets, consulte Definir e gerenciar políticas do IAM em buckets.
Criar bucket com regras de filtragem de IP
gcloud
Verifique se você tem a versão 526.0.0 ou mais recente da Google Cloud CLI instalada:
gcloud version | head -n1Se você tiver uma versão anterior da CLI gcloud instalada, atualize a versão:
gcloud components update --version=526.0.0Crie um arquivo JSON que defina as regras para solicitações recebidas. Para exemplos e informações sobre como estruturar as regras de filtragem de IP do bucket, consulte Configurações de filtragem de IP do bucket.
{ "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 }
Em que:
MODEé o modo da configuração de filtragem de IP do bucket. Os valores válidos sãoEnabledeDisabled. Quando definido comoEnabled, as regras de filtragem de IP são aplicadas a um bucket. Qualquer solicitação recebida para o bucket é avaliada em relação a essas regras. Quando definido comoDisabled, todas as solicitações recebidas podem acessar o bucket.RANGE_CIDRé um intervalo de endereços IPv4 ou IPv6 de rede pública que tem permissão para acessar o bucket. É possível inserir um ou vários intervalos de endereços como uma lista.PROJECT_IDé o ID do projeto em que a rede da nuvem privada virtual (VPC) existe. Para configurar várias redes VPC, é necessário especificar o projeto em que cada rede está localizada.NETWORK_NAMEé o nome da rede VPC que tem permissão para acessar o bucket. Para configurar várias redes VPC, é necessário especificar um nome para cada rede.ALLOW_CROSS_ORG_VPCSé um valor booleano que indica se as redes VPC definidas emvpcNetworkSourcespodem ser originadas de uma organização diferente. Este campo é opcional. Se definido comotrue, a solicitação permite redes VPC entre organizações. Se definido comofalse, a solicitação restringe as redes VPC à mesma organização do bucket. Se não for especificado, o valor padrão seráfalse. Esse campo só será aplicado sevpcNetworkSourcesnão estiver vazio.ALLOW_ALL_SERVICE_AGENT_ACCESSé um valor booleano que indica se os agentes de serviço podem acessar o bucket, independentemente da configuração do filtro de IP. Se o valor fortrue, outros Cloud de Confiance serviços poderão usar agentes de serviço para acessar o bucket sem validação baseada em IP.
Para criar um bucket com regras de filtragem de IP, execute o
gcloud storage buckets createcomando no ambiente de desenvolvimento:gcloud storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
Em que:
BUCKET_NAMEé o nome que você quer dar ao bucket, sujeito a requisitos de nomenclatura. Por exemplo,my-bucket.IP_FILTER_CONFIG_FILEé o arquivo JSON que define as regras para solicitações recebidas.
API JSON
Tenha a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization.Crie um arquivo JSON que contenha as configurações do bucket, que precisam incluir os campos de configuração
nameeipFilterpara o bucket. Para exemplos e informações sobre como estruturar as regras de filtragem de IP do bucket, consulte Configurações de filtragem de IP do bucket.{ "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 }, }
Em que:
MODEé o estado da configuração do filtro de IP. Os valores válidos sãoEnabledeDisabled. Quando definido comoEnabled, as regras de filtragem de IP são aplicadas a um bucket e todas as solicitações recebidas para o bucket são avaliadas em relação a essas regras. Quando definido comoDisabled, todas as solicitações recebidas podem acessar o bucket e os dados dele sem qualquer avaliação se você tiver as permissões do IAM necessárias.RANGE_CIDRé um intervalo de endereços IPv4 ou IPv6 de rede pública que tem permissão para acessar o bucket. É possível inserir um ou vários intervalos de endereços como uma lista.PROJECT_IDé o ID do projeto em que a rede VPC existe. Para configurar várias redes VPC, é necessário especificar o projeto em que cada rede está localizada.NETWORK_NAMEé o nome da rede VPC que tem permissão para acessar o bucket. Para configurar várias redes VPC, é necessário especificar um nome para cada rede.ALLOW_ALL_SERVICE_AGENT_ACCESSé um valor booleano que indica se os agentes de serviço podem acessar o bucket, independentemente da configuração do filtro de IP. Se o valor fortrue, outros Cloud de Confiance serviços poderão usar agentes de serviço para acessar o bucket sem validação baseada em IP.ALLOW_CROSS_ORG_VPCSé um valor booleano que indica se as redes VPC definidas emvpcNetworkSourcespodem ser originadas de uma organização diferente. Este campo é opcional. Se definido comotrue, a solicitação permite redes VPC entre organizações. Se definido comofalse, a solicitação restringe as redes VPC à mesma organização do bucket. Se não for especificado, o valor padrão seráfalse. Esse campo só será aplicado sevpcNetworkSourcesnão estiver vazio.
Use
cURLpara chamar a API JSON com uma solicitação de bucket POST: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"
Em que:
JSON_FILE_NAMEé o nome do arquivo JSON que contém as configurações do bucket.PROJECT_IDé o ID do projeto ao qual o bucket está associado. Por exemplo,my-project.
Configurações de filtragem de IP do bucket
Esta seção fornece exemplos de configurações de arquivo JSON de filtragem de IP do bucket para controlar o acesso aos buckets do Cloud Storage. É possível conceder acesso a solicitações recebidas usando qualquer um dos exemplos a seguir:
Qualquer endereço IP público (IPv4 ou IPv6):
A configuração a seguir concede acesso a qualquer endereço IPv4 ou IPv6 público, mas bloqueia o tráfego originado de qualquer VPC:
gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false } }
Intervalos de IP públicos específicos:
A configuração de exemplo a seguir concede acesso ao
192.0.2.0/24intervalo de endereços IPv4 públicos, mas bloqueia o tráfego originado de qualquer VPC:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false } }
A configuração de exemplo a seguir concede acesso ao
2001:db8::/32intervalo de endereços IPv6 públicos, mas bloqueia o tráfego originado de qualquer VPC:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false } }
Redes VPC: usando as configurações a seguir, é possível conceder acesso a recursos na rede VPC. É possível conceder acesso a todos os endereços IP na VPC ou a intervalos de IP específicos na VPC. Em cada um desses exemplos,
PROJECT_IDé o ID do projeto em que a rede VPC existe eNETWORK_NAMEé o nome da rede VPC que tem permissão para acessar o bucket.A configuração de exemplo a seguir concede acesso a uma solicitação de qualquer endereço IPv4 ou IPv6 proveniente de uma VPC específica e bloqueia o tráfego originado de um endereço IP público:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false } }
A configuração de exemplo a seguir concede acesso apenas a uma solicitação de uma VPC associada a uma VM com um endereço IPv4 externo como
192.0.2.0/24e bloqueia o tráfego originado de um endereço IP público:gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false } }
A configuração de exemplo a seguir concede acesso apenas a uma solicitação proveniente de uma VPC com um intervalo de sub-rede IPv4 interna associada a uma VM sem endereço IP externo e bloqueia o tráfego originado de um endereço IP público:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
Em que:
IP_ADDRESSé um intervalo de sub-rede IPv4 interna.
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false } }
Em que:
IP_ADDRESSé um intervalo de sub-rede IPv4 interna.A configuração de exemplo a seguir concede acesso apenas a uma solicitação proveniente de uma VPC com intervalo de sub-rede IPv4 e IPv6 de pilha dupla associada a uma VM com um intervalo de endereços IPv6 externos como
2001:db8::/32e bloqueia o tráfego originado de um endereço IP público:gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false }
API JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false } }