Nesta página, você conhecerá os comandos para trabalhar com regras de firewall, com alguns exemplos de uso.
Antes de começar
Consulte a visão geral das regras de firewall para saber mais sobre regras de firewall, como regras implícitas e regras geradas pelo sistema para redes padrão.
Antes de configurar as regras de firewall, revise os componentes da regra de firewall para se familiarizar com os componentes de firewall usados no Google Cloud.
Como criar regras de firewall
As regras de firewall são identificadas no nível da rede e se aplicam apenas à rede em que são criadas. No entanto, o nome escolhido para cada uma precisa ser único no projeto.
Quando você cria uma regra de firewall, é possível optar por ativar a geração de registros das regras de firewall. Se você ativar a geração de registros, poderá omitir os campos de metadados para economizar custos de armazenamento. Para mais informações, consulte Como usar a geração de registros de regras de firewall.
Console
- Acesse a página "Firewall" no Console do Google Cloud.
Acessar a página "Firewall" - Clique em Criar regra de firewall.
- Digite um Nome para a regra do firewall.
O nome do projeto precisa ser exclusivo. - (Opcional) É possível ativar o registro de regras de firewall:
- Clique em Registros > Ativado.
- Para omitir metadados, expanda Detalhes dos registros e desmarque Incluir metadados.
- Especifique a Rede da regra de firewall.
- Especifique a Prioridade da regra.
Quanto menor o número, mais alta a prioridade. - Em Direção do tráfego, escolha entrada ou saída.
- Em Ação se houver correspondência, escolha permitir ou negar.
- Especifique os Destinos da regra.
- Se você quiser que a regra seja aplicada a todas as instâncias na rede, escolha
All instances in the network
. - Se você quiser que a regra se aplique a determinadas instâncias por tags de rede (destino), selecione
Specified target tags
e digite as tags a que a regra se aplicará no campo Tags de destino. - Se você quiser que a regra se aplique a determinadas instâncias por conta de serviço associada, selecione
Specified service account
, indique se a conta está no projeto atual ou em outro projeto em Escopo da conta de serviço e escolha ou digite o nome dessa conta no campo Conta de serviço de destino.
- Se você quiser que a regra seja aplicada a todas as instâncias na rede, escolha
- Para uma regra de entrada, especifique o Filtro de origem:
- Selecione
IP ranges
e digite os blocos CIDR no campo Intervalos de IP de origem para definir a origem do tráfego de entrada por intervalos de endereço IP. Use0.0.0.0/0
para qualquer rede de origem. - Para limitar a origem pela tag de rede, selecione
Source tags
e digite as tags de rede no campo Tags de origem. Para ver o limite do número de tags de origem, consulte Cotas e Limites do VPC. A filtragem por tag de origem só estará disponível se o destino não for especificado pela conta de serviço. Para mais informações, consulte filtragem por conta de serviço versus tag de rede. - Para limitar a origem por conta de serviço, selecione
Service account
, indique se a conta está no projeto atual ou em outro projeto em Escopo da conta de serviço e escolha ou digite o nome dessa conta no campo Conta de serviço de origem. A filtragem por conta de serviço de origem só estará disponível se o destino não for especificado pela tag de rede. Para mais informações, consulte filtragem por conta de serviço versus tag de rede. - Especifique um Segundo filtro de origem, se quiser. Os filtros de origem secundários não podem usar os mesmos critérios de filtro que o principal. Os intervalos de IP de origem podem ser usados com as tags de origem ou a conta de serviço de origem, o conjunto de origem efetivo é a união dos endereços IP do intervalo de origem e das instâncias identificadas por tags de rede (ou contas de serviço).
- As tags de origem e a conta de serviço de origem não podem ser usadas em conjunto.
- Selecione
- Para uma regra de saída, especifique o filtro de destino:
- Selecione
IP ranges
e digite os blocos CIDR no campo Intervalos de IP de destino para definir o destino do tráfego de saída por intervalos de endereço IP. Use0.0.0.0/0
para indicar em qualquer lugar.
- Selecione
Defina os Protocolos e portas a que a regra se aplica:
Selecione
Allow all
ouDeny all
, dependendo da ação, para que a regra se aplique a todos os protocolos e portas.Definir protocolos e portas específicos:
- Selecione tcp para incluir o protocolo TCP e as
portas. Digite
all
ou uma lista de portas de destino delimitadas por vírgulas, como20-22, 80, 8080
. - Selecione udp para incluir o protocolo UDP e
as portas. Digite
all
ou uma lista de portas de destino delimitadas por vírgulas, como67-69, 123
. - Selecione Outros protocolos para incluir protocolos como
icmp
ousctp
.
- Selecione tcp para incluir o protocolo TCP e as
portas. Digite
(Opcional) É possível criar a regra de firewall, mas não aplicá-la, definindo seu estado de aplicação como desativada. Clique em Desativar regra e selecione Desativada.
Clique em Criar.
gcloud
O comando gcloud
para criar regras de firewall é:
gcloud compute firewall-rules create NAME \ [--network NETWORK; default="default"] \ [--priority PRIORITY;default=1000] \ [--direction (ingress|egress|in|out); default="ingress"] \ [--action (deny | allow )] \ [--target-tags TAG[,TAG,...]] \ [--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \ [--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \ [--source-tags TAG,TAG,] \ [--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \ [--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \ [--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \ [--disabled | --no-disabled] \ [--enable-logging | --no-enable-logging] \ [--logging-metadata LOGGING_METADATA]
Use os parâmetros da seguinte maneira. Mais detalhes sobre cada um estão disponíveis na documentação de referência do SDK.
--network
A rede da regra. Se omitida, a regra será criada na rededefault
. Se você não tiver uma rede padrão ou quiser criar a regra em uma rede específica, use este campo.--priority
Um valor numérico que indica a prioridade da regra. Quanto menor o número, mais alta a prioridade.--direction
A direção do tráfego, que pode seringress
ouegress
.--action
A ação na correspondência, que pode serallow
oudeny
. Precisa ser usado com a sinalização--rules
.- Especifique um destino de uma das três maneiras:
- Para uma regra de entrada, especifique uma origem:
- Omita
--source-ranges
,source-tags
e--source-service-accounts
se a origem de entrada precisar ser qualquer lugar,0.0.0.0/0
. --source-ranges
Use esta sinalização para especificar intervalos de endereços IP de origem no formato CIDR.--source-tags
Use esta sinalização para especificar instâncias de origem por tags de rede. A filtragem por tag de origem só estará disponível se o destino não for especificado pela conta de serviço. Para mais informações, consulte Filtragem por conta de serviço versus tag de rede.--source-ranges
e--source-tags
podem ser usadas juntas. Se ambos forem especificados, o conjunto de origens efetivas será a união dos endereços IP do intervalo de origem e as instâncias identificadas pelas tags de rede, mesmo se as instâncias marcadas tiverem IPs fora dos intervalos de origem.--source-service-accounts
Use este sinalizador para especificar instâncias pelas contas de serviço que elas usam. A filtragem por conta de serviço de origem só estará disponível se o destino não for especificado pela tag de rede. Para mais informações, consulte filtragem por conta de serviço versus tag de rede.--source-ranges
e--source-service-accounts
podem ser usadas juntas. Se ambos forem especificados, o conjunto de origem efetivo será a união dos endereços IP do intervalo de origem e as instâncias identificadas pelas contas de serviço de origem, mesmo que estas instâncias não tenham IPs nos intervalos de origem.
- Omita
- Para uma regra de saída, especifique um destino:
- Omita
--destination-ranges
se o destino de saída for qualquer lugar,0.0.0.0/0
. --destination-ranges
Use esta sinalização para especificar intervalos de endereços IP de destino no formato CIDR.
- Omita
--rules
Uma lista de protocolos e portas de destino a que a regra se aplica. Useall
para tornar a regra aplicável a todos os protocolos e todas as portas. Requer a sinalização--action
.- Por padrão, as regras de firewall são criadas e aplicadas automaticamente. No entanto, é possível mudar esse comportamento.
- Se
--disabled
e--no-disabled
forem omitidos, a regra de firewall será criada e aplicada. --disabled
Adicione este sinalizador para criar a regra de firewall, mas não para aplicá-la. Ela permanecerá desativada até que você atualize a regra de firewall para ativá-la.--no-disabled
Adicione esta sinalização para garantir que a regra de firewall seja aplicada.
- Se
--enable-logging | --no-enable-logging
É possível ativar o registro de regras de firewall ao criar ou atualizar uma regra. O recurso de geração de registros de regras de firewall permite auditar, verificar e analisar os efeitos das suas regras de firewall. Consulte a geração de registros de regras de firewall para mais detalhes.--logging-metadata
Se você ativar a geração de registros, por padrão, a geração de registros de regras de firewall incluirá campos de base e metadados. É possível omitir campos de metadados para economizar custos de armazenamento. Para mais informações, consulte Como usar a geração de registros de regras de firewall.
API
Crie uma regra de firewall.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "FIREWALL_NAME", "network": "projects/PROJECT-ID/global/networks/NETWORK_NAME", ... other fields }
Substitua os marcadores por valores válidos:
PROJECT_ID
é o ID do projeto em que a rede VPC está localizada.NETWORK_NAME
é o nome da rede VPC em que a regra de firewall foi criada.FIREWALL_NAME
é um nome da regra de firewall.Para uma regra de firewall de entrada, use os seguintes campos para especificar a fonte de entrada:
sourceRanges
,sourceTags
ousourceServiceAccounts
. Não especifique nenhum campo para usar o intervalo0.0.0.0/0
. Não é possível usar os campossourceTags
esourceServiceAccounts
juntos. No entanto, é possível usarsourceRanges
comsourceTags
ousourceServiceAccounts
. Se você fizer isso, a conexão precisará corresponder a uma ou outra para que a regra de firewall seja aplicada.Para os campos de destino, se você usar o campo
sourceTags
, não poderá usar o campotargetServiceAccounts
. Você precisa usar o campotargetTags
ou nenhum campo de destino. Da mesma forma, se você usar o camposourceServiceAccounts
, não poderá usar o campotargetTags
. Se você não especificar um campo de destino, a regra será aplicada a todos os destinos na rede.Para uma regra de firewall de saída, use o campo
destinationRanges
para especificar o destino. Se você não especificar um destino, o Google Cloud usará0.0.0.0/0
. Use o campotargetTags
outargetServiceAccounts
para especificar a quais destinos a regra se aplica. Se você não especificar um campo de destino, a regra será aplicada a todos os destinos na rede.
Para mais informações e descrições de cada campo, consulte o método firewalls.insert
.
Como atualizar regras de firewall
É possível modificar alguns componentes de uma regra de firewall, como os protocolos e portas especificados para a condição de correspondência. Não é possível modificar o nome de uma regra de firewall, a rede, a ação, se houver correspondência, e a direção do tráfego.
Se for preciso mudar o nome, a rede ou o componente de ação ou de direção, exclua a regra e crie uma nova.
Console
- Acesse a página "Firewall" no Console do Google Cloud.
Acessar a página "Firewall" - Clique na regra do firewall que você quer modificar.
- Clique em Editar.
Modifique qualquer um dos componentes editáveis para atender às suas necessidades.
No campo Protocolos e portas especificados, use uma lista delimitada por ponto e vírgula para especificar vários protocolos e combinações de protocolo e porta.
Clique em Save.
gcloud
O comando gcloud
para atualizar regras de firewall é:
gcloud compute firewall-rules update NAME \ [--priority=PRIORITY] \ [--description=DESCRIPTION] \ [--target-tags=TAG,...] \ [--target-service-accounts=IAM_SERVICE_ACCOUNT,_] \ [--source-ranges=CIDR_RANGE,...] \ [--source-tags=TAG,...] \ [--source-service-accounts=IAM_SERVICE_ACCOUNT,_] \ [--destination-ranges=CIDR_RANGE,...] \ [--rules=[PROTOCOL[:PORT[-PORT]],…]] \ [--disabled | --no-disabled] \ [--enable-logging | --no-enable-logging]
A descrição de cada sinalização é a mesma usada na criação de regras de firewall. Veja mais detalhes sobre cada uma na documentação de referência do SDK.
API
Use PATCH para atualizar os seguintes campos: allowed
, description
, sourceRanges
, sourceTags
ou targetTags
. Use PUT ou POST para todos os outros campos.
(PATCH|(POST|PUT)) https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/FIREWALL_NAME { "name": "FIREWALL_NAME", "network": "projects/PROJECT-ID/global/networks/NETWORK_NAME", ... other fields }
Substitua os marcadores por valores válidos:
PROJECT_ID
é o ID do projeto em que a rede VPC está localizada.NETWORK_NAME
é o nome da rede VPC em que a regra de firewall está localizada.FIREWALL_NAME
é o nome da regra de firewall a ser atualizada.
Para mais informações e descrições de cada campo, consulte o método firewalls.patch
ou firewalls.update
.
Como listar regras de firewall para uma rede VPC
No Console do Cloud, é possível listar todas as regras de firewall do projeto ou de uma rede VPC específica. Para cada regra de firewall, o Console do Cloud mostra detalhes como o tipo, os destinos e os filtros da regra.
Se a Geração de registros de regras de firewall for ativada, o Firewall Insights poderá fornecer insights sobre suas regras de firewall para ajudar a entender melhor e otimizar com segurança as configurações. Por exemplo, é possível ver quais regras allow
não foram usadas nas últimas seis semanas.
Para mais informações, consulte Como usar a tela de detalhes das regras de firewall na documentação do Firewall Insights.
Console
Para mostrar todas as regras de firewall para todas as redes do seu projeto, faça o seguinte:
- Acesse a página "Firewall" no Console do Google Cloud.
Acessar a página "Firewall"
Para mostrar regras de firewall em uma rede específica, siga estas etapas:
- Acesse a página "Redes VPC" no Console do Google Cloud.
Acessar a página "Redes VPC" - Clique no Nome de uma rede VPC para acessar a respectiva página de detalhes.
- Na página de detalhes da rede, clique na guia Regras de firewall.
gcloud
O comando a seguir produz uma lista classificada de regras de firewall para uma determinada rede ([NETWORK-NAME]
).
gcloud compute firewall-rules list --filter network=NETWORK_NAME \ --sort-by priority \ --format="table( name, network, direction, priority, sourceRanges.list():label=SRC_RANGES, destinationRanges.list():label=DEST_RANGES, allowed[].map().firewall_rule().list():label=ALLOW, denied[].map().firewall_rule().list():label=DENY, sourceTags.list():label=SRC_TAGS, targetTags.list():label=TARGET_TAGS )"
API
Lista todas as regras de firewall de uma determinada rede.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/?filter=network="NETWORK_NAME
Substitua os marcadores por valores válidos:
PROJECT_ID
é o ID do projeto em que a rede VPC está localizada.NETWORK_NAME
é o nome da rede VPC que contém as regras de firewall a serem listadas.
Para mais informações, consulte o
método firewalls.list
.
Como listar regras de firewall para uma interface de rede de uma instância de VM
O Console do Google Cloud lista, para cada interface de rede, todas as regras de firewall que se aplicam à interface e às regras que estão sendo usadas por ela. As regras de firewall podem mascarar outras regras. Assim, nem todas as regras que se aplicam a uma interface são usadas por ela.
As regras de firewall são associadas e aplicadas a uma instância de VM por meio do parâmetro de destino de uma regra. Ao visualizar todas as regras aplicadas, é possível verificar se uma determinada regra é aplicada a uma interface.
Se a Geração de registros de regras de firewall for ativada, o Firewall Insights poderá fornecer insights sobre suas regras de firewall para ajudar a entender melhor e otimizar com segurança as configurações. Por exemplo, é possível ver quais regras em uma interface ocorreram nas últimas seis semanas. Para mais informações, consulte Como usar a tela de detalhes da interface de rede da VM na documentação do Firewall Insights.
Para visualizar todas as regras de firewall que se aplicam a uma interface de rede específica de uma instância de VM, faça o seguinte:
- Acesse a página de instâncias de VMs no Console do Google Cloud e encontre a instância a ser visualizada.
Acessar a página "Instâncias de VM" - No menu mais ações (
) da instância, selecione Ver detalhes da rede.
- Se uma instância tiver várias interfaces de rede, selecione a que você quer exibir na seção Detalhes da interface de rede.
- Clique na guia Regras de firewall para ver todas as regras que se aplicam à interface de rede classificadas por nome da regra.
Nem todas as regras que se aplicam a uma interface de rede são usadas. Algumas podem ser modificadas por regras com um intervalo mais específico ou uma prioridade mais alta. Visualize as regras que estão em uso para verificar rapidamente quais intervalos de IP, protocolos e portas estão abertos ou fechados na instância.
Para visualizar as regras que estão em uso por uma interface de rede específica de uma instância de VM, faça o seguinte:
- Acesse a página de instâncias de VMs no Console do Google Cloud e encontre a instância a ser visualizada.
Acessar a página "Instâncias de VM" - No menu mais ações (
) da instância, selecione Ver detalhes da rede.
- Se uma instância tiver várias interfaces de rede, selecione a que você quer exibir na seção Detalhes da interface de rede.
- Na seção Análise de rede, selecione a guia Análise de entrada ou Análise de saída.
- Visualize a tabela, classificada do intervalo de endereços IP mais específico ao menos específico, para determinar se o tráfego de saída ou entrada de um endereço IP específico é permitido.
Como ver detalhes de regras de firewall
Você pode inspecionar uma regra de firewall para ver o nome, a rede aplicável e os componentes dela, inclusive se a regra está ativada ou desativada.
Console
- Liste suas regras de firewall. É possível ver uma lista de todas as regras ou apenas aquelas em uma rede específica.
- Clique na regra que você quer ver.
gcloud
O comando a seguir descreve uma regra de firewall individual. Substitua [FIREWALL-NAME]
pelo nome da regra de firewall. Como os nomes de regras de firewall são únicos no projeto, não é preciso especificar uma rede ao descrever uma existente.
gcloud compute firewall-rules describe [FIREWALL-NAME]
API
Descreve uma regra de firewall específica.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/FIREWALL_NAME
Substitua os marcadores por valores válidos:
PROJECT_ID
é o ID do projeto em que a regra de firewall está localizada.FIREWALL_NAME
é o nome da regra de firewall a ser descrita.
Para mais informações, consulte o
método firewalls.get
.
Como excluir regras de firewall
Console
- Liste suas regras de firewall. É possível ver uma lista de todas as regras ou apenas aquelas em uma rede específica.
- Clique na regra que você quer excluir.
- Clique em Excluir.
- Clique em Excluir novamente para confirmar.
gcloud
O comando a seguir exclui uma regra de firewall. Substitua [FIREWALL-NAME]
pelo nome da regra a ser excluída.
gcloud compute firewall-rules delete [FIREWALL-NAME]
API
Excluir uma regra de firewall
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/FIREWALL_NAME
Substitua os marcadores por valores válidos:
PROJECT_ID
é o ID do projeto em que a regra de firewall está localizada.FIREWALL_NAME
é o nome da regra de firewall a ser excluída.
Para mais informações, consulte o
método
firewalls.delete
.
Como monitorar regras de firewall
É possível ativar o registro de regras de firewall para ver qual regra permitiu ou bloqueou o tráfego. Consulte Como usar o registro de regras de firewall para ver instruções.
Exemplos de configuração
O diagrama abaixo demonstra um exemplo de configuração de firewall. O cenário envolve um my-network
que contém o seguinte:
- Uma sub-rede
subnet1
com intervalo de IP10.240.10.0/24
- Uma sub-rede
subnet2
com intervalo de IP192.168.1.0/24
- Instância
vm1
emsubnet2
com a tagwebserver
e o IP interno192.168.1.2
- Instância
vm2
emsubnet2
com a tagdatabase
e o IP interno192.168.1.3
Exemplo 1: negar todas as conexões TCP de entrada, exceto as de subnet1
para a porta 80
Este exemplo cria um conjunto de regras de firewall que negam todas as conexões TCP de entrada, exceto as conexões destinadas à porta 80
da subnet1
.
Crie uma regra de firewall para negar todo o tráfego TCP de entrada para instâncias marcadas com
webserver
.gcloud compute firewall-rules create deny-subnet1-webserver-access \ --network NETWORK_NAME \ --action deny \ --direction ingress \ --rules tcp \ --source-ranges 0.0.0.0/0 \ --priority 1000 \ --target-tags webserver
Crie uma regra de firewall para permitir que todos os IPs em
subnet1
(10.240.10.0/24
) acessem a porta TCP80
em instâncias marcadas com a tagwebserver
.gcloud compute firewall-rules create vm1-allow-ingress-tcp-port80-from-subnet1 \ --network NETWORK_NAME \ --action allow \ --direction ingress \ --rules tcp:80 \ --source-ranges 10.240.10.0/24 \ --priority 50 \ --target-tags webserver
Exemplo 2: negar todas as conexões TCP de saída, exceto para a porta 80
da vm1
Crie uma regra de firewall para negar todo o tráfego TCP de saída.
gcloud compute firewall-rules create deny-all-access \ --network NETWORK_NAME \ --action deny \ --direction egress \ --rules tcp \ --destination-ranges 0.0.0.0/0 \ --priority 1000
Crie uma regra de firewall para permitir o tráfego TCP destinado à porta
vm1
80
.gcloud compute firewall-rules create vm1-allow-egress-tcp-port80-to-vm1 \ --network NETWORK_NAME \ --action allow \ --direction egress \ --rules tcp:80 \ --destination-ranges 192.168.1.2/32 \ --priority 60
Exemplo 3: permitir a saída de conexões TCP para a porta 443
de um host externo
Crie uma regra de firewall que permita que instâncias marcadas com webserver
enviem o tráfego TCP de saída para a porta 443
de um endereço IP externo de amostra, 192.0.2.5
.
gcloud compute firewall-rules create vm1-allow-egress-tcp-port443-to-192-0-2-5 \ --network NETWORK_NAME \ --action allow \ --direction egress \ --rules tcp:443 \ --destination-ranges 192.0.2.5/32 \ --priority 70 \ --target-tags webserver
Exemplo 4: permitir conexões SSH de vm2
para vm1
Crie uma regra de firewall que permita o tráfego SSH de instâncias com a tag database
(vm2
) para chegar a instâncias com a tag webserver
(vm1
).
gcloud compute firewall-rules create vm1-allow-ingress-tcp-ssh-from-vm2 \ --network NETWORK_NAME \ --action allow \ --direction ingress \ --rules tcp:22 \ --source-tags database \ --priority 80 \ --target-tags webserver
Exemplo 5: permitir TCP:1443 do servidor web ao banco de dados usando as contas de serviço
Para mais informações sobre contas de serviço e papéis, consulte Como conceder papéis a contas de serviço.
Considere o cenário no diagrama abaixo, no qual há dois aplicativos com escalonamento automático feito por meio de modelos, um aplicativo de servidor da Web my-sa-web
e um aplicativo de banco de dados "my-sa-db". Um administrador de segurança quer permitir que
os fluxos TCP acessem a porta 1443
de my-sa-web
para my-sa-db
.
As etapas de configuração, incluindo a criação de contas de serviço, são as seguintes:
Um projeto EDITOR ou PROPRIETÁRIO do projeto cria as contas de serviço
my-sa-web
emy-sa-db
.gcloud iam service-accounts create my-sa-web \ --display-name "webserver service account"
gcloud iam service-accounts create my-sa-db \ --display-name "database service account"
Um PROPRIETÁRIO do projeto atribui ao desenvolvedor do servidor da Web
web-dev@example.com
um papel serviceAccountUser para a conta de serviçomy-sa-web
definindo uma política de gerenciamento de identidade e acesso (IAM, na sigla em inglês).gcloud iam service-accounts add-iam-policy-binding \ my-sa-web@my-project.iam.gserviceaccount.com \ --member='user:web-dev@example.com' \ --role='roles/iam.serviceAccountUser'
Um PROPRIETÁRIO do projeto atribui ao desenvolvedor do banco de dados "db-dev@exemplo.com" um papel serviceAccountUser para a conta de serviço
my-sa-db
definindo uma política do IAM.gcloud iam service-accounts add-iam-policy-binding \ my-sa-db@my-project.iam.gserviceaccount.com \ --member='user:db-dev@example.com' \ --role='roles/iam.serviceAccountUser'
O desenvolvedor
web-dev@example.com
, que tem o papel de administrador da instância, cria um modelo de instância de servidor da Web e autoriza a execução das instâncias como conta de serviçomy-sa-web
.gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \ --service-account my-sa-web@my-project-123.iam.gserviceaccount.com
O desenvolvedor
db-dev@example.com
, que tem o papel de administrador de instância, cria o modelo de instância do banco de dados e autoriza a execução das instâncias como conta de serviçomy-sa-db
.gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \ --service-account my-sa-db@my-project-123.iam.gserviceaccount.com
O administrador de segurança cria as regras de firewall usando contas de serviço para permitir o tráfego
TCP:1443
da conta de serviçomy-sa-web
para a conta de serviçomy-sa-db
.gcloud compute firewall-rules create FIREWALL_NAME \ --network network_a \ --allow TCP:1443 \ --source-service-accounts my-sa-web@my-project.iam.gserviceaccount.com \ --target-service-accounts my-sa-db@my-project.iam.gserviceaccount.com
Solução de problemas
Mensagens de erro ao criar ou atualizar uma regra de firewall
Pode aparecer uma das seguintes mensagens de erro:
Should not specify destination range for ingress direction.
Os intervalos de destino não são parâmetros válidos para regras de firewall de entrada. Presume-se que as regras de firewall sejam regras de entrada, a menos que a direção de
egress
seja expressamente especificada. Se você criar uma regra que não especifique uma direção, ela será criada como uma regra de entrada, que não permite um intervalo de destino. Além disso, os intervalos de origem não são parâmetros válidos para as regras de saída.Firewall direction cannot be changed once created.
Não é possível mudar a direção de uma regra de firewall existente. Crie uma nova regra com os parâmetros corretos e exclua a antiga.
Firewall traffic control action cannot be changed once created.
Não é possível alterar a ação de uma regra de firewall existente. Crie uma nova regra com os parâmetros corretos e exclua a antiga.
Service accounts must be valid RFC 822 email addresses.
A conta de serviço especificada na regra de firewall precisa ser um endereço de e-mail formatado conforme a norma RFC 822.gcloud compute firewall-rules create bad --allow tcp --source-service-accounts invalid-email
Creating firewall...failed. ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: – Invalid value for field 'resource.sourceServiceAccounts[0]': 'invalid-email'. Service accounts must be valid RFC 822 email addresses.
ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule.
Não é possível especificar contas de serviço e tags na mesma regra.gcloud compute firewall-rules create bad --allow tcp --source-service-accounts test@google.com --target-tags target
Creating firewall...failed. ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: – ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule.
Não é possível conectar-se à instância de VM
Para se conectar a uma instância de VM, verifique suas regras de firewall.
Para iniciar a conexão de outra instância de VM, liste as regras de firewall de saída para essa instância.
gcloud compute firewall-rules list --filter network=[NETWORK-NAME] \ --filter EGRESS \ --sort-by priority \ --format="table( name, network, direction, priority, sourceRanges.list():label=SRC_RANGES, destinationRanges.list():label=DEST_RANGES, allowed[].map().firewall_rule().list():label=ALLOW, denied[].map().firewall_rule().list():label=DENY, sourceTags.list():label=SRC_TAGS, sourceServiceAccounts.list():label=SRC_SVC_ACCT, targetTags.list():label=TARGET_TAGS, targetServiceAccounts.list():label=TARGET_SVC_ACCT )"
Verifique se o IP de destino é negado por alguma regra de saída. A regra com a prioridade mais alta (número de prioridade mais baixa) substitui regras de prioridade mais baixa. Para duas regras com a mesma prioridade, opta-se pela regra de negação.
Verifique a regra de firewall de entrada para a rede que contém a instância de VM de destino.
gcloud compute firewall-rules list --filter network=[NETWORK-NAME] \ --filter INGRESS \ --sort-by priority \ --format="table( name, network, direction, priority, sourceRanges.list():label=SRC_RANGES, destinationRanges.list():label=DEST_RANGES, allowed[].map().firewall_rule().list():label=ALLOW, denied[].map().firewall_rule().list():label=DENY, sourceTags.list():label=SRC_TAGS, sourceServiceAccounts.list():label=SRC_SVC_ACCT, targetTags.list():label=TARGET_TAGS, targetServiceAccounts.list():label=TARGET_SVC_ACCT )"
Exemplo de saída. A saída dependerá da lista de regras de firewall.
NAME NETWORK DIRECTION PRIORITY SRC_RANGES DEST_RANGES ALLOW DENY SRC_TAGS SRC_SVC_ACCT TARGET_TAGS TARGET_SVC_ACCT default-allow-icmp default INGRESS 65534 0.0.0.0/0 icmp default-allow-internal default INGRESS 65534 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp default-allow-rdp default INGRESS 65534 0.0.0.0/0 tcp:3389 default-allow-ssh default INGRESS 65534 0.0.0.0/0 tcp:22 firewall-with-sa default INGRESS 1000 tcp:10000 test1@google.com target@google.com
Também é possível executar testes de conectividade de/para instâncias de VM em uma rede VPC para outra rede VPC ou rede de nuvem que não seja do Google para solucionar problemas se o tráfego estiver sendo descartado por qualquer regra de firewall de entrada ou saída. Para saber mais sobre como executar os testes de conectividade para solucionar problemas em vários casos, veja Como executar Testes de conectividade
Minha regra de firewall está ativada ou desativada?
Para ver se uma regra de firewall está ativada ou desativada, visualize os detalhes das regras de firewall.
No
Console do Google Cloud
,
procure Enabled
ou Disabled
em
Aplicação.
Na saída da ferramenta da linha de comando gcloud
, procure o campo disabled
.
Se o valor é disabled:false
, a regra está ativada e sendo aplicada. Se o valor é disabled: true
, a regra está desativada.
Qual regra é aplicada em uma instância de VM?
Imagine que você inclua uma nova regra de firewall em uma rede VPC que permite o tráfego para um servidor de banco de dados em 10.1.2.3
via tcp:1433
. Depois da criação dessa regra, é possível verificar se ela está sendo aplicada corretamente em uma instância específica.
Para mais informações, consulte Como listar regras de firewall para uma interface de rede de uma instância de VM.
No exemplo a seguir, o console lista as regras de database-access
na guia
Análise de saída para essa instância de VM, o que significa que o tráfego de
saída 10.1.2.3
para a porta 1433
é permitido. Outro tráfego de saída no
intervalo 10.1.0.0/16
está bloqueado devido à regra de firewall deny-database-subnet
.

As regras de firewall com tags de origem não são aplicadas imediatamente
As regras de firewall de entrada que usam tags de origem podem levar algum tempo para serem propagadas. Para mais detalhes, consulte considerações relacionadas a tags de origem para regras de firewall de entrada.
A seguir
- Consulte Visão geral das regras de firewall para uma introdução sobre elas.