Nesta página, mostramos como aplicar seletivamente as políticas de firewall de rede do Cloud Next Generation Firewall no Google Kubernetes Engine (GKE) usando tags. Para saber como usar tags no GKE para outras finalidades, como gerenciamento de faturamento ou políticas condicionais do IAM, consulte Gerenciar recursos do GKE usando tags.
Sobre as tags
As tags são pares de chave-valor que permitem anotar e gerenciar os recursos do Google Cloud no nível da organização ou do projeto. Use tags para organizar os recursos e aplicar condicionalmente políticas, como firewalls ou políticas do IAM. Use o controle de acesso do IAM para definir quem pode anexar, criar, atualizar ou excluir tags.
Para saber mais sobre tags, consulte a Visão geral das tags na documentação do Resource Manager.
Usar tags para aplicar políticas de firewall de rede
É possível usar tags para aplicar condicionalmente políticas de firewall de rede globais ou regionais aos nós do GKE. É necessário designar a finalidade GCE_FIREWALL
para as tags que você quer usar com as políticas de firewall de rede. Quando você aplica tags de finalidade de firewall
a clusters ou pools de nós do GKE, o GKE anexa automaticamente
essas tags às máquinas virtuais (VMs) correspondentes
do Compute Engine.
As tags para políticas de firewall de rede substituem a necessidade de usar tags de rede , que são metadados que qualquer pessoa pode anexar às VMs subjacentes do Compute Engine para aplicação de regras de firewall da nuvem privada virtual e que não são compatíveis com o controle de acesso do IAM. Se você usa tags de rede com regras de firewall de VPC, recomendamos migrar para políticas de firewall de rede e usar tags de firewall seguras. Para uma comparação detalhada, consulte Comparar tags de rede com tags neste documento.
Tags para o fluxo de trabalho das políticas de firewall de rede
Para usar tags com políticas de firewall de rede no GKE, faça o seguinte:
Criar uma tag:
- Defina uma chave de tag no nível da organização ou do projeto,
como
env
. - Defina os possíveis valores de tag para a chave, como
dev
,staging
eprod
. Designar a tag para uso da política de firewall de rede.
- Defina uma chave de tag no nível da organização ou do projeto,
como
Conceda aos usuários acesso para interagir com a tag de firewall.
Aplique pares de chave-valor de tag a clusters ou pools de nós específicos do GKE. O GKE anexa automaticamente as tags às VMs do Compute Engine de base para a aplicação da política de firewall.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Requisitos e limitações
- As tags para políticas de firewall de rede são compatíveis com a versão 1.28 e posteriores do GKE. Se você usar uma versão do GKE anterior à 1.28, use tags de rede com regras de firewall da VPC.
- O cluster do GKE e a tag precisam estar associados à mesma rede VPC.
- Nos clusters padrão, cada pool de nós aceita até cinco tags de firewall anexadas.
- Os clusters do Autopilot dão suporte a até cinco tags de firewall.
- O GKE rejeita chaves de tags que usam o prefixo
gke-managed
. - É necessário criar os pares de chave-valor da tag antes de anexá-los a clusters ou pools de nós.
Permissões e papéis do IAM
Para ter as permissões necessárias para usar tags para políticas de firewall no GKE, peça ao seu administrador para conceder a você os seguintes papéis do IAM:
-
Para conceder as permissões necessárias para tags a usuários e agentes de serviço do GKE, faça o seguinte:
-
Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
) no projeto -
Administrador da organização (
roles/resourcemanager.organizationAdmin
) na organização
-
Administrador do IAM do projeto (
-
Para criar e administrar tags:
Administrador de tags (
roles/resourcemanager.tagAdmin
) na organização ou no projeto -
Para anexar tags a recursos:
Usuário da tag (
roles/resourcemanager.tagUser
) no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar tags
Elas precisam existir para que você possa anexá-las a clusters ou nós. Para criar uma tag, consulte Usar tags para firewalls na documentação do Cloud NGFW.
Por exemplo, para criar uma tag de firewall com escopo do projeto, execute os seguintes comandos:
Crie a chave da tag:
gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=PROJECT_ID/NETWORK_NAME
Substitua:
TAG_KEY
: o nome da chave da tag, comoenv
PROJECT_ID
: o ID do projeto do Google CloudNETWORK_NAME
: o nome da rede VPC que você vai usar com a tag
Consiga o ID da chave de tag:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
A saída é
tagKeys/KEY_ID
, em queKEY_ID
é um ID numérico da chave. Anote esse ID para mais tarde.Adicione um valor de tag à chave:
gcloud resource-manager tags values create TAG_VALUE \ --parent=tagKeys/KEY_ID
Substitua
TAG_VALUE
pelo nome de um valor permitido para essa chave de tag, comodev
.
Sintaxe de tag nos comandos da CLI gcloud
Ao se referir a tags usando a CLI gcloud, formate os pares de chave-valor usando uma das seguintes sintaxes:
Sintaxe de tag | |
---|---|
tagKeys/KEY_ID=tagValues/VALUE_ID |
Substitua:
Por exemplo, |
ORGANIZATION_ID/TAG_KEY=TAG_VALUE |
Substitua:
Por exemplo, |
PROJECT_ID/TAG_KEY=TAG_VALUE |
Substitua:
Por exemplo, |
PROJECT_NUMBER/TAG_KEY=TAG_VALUE |
Substitua:
Por exemplo, |
Tags de destino com políticas de firewall
Após a criação das tags, é possível consultar pares específicos de chave-valor nas regras das políticas de firewall. Veja instruções em Usar tags para firewalls.
Conceder permissões do IAM a agentes de serviço
Para que o GKE anexe tags automaticamente a novos nós durante eventos de escalonamento vertical, conceda os papéis do IAM correspondentes às contas de serviço gerenciadas pelo Google Cloud, também chamados de agentes de serviço.
Conceda o papel de usuário da tag (
roles/resourcemanager.tagUser
) ao agente de serviço do Kubernetes Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Substitua
PROJECT_NUMBER
pelo número do projeto do Google Cloud do cluster. Para encontrar o número do projeto, execute o seguinte comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Conceda o papel de administrador de retenção de tags (
roles/resourcemanager.tagHoldAdmin
) ao agente de serviço do Kubernetes Engine para o par de chave-valor da tag:gcloud resource-manager tags values add-iam-policy-binding PROJECT_ID/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Esse papel permite que o agente de serviço impeça a exclusão de tags se o par de chave-valor ainda estiver em uso no GKE.
Conceda o papel de usuário da tag (
roles/resourcemanager.tagUser
) ao agente de serviço das APIs do Google:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Conceder outros papéis do IAM a tags fora do projeto
Para usar tags de propriedade de uma organização ou de um projeto diferente do projeto do cluster, siga estas outras etapas:
Conceda o papel de usuário da tag (
roles/resourcemanager.tagUser
) ao agente de serviço do Kubernetes Engine o acesso às tags no recurso pai:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Substitua:
PARENT_RESOURCE
: o ID do projeto ou o ID da organização do recurso proprietário dessa tagPROJECT_NUMBER
: o número do projeto do cluster.
Conceda o papel de usuário da tag (
roles/resourcemanager.tagUser
) ao agente de serviço das APIs do Google para as tags no recurso pai:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Conceda o papel de Administrador de retenções de tag (
roles/resourcemanager.tagHoldAdmin
) ao agente de serviço do Kubernetes Engine para o par de chave-valor da tag:gcloud resource-manager tags values add-iam-policy-binding PARENT_RESOURCE/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Anexar tags de firewall a clusters do Autopilot
Anexe tags de firewall a clusters do Autopilot no nível do cluster. O GKE aplica automaticamente essas tags no nível do cluster a cada nó.
Anexar tags ao criar um cluster do Autopilot
Execute este comando:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Substitua:
CLUSTER_NAME
: o nome do novo cluster.LOCATION
: a região do Compute Engine do cluster.TAG1,TAG2,...
: um conjunto separado por vírgulas de pares de chave-valor a ser anexado. Cada par de chave-valor precisa usar uma sintaxe compatível, conforme descrito na seção Sintaxe de tag nos comandos. Por exemplo,example-project/env=dev,1234567901/team=sre
.
Anexar tags a clusters do Autopilot atuais
Execute este comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Quando você atualiza as tags em um cluster, o GKE substitui todas as tags existentes em todos os nós.
Anexar tags de firewall a clusters e pools de nós padrão
O método usado para anexar tags depende se você quer que outros pools de nós no cluster herdem as tags, da seguinte maneira:
Tags de firewall de cluster padrão | |
---|---|
--autoprovisioning-resource-manager-tags |
Configuração no nível do cluster O GKE aplica as tags a todos os novos pools de nós provisionados automaticamente no cluster. Se você usar essa sinalização em um cluster atual, os pools de nós atuais manterão as tags que foram aplicadas antes da atualização. |
--resource-manager-tags |
Configuração no nível do pool de nós O GKE aplica as tags ao pool de nós especificado. Se você usar essa sinalização durante a criação do cluster, o GKE aplicará as tags ao pool de nós padrão criado pelo GKE. Se você usar essa sinalização em um pool de nós provisionado automaticamente, o GKE substituirá todas as tags existentes no pool. |
Anexar tags de firewall a clusters padrão
É possível anexar tags a clusters padrão novos ou atuais. Quando você anexa tags a um cluster inteiro, o GKE considera que elas estão definidas no nível do cluster.
Anexar tags a um novo cluster padrão com provisionamento automático de nós
O GKE usa tags no nível do cluster para novos nós provisionados automaticamente por padrão. O pool de nós padrão criado pelo GKE no cluster não é provisionado automaticamente e não recebe essas tags.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,... \
--enable-autoprovisioning \
--max-cpu=MAX_CPU \
--max-memory=MAX_MEMORY
Substitua:
CLUSTER_NAME
: o nome do novo cluster.LOCATION
: a região ou zona do Compute Engine para o novo cluster.TAG1,TAG2,...
: um conjunto separado por vírgulas de pares de chave-valor a ser anexado. Cada par de chave-valor precisa usar uma sintaxe compatível, conforme descrito na seção Sintaxe de tag nos comandos. Por exemplo,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: o número máximo de núcleos para o clusterMAX_MEMORY
: a capacidade máxima de memória do cluster em gigabytes.
Anexe tags ao ativar o provisionamento automático de nós em um cluster atual
O GKE só aplica essas tags aos novos pools de nós provisionados automaticamente. Os pools de nós atuais mantêm todas as tags que tinham antes da atualização.
Anexe tags ao cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Ative o provisionamento automático de nós no cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --enable-autoprovisioning \ --max-cpu=MAX_CPU \ --max-memory=MAX_MEMORY
Anexar tags de firewall a pools de nós
É possível anexar tags a pools de nós novos ou atuais, independentemente de usarem o provisionamento automático de nós. O GKE considera essas tags como uma configuração no nível do pool de nós.
Anexar tags ao pool de nós padrão
O GKE anexa as tags especificadas usando a
flag --resource-manager-tags
quando você cria um cluster
para o pool de nós padrão criado pelo GKE no cluster.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Substitua:
CLUSTER_NAME
: o nome do novo cluster.LOCATION
: a região ou zona do Compute Engine para o novo cluster.TAG1,TAG2,...
: um conjunto separado por vírgulas de pares de chave-valor a ser anexado. Cada par de chave-valor precisa usar uma sintaxe compatível, conforme descrito na seção Sintaxe de tag nos comandos. Por exemplo,example-project/env=dev,1234567901/team=sre
.
Anexar tags a um novo pool de nós
Quando você usa a sinalização --resource-manager-tags
durante a criação do pool de nós, o GKE anexa as tags especificadas a esse pool.
gcloud beta container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Substitua:
NODE_POOL_NAME
: o nome do novo pool de nós.CLUSTER_NAME
: o nome do cluster.LOCATION
: a região ou zona do Compute Engine do cluster.TAG1,TAG2,...
: um conjunto separado por vírgulas de pares de chave-valor a ser anexado. Cada par de chave-valor precisa usar uma sintaxe compatível, conforme descrito na seção Sintaxe de tag nos comandos. Por exemplo,example-project/env=dev,1234567901/team=sre
.
Anexar tags a um pool de nós atual
Quando você atualiza as tags em um pool de nós atual usando a sinalização --resource-manager-tags
, o GKE substitui todas as tags nesse pool de nós. Use esse comando para atualizar as tags em pools de nós provisionados automaticamente.
gcloud beta container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Substitua NODE_POOL_NAME
pelo nome do pool de nós a ser
atualizado.
Alternar as configurações de provisionamento automático nos clusters e pools de nós atuais
Quando você atualiza as tags no nível do cluster, o GKE aplica essas novas tags a todos os novos pools de nós no cluster e retém as tags que foram anexadas aos pools de nós atuais.
Ao atualizar os pools de nós atuais para ativar ou desativar o provisionamento automático de nós, considere as seguintes implicações para as tags:
- Quando você ativa ou desativa o provisionamento automático de nós, o pool de nós mantém as tags atuais. O GKE não substitui essas tags por outras no nível do cluster, mesmo durante a recriação dos nós.
- Se você atualizar manualmente as tags em pools de nós específicos, o GKE substituirá as tags atuais pelas tags especificadas para esse pool de nós.
Verifique as tags de firewall no cluster
Liste as tags nos clusters do Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Liste as tags em pools de nós específicos:
gcloud beta container node-pools describe NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format="value(config.resourceManagerTags)"
Remover tags de firewall de clusters e pools de nós
Para remover tags de firewall de clusters e pools de nós, atualize o recurso com um valor vazio para as tags.
Remover tags dos clusters do Autopilot
Execute este comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Remover tags de pools de nós
Remova as tags de provisionamento automático de nós no nível do cluster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=
O GKE não anexará tags a novos pools de nós provisionados automaticamente.
Remova as tags do pool de nós:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
O GKE remove as tags atuais desse pool de nós.
Excluir chaves e valores de tags
Para excluir uma chave ou um valor de tag, verifique se ela está removida de todos os recursos. Depois, consulte Como excluir tags na documentação do Resource Manager.
Comparar tags de rede com tags
O uso de tags para aplicação da política de firewall oferece benefícios significativos de segurança e usabilidade em comparação com as tags de rede. Da mesma forma, as políticas de firewall de rede melhoram os recursos das regras de firewall da VPC, facilitando a aplicação delas em organizações inteiras, pastas, projetos ou redes.
O uso de tags com políticas de firewall de rede é uma maneira mais segura e escalonável de gerenciar o acesso aos ambientes do GKE em toda a organização. É possível usar tags de rede no mesmo cluster que as tags, mas não para aplicar políticas de firewall de rede.
Para uma comparação detalhada entre tags e tags de rede, consulte Comparação entre tags e tags de rede na documentação do Cloud NGFW.
Diferenças funcionais nos pools de nós provisionados automaticamente
Nos clusters do Autopilot e em pools de nós padrão que não usam provisionamento automático de nós, as tags e as tags de rede exibem um comportamento semelhante. A tabela a seguir mostra as diferenças funcionais entre tags de rede e tags nos pools de nós provisionados automaticamente em clusters padrão:
Ação | Comportamento das tags de rede | Comportamento das tags |
---|---|---|
O GKE faz o provisionamento automático de um pool de nós | O GKE aplica as tags de rede no nível do cluster | o GKE aplica as tags no nível do cluster |
Você atualiza tags ou tags de rede em um pool de nós provisionado automaticamente |
|
O GKE substitui as tags atuais do pool de nós, independentemente da existência de tags no nível do cluster |
Você atualiza tags ou tags de rede para todo o cluster | O GKE substitui as tags de rede dos pools de nós novos e atuais provisionados automaticamente no cluster. | O GKE aplica as novas tags no nível do cluster aos novos pools de nós provisionados automaticamente. Os pools de nós com provisionamento automático mantêm as tags de antes da atualização. |
A seguir
- Use tags para rastreamento de uso e aplicação da política do IAM
- Saiba mais sobre tags para firewalls
- Saiba mais sobre as Tag