Configurar o VPC Service Controls

Cloud Composer 1 | Cloud Composer 2

O VPC Service Controls permite que as organizações definam um perímetro em torno dos recursos do Google Cloud para reduzir os riscos de exfiltração de dados.

Os ambientes do Cloud Composer podem ser implantados dentro de um perímetro de serviço. Ao configurar seu ambiente com o VPC Service Controls, é possível manter os dados confidenciais em sigilo enquanto aproveita os recursos de orquestração de fluxo de trabalho totalmente gerenciados do Cloud Composer.

A compatibilidade do VPC Service Controls com o Cloud Composer significa que:

  • O Cloud Composer agora pode ser selecionado como um serviço seguro dentro de um perímetro do VPC Service Controls.
  • Todos os recursos subjacentes usados pelo Cloud Composer estão configurados para serem compatíveis com a arquitetura do VPC Service Controls e seguem as regras dela.

A implantação dos ambientes do Cloud Composer com o VPC Service Controls oferece:

  • Risco reduzido de exfiltração de dados.
  • Proteção contra exposição de dados devido a controles de acesso configurados incorretamente.
  • Risco reduzido de usuários mal-intencionados copiando dados para recursos não autorizados do Google Cloud ou invasores externos acessando recursos do Google Cloud pela Internet.

Servidor da Web do Airflow no modo VPC Service Controls

No modo VPC Service Controls, o Cloud Composer executa duas instâncias do servidor da Web do Airflow. A carga do Identity-Aware Proxy equilibra o tráfego do usuário entre essas instâncias. Os servidores da Web do Airflow são executados no modo "somente leitura", o que significa:

  • A serialização do DAG está ativada. Como resultado, o servidor da Web do Airflow não analisa arquivos de definição do DAG.

  • Os plug-ins não são sincronizados com o servidor da Web. Portanto, não é possível modificar ou ampliar a funcionalidade do servidor da Web com plug-ins.

  • O servidor da Web do Airflow usa uma imagem de contêiner pré-criada pelo serviço do Cloud Composer. Se você instalar imagens PyPI no ambiente, elas não serão instaladas na imagem do contêiner do servidor da Web.

Como criar um perímetro de serviço

Consulte Como criar um perímetro de serviço para saber como criar e configurar perímetros de serviço. Selecione o Cloud Composer como um dos serviços protegidos dentro do perímetro.

Como criar ambientes em um perímetro

Há algumas etapas adicionais necessárias para implantar o Cloud Composer em um perímetro. Ao criar o ambiente do Cloud Composer:

  1. Ative a API Access Context Manager e a API do Cloud Composer no projeto. Consulte Como ativar APIs para referência.

  2. Verifique se o perímetro de serviço tem os seguintes serviços acessíveis por VPC. Caso contrário, pode haver uma falha na criação do ambiente:

    • API Cloud Composer (composer.googleapis.com)
    • API Compute Engine (compute.googleapis.com)
    • API Kubernetes Engine (container.googleapis.com)
    • API Container Registry (containerregistry.googleapis.com)
    • API Artifact Registry (artifactregistry.googleapis.com)
    • API Cloud Storage (storage.googleapis.com)
    • API Cloud SQL Admin (sqladmin.googleapis.com)
    • API Cloud Build (cloudbuild.googleapis.com)
    • API Cloud Logging (logging.googleapis.com)
    • API Cloud Monitoring (monitoring.googleapis.com)
    • API Cloud Pub/Sub (pubsub.googleapis.com)
    • API Cloud Resource Manager (cloudresourcemanager.googleapis.com)
    • API Service Directory (servicedirectory.googleapis.com)
    • API Cloud Key Management Service (cloudkms.googleapis.com), se estiver usando chaves do Cloud KMS ou CMEK
    • API Secret Manager (secretmanager.googleapis.com), se você estiver usando o Secret Manager como um back-end secret
  3. Use a versão composer-1.10.4 ou posterior.

  4. Verifique se a serialização de DAGs está ativada. Se o ambiente usar o Cloud Composer versão 1.15.0 e posterior, a serialização será ativada por padrão.

  5. Crie um novo ambiente do Cloud Composer com o IP particular ativado. Observe que esta configuração precisa ser definida durante a criação do ambiente.

  6. Ao criar seu ambiente, lembre-se de configurar o acesso ao servidor da Web do Airflow. Para proteção máxima, permita o acesso ao servidor da Web somente a partir de intervalos de IP específicos. Saiba mais em Configurar o acesso à rede do servidor da Web.

Como configurar ambientes atuais com o VPC Service Controls

É possível adicionar o projeto que contém seu ambiente ao perímetro se:

Como instalar pacotes PyPI

Na configuração padrão do VPC Service Controls, o Cloud Composer é compatível apenas com a instalação de pacotes PyPI de repositórios particulares acessíveis do espaço de endereço IP particular da rede VPC. A configuração recomendada para esse processo é definir um repositório PyPI particular, preenchê-lo com pacotes verificados usados pela organização e depois configurar o Cloud Composer para instalar dependências do Python a partir de um repositório particular.

Também é possível instalar pacotes PyPI a partir de repositórios fora do espaço IP particular. Siga estas etapas:

  1. Configure o Cloud NAT para permitir que o Cloud Composer em execução no espaço de IP particular se conecte a repositórios PyPI externos.
  2. Configure as regras de firewall para permitir conexões de saída do cluster do Composer para o repositório.

Ao usar esta configuração, entenda os riscos de usar repositórios externos. Certifique-se de confiar no conteúdo e na integridade de qualquer repositório externo, já que essas conexões podem ser usadas como um vetor de exfiltração.

Configurar a conectividade com as APIs e os serviços do Google

Em uma configuração do VPC Service Controls, para controlar o tráfego de rede, defina o acesso a APIs e serviços do Google por meio do restricted.googleapis.com. Esse domínio bloqueia o acesso a APIs e serviços do Google que não são compatíveis com o VPC Service Controls.

Os ambientes do Cloud Composer usam os seguintes domínios:

  • *.googleapis.com é usado para acessar outros Serviços do Google.

  • *.pkg.dev é usado para receber imagens do ambiente, por exemplo, ao criar ou atualizar um ambiente.

  • *.gcr.io O GKE requer conectividade com o domínio do Container Registry, seja qual for a versão do Cloud Composer.

Configure a conectividade com o endpoint restricted.googleapis.com:

Domínio Nome do DNS Registro CNAME Registro A
*.googleapis.com googleapis.com. Nome do DNS: *.googleapis.com.
Tipo de registro de recurso: CNAME
Nome canônico: googleapis.com.
Tipo de registro de recurso: A
Endereços IPv4: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.pkg.dev pkg.dev. Nome do DNS: *.pkg.dev.
Tipo de registro de recurso: CNAME
Nome canônico: pkg.dev.
Tipo de registro de recurso: A
Endereços IPv4: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.gcr.io gcr.io. Nome do DNS: *.gcr.io.
Tipo de registro de recurso: CNAME
Nome canônico: gcr.io.
Tipo de registro de recurso: A
Endereços IPv4: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

Para criar uma regra de DNS:

  1. Crie uma nova zona de DNS e use o nome do DNS como o nome dessa zona.

    Exemplo: pkg.dev.

  2. Adicione um conjunto de registros para o registro CNAME.

    Exemplo:

    • Nome do DNS: *.pkg.dev.
    • Tipo de registro de recurso: CNAME
    • Nome canônico: pkg.dev.
  3. Adicione um conjunto de registros para Registro A:

    Exemplo:

    • Tipo de registro de recurso: A
    • Endereços IPv4: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

Para mais informações, consulte Como configurar a conectividade particular com APIs e serviços do Google.

Configurar regras de firewall

Se o projeto tiver regras de firewall não padrão, como regras que substituem regras implícitas ou modificam regras pré-preenchidas na rede padrão, verifique se as regras de firewall a seguir estão configuradas.

Por exemplo, o Cloud Composer pode não criar um ambiente se você tiver uma regra de firewall que negue todo o tráfego de saída. Para evitar problemas, defina regras allow seletivas que sigam a lista e tenham prioridade mais alta do que a regra deny global.

Configure a rede VPC para permitir o tráfego do seu ambiente:

Descrição Direção Ação Origem ou destino Protocolos Portas
DNS

Configure conforme descrito em Suporte do VPC Service Controls para o Cloud DNS
- - - - -
APIs e serviços do Google Saída Permitir Endereços IPv4 de restricted.googleapis.com que você usa para APIs e serviços do Google. TCP 443
Nós do cluster do ambiente Saída Permitir Intervalo de endereços IP principal da sub-rede do ambiente TCP, UDP todas
Pods do cluster do ambiente Saída Permitir Intervalo de endereços IP secundário para pods na sub-rede do ambiente TCP, UDP todas
Plano de controle do cluster do ambiente Saída Permitir Intervalo de IP do plano de controle do GKE TCP, UDP todas
Servidor da Web Saída Permitir Intervalo de IP da rede do servidor da Web TCP 3306, 3307

Para acessar intervalos de IP:

  • Os intervalos de endereços de pods, serviços e planos de controle estão disponíveis na página Clusters do cluster do ambiente:

    1. No console do Google Cloud, acesse a página Ambientes.

      Acessar "Ambientes"

    2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

    3. Acesse a guia Configuração do ambiente.

    4. Siga o link Ver detalhes do cluster.

  • Veja o intervalo de IP do servidor da Web do ambiente na guia Configuração do ambiente.

  • Você encontra o ID da rede do ambiente na guia Configuração do ambiente. Para ver os intervalos de IP de uma sub-rede, acesse a página Redes VPC e clique no nome da rede para ver detalhes:

    Acessar redes VPC

Registros do VPC Service Controls

Ao solucionar problemas de criação do ambiente, analise os registros de auditoria gerados pelo VPC Service Controls.

Além de outras mensagens de registro, é possível verificar registros para informações sobre as contas de serviço cloud-airflow-prod@system.gserviceaccount.com e service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com que configuram componentes dos seus ambientes.

O serviço do Cloud Composer usa a conta de serviço cloud-airflow-prod@system.gserviceaccount.com para gerenciar componentes de projetos de locatário dos seus ambientes.

A conta de serviço service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com, também conhecida como Composer Service Agent Service Account, gerencia componentes do ambiente em projetos de serviço e host.

Limitações

  • A exibição de um modelo renderizado com funções na IU da Web com a serialização de DAGs ativada é compatível com ambientes que executam o Cloud Composer versão 1.12.0 ou posterior e o Airflow versão 1.10.9 ou posterior.

  • A definição da sinalização async_dagbag_loader como True não é compatível enquanto a serialização do DAG está ativada.

  • A ativação da serialização de DAGs desativa todos os plug-ins do servidor da Web do Airflow, porque eles podem prejudicar a segurança da rede VPC em que o Cloud Composer está implantado. Isso não afeta o comportamento dos plug-ins do programador ou do worker, incluindo operadores do Airflow, sensores etc.

  • Quando o Cloud Composer está sendo executado dentro de um perímetro, o acesso a repositórios PyPI públicos é restrito. Consulte Como instalar dependências do Python para aprender a instalar módulos do PyPI no modo de IP particular.