Limite a saída de rede do seu espaço de trabalho usando um firewall

Por default O Google cloud permite todo o tráfego de saída do seu VPC. Opcionalmente, o senhor pode optar por configurar o site workspace para limitar o egresso apenas aos serviços e destinos essenciais que sua organização exige. Para permitir o serviço essencial, o senhor precisa modificar a rede do Google cloud (VPC) e o firewall que o Databricks cria para o seu workspace. Para alguns serviços, o senhor pode configurar o Private Google Access para se comunicar com o Google APIs por meio de endereços IP privados.

Para obter as últimas atualizações sobre o funcionamento desses recursos do Google cloud, consulte a documentação do Google cloud .

Se você quiser configurar um firewall de nome de domínio corporativo para se conectar ao aplicativo Web Databricks, consulte Configurar regras de firewall de nome de domínio.

Para obter uma visão geral da arquitetura Databricks, incluindo as definições do plano clássico compute e do plano de controle, consulte a visão geral da arquiteturaDatabricks .

Visão geral da configuração do firewall

Se quiser limitar a saída do plano clássico compute, o senhor deve fazer dois tipos gerais de configuração para permitir as conexões necessárias que, de outra forma, seriam bloqueadas:

  • Acesso privado do Google para GCR e GCS: por default, quando uma máquina virtual (VM) compute Engine, como um nó de clusters do Databricks, não possui um endereço IP externo (público) atribuído à sua interface de rede, ela pode enviar pacotes apenas para outros internos Destinos de endereço IP. Você pode permitir que essas VMs se conectem ao conjunto de endereços IP externos usados pelas APIs e serviços do Google ativando o Private Google Access (PGA) na sub-rede usada pela interface de rede da VM. Com o PGA, a comunicação direta entre o plano compute do Databricks e esses serviços do Google usa a rede interna do Google em vez da Internet pública. Isso afeta as seguintes conexões de saída do plano compute :

  • Regras de firewall para serviço de plano de controle: Depois de bloquear a saída modificando o firewall integrado, você deve permitir vários serviços essenciais adicionando novas regras de firewall:

    • A saída para o aplicativo da Web e as APIs REST na porta 443.

    • A saída para o relé de conectividade do cluster seguro na porta 443.

    • A saída para o default Hive metastore na porta 3306. Se você implantou seu próprio metastore externo, não será necessário adicionar regras de rede para o metastore default não utilizado.

      • O egresso para chamadas internas do plano Databricks compute para o plano de controle Databricks API na porta 8443.

      • A saída para o registro em Unity Catalog e a transmissão de dados de linhagem para Databricks na porta 8444.

      • A saída nas portas 8445-8451 para suportar o próximo recurso.

    Os intervalos de endereços IP para o aplicativo da Web, o relé de conectividade cluster seguro e o default Hive metastore variam de acordo com a região. Para obter os valores de sua região, consulte a tabela em Endereços IP e domínios para Databricks serviço e ativo.

Este artigo inclui exemplos de configuração clouds do Google usando a interface de linha de comando (CLI) gcloud. Para usar esses exemplos, você deve instalar o Google clouds SDK.

Endereços IP de endpoint de serviço do plano de controle por região

Se quiser configurar um firewall para bloquear a saída, o senhor deverá definir novas regras e rotas de firewall de saída VPC para permitir serviços essenciais hospedados no plano de controle Databricks. endpoint Os endereços IP variam de acordo com a região do Google cloud do seu Databricks workspace. Use a tabela em Endereços IP e domínios para Databricks serviço e ativo para obter a porta e o endereço IP dos ingresses do plano de controle para a workspace cloud região do Google do seu .

o passo 1: Planeje o dimensionamento da sua rede

Se o senhor planeja usar um clusters grande ou muitos espaços de trabalho, certifique-se de que o espaço de trabalho terá espaço IP suficiente para executar o Databricks Job calculando os intervalos de sub-rede do GKE usando a calculadora de dimensionamento de rede.

Configure com precisão as sub-redes GKE usadas pelo seu Databricks workspace , pois o senhor não poderá alterá-las depois que o workspace for implantado. Se os intervalos de endereços das sub-redes do Databricks forem muito pequenos, o workspace esgotará seu espaço IP, o que, por sua vez, causará falha no trabalho do Databricks. Para determinar o tamanho do intervalo de endereços que o senhor precisa, a Databricks fornece uma calculadora na forma de uma planilha do Microsoft Excel. Consulte Calcular tamanhos de sub-rede para um novo workspace.

o passo 2: Crie um espaço de trabalho

  1. log no consoleaccount

  2. Crie um novo espaço de trabalho do Databricks.

    • Na seção Configuração avançada do formulário para criar o workspace, você deve usar as configurações default para Ativar clustersprivados, o que faz com que o workspace use clusters privados do GKE. Para clusters privados do GKE, as instâncias compute do Databricks não têm endereços IP públicos.

    • Anote todas as configurações de sub-rede IP que aparecem na seção Advanced Configuration durante a criação do site workspace. Existem padrões, mas o senhor pode substituí-los. Para obter detalhes, consulte Criar um workspace usando o console account .

      Sub-redes de firewall
  3. Certifique-se de que o VPC e as sub-redes do Databricks na sua account Google tenham o Acesso Privado do Google (PGA) ativado.

    Firewall PGA

o passo 3: Adicionar regras de firewall VPC

Agora você deve adicionar regras de firewall ao firewall que o Databricks criou para seu novo workspace.

  1. Obtenha o nome da sua VPC. O Databricks criou esta VPC na sua account do Google como parte da criação workspace .

    1. Na account página workspace do console , clique no workspace seu para iniciá-lo.

    2. Copie a parte numérica do URL após ?o=. Por exemplo, se o URL workspace for https://1676665108650415.5.gcp.databricks.com/?o=1676665108650415#, o ID workspace será 1676665108650415.

    3. A VPC do seu workspace tem o nome databricks-managed-<workspace-ID>. Por exemplo, databricks-managed-1676665108650415. Anote este valor para que você possa usá-lo com o comando CLI.

  2. Se você quiser usar o Console do Google para adicionar regras de firewall:

    1. Vá para a página VPCs no console clouds do Google.

    2. Clique no nome da VPC da rede que corresponde ao nome da VPC do seu workspace .

    3. Clique na REGRAS DE FIREWALL tab.

  3. Adicione uma regra para bloquear a saída para 0.0.0.0/0, que é uma sintaxe especial que significa todos os endereços IP externos.

    Por default, clouds do Google permitem todo o tráfego de saída da sua VPC. Você precisa criar uma regra bloqueando esse tráfego. Certifique-se de que a prioridade desta regra esteja definida como um número grande. O objetivo é que esta regra seja aplicada após a execução de todas as outras regras pelo clouds . Por exemplo, você poderia definir esta regra para a prioridade 1100 e, posteriormente, definir as prioridades da regra de saída no intervalo de 1000 a 1099.

    Importante

    Se você usar incorretamente um valor de baixa prioridade para esta regra, clouds do Google negarão o tráfego de rede para Databricks essenciais e serviços GKE, o que tornaria seu workspace inutilizável.

    Devido a esta regra, qualquer tráfego que vá para o espaço IP interno (10.0.0.0/8, 172.16.0.0/20, 192.168.0.0/16) precisa de uma regra de saída adicional para permitir que os clusters alcancem esses endereços IP.

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC.

     gcloud compute firewall-rules create deny-egress
     --action DENY
     --rules all
     --destination-ranges 0.0.0.0/0
     --direction EGRESS
     --priority 1100
     --network <vpc-name>
    
  4. Adicione uma regra para permitir a entrada das verificações de integridade do Google.

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC.

    gcloud compute firewall-rules create from-gcp-healthcheck \
    --action ALLOW \
    --rules tcp:80,tcp:443 \
    --source-ranges 130.211.0.0/22,35.191.0.0/16 \
    --direction INGRESS \
    --priority 1010 \
    --network <vpc-name>
    
  5. Adicione uma regra para permitir a saída das verificações de integridade do Google.

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC.

    gcloud compute firewall-rules create to-gcp-healthcheck \
    --action ALLOW \
    --rules tcp:80,tcp:443 \
    --destination-ranges 130.211.0.0/22,35.191.0.0/16 \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    
  6. Adicione uma regra para permitir a saída para APIs restritas (strict.googleapis.com), que é necessário para acessar a API GKE em um intervalo de endereços IP fixo.

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC.

    gcloud compute firewall-rules create to-google-apis \
    --action ALLOW \
    --rules all \
    --destination-ranges 199.36.153.4/30 \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    
  7. Adicione uma regra para permitir a saída para o intervalo de IPs do recurso mestre GKE. Há um intervalo de IPs do mestre do default GKE, mas o senhor pode substituir os valores durante a criação do workspace. Consulte Criar um workspace usando o console account .

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC. Substitua X.X.X.X/28 pelo intervalo de IP do recurso mestre do GKE.

    gcloud compute firewall-rules create to-gke-master \
    --action ALLOW \
    --rules tcp:443,tcp:10250 \
    --destination-ranges X.X.X.X/28 \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    
  8. Adicione uma regra para permitir a comunicação intra-sub-rede (saída) usada pelo workspace do Databricks. Existem default para essas sub-redes que ficam visíveis durante a criação workspace na seção Configuração avançada . Você precisa permitir a saída para todos os três intervalos de sub-rede que estão rotulados na interface do usuário como intervalo de IP primário para nós do GKE, intervalo de IP secundário para pods do GKE e intervalo de IP secundário para serviço do GKE.

    Você pode usar o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC. Substitua X.X.X.X/X,X.X.X.X/X,X.X.X.X/X pelas três sub-redes do Databricks que você forneceu durante a criação do workspace.

    gcloud compute firewall-rules create to-gke-nodes-subnet \
    --action ALLOW \
    --rules all \
    --destination-ranges X.X.X.X/X,X.X.X.X/X,X.X.X.X/X \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    
  9. Adicione uma regra para permitir a saída para o serviço de plano de controle Databricks. Use a tabela em endereços IP e domínios para Databricks serviço e ativo para determinar os valores corretos para cada região Databricks suportada para esses serviços.

    Permitir conexões com o aplicativo da Web principal e com o relé de conectividade segura do cluster (SCC) na porta 443. Use o seguinte comando gcloud da CLI para criar essa regra. Substitua <vpc-name> pelo nome da VPC. Substitua X.X.X.X pelo seu endereço de entrada regional para o aplicativo web. Substitua Y.Y.Y.Y pelo seu intervalo de endereços IP regional para o relé SCC.

    gcloud compute firewall-rules create to-databricks-control-plane \
    --action ALLOW \
    --rules tcp:443 \
    --destination-ranges X.X.X.X/32,Y.Y.Y.Y/32 \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    
  10. Se você usar o metastore default , adicione uma regra para permitir a conexão com o metastore na porta 3306. Use o comando CLI gcloud a seguir para criar esta regra. Substitua <vpc-name> pelo nome da sua VPC. Substitua X.X.X.X pelo intervalo de endereços IP regionais do metastore default .

    gcloud compute firewall-rules create to-databricks-managed-hive \
    --action ALLOW \
    --rules tcp:3306 \
    --destination-ranges X.X.X.X/32 \
    --direction EGRESS \
    --priority 1000 \
    --network <vpc-name>
    

    Importante

    Se você implantou sua própria instância do metastore, crie uma regra para permitir a conexão com ela em vez do metastore default .

  11. Adicione quaisquer outras regras de saída de rede exigidas pela sua organização para permitir as conexões necessárias à fonte de dados ou a outros sistemas.

    Importante

    Para regras de saída ALLOW personalizadas, defina números de prioridade no intervalo de 1000 a 1099. É importante que o número de prioridade seja inferior ao valor usado para bloquear todas as saídas, que está definido como prioridade 1100 nos passos anteriores.

Suas regras de firewall devem ser semelhantes às seguintes, embora o senhor deva usar o endereço IP regional do serviço de plano de controle para a região do seu workspace.

Regras de firewall

o passo 4: Atualizar rotas VPC

As rotas clouds do Google definem os caminhos que o tráfego de rede percorre de uma instância de máquina virtual (VM) para outros destinos. Em uma rede VPC, uma rota consiste em um único prefixo de destino no formato CIDR e um único próximo salto.

  1. Remova a rota default que foi criada automaticamente na VPC, que é 0.0.0.0/0 com o gateway de Internet default como próximo salto. Use a IU do console para remover essa rota e limpar todos os caminhos para a Internet.

    1. Vá para a lista de rotas no console clouds do Google.

    2. Selecione a rota para 0.0.0.0/0 e clique em EXCLUIR.

      Excluir rota
  2. Crie uma rota na VPC para enviar tráfego para a sub-rede restrita de APIs do Google (199.36.153.4/30). Defina o próximo salto como default-internet-gateway de acordo com o requisito para acessar APIs privadas do Google.

    Você pode usar o comando CLI gcloud a seguir para criar essa rota. Substitua <vpc-name> pelo nome da sua VPC. Substitua <project-name> pelo nome do seu projeto.

    gcloud beta compute routes create route-to-google-apis \
    --project=<project-name> --description="Route to Google restricted APIs" \
    --network=<vpc-name> \
    --priority=1000 \
    --destination-range=199.36.153.4/30 \
    --next-hop-gateway=default-internet-gateway
    
  3. Crie uma rota para acessar o serviço de plano de controle Databricks. Obtenha os valores para sua região em endereços IP e domínios para Databricks serviço e ativo.

    Você pode usar o comando CLI gcloud a seguir para criar a rota para o aplicativo da web. Substitua <vpc-name> pelo nome da sua VPC. Substitua <project-name> pelo nome do seu projeto. Substitua X.X.X.X/32 pelo intervalo de endereços IP regionais do aplicativo Web.

    gcloud beta compute routes create route-to-databricks-scc-service \
    --project=<project-name> --description="Route to Databricks web app" \
    --network=<vpc-name> \
    --priority=1000 \
    --destination-range=X.X.X.X/32 \
    --next-hop-gateway=default-internet-gateway
    

    O senhor pode usar o seguinte comando gcloud da CLI para criar a rota para o relé de conectividade segura do cluster. Substitua <vpc-name> pelo nome da VPC. Substitua <project-name> pelo nome do seu projeto. Substitua X.X.X.X/32 pelo intervalo de endereços IP regionais para o relé SCC.

    gcloud beta compute routes create route-to-databricks-scc-service \
    --project=<project-name> --description="Route to Databricks SCC relay" \
    --network=<vpc-name> \
    --priority=1000 \
    --destination-range=X.X.X.X/32 \
    --next-hop-gateway=default-internet-gateway
    

    Se você usar o metastore default , use o seguinte comando da CLI gcloud para criar a rota para o metastore default . Substitua <vpc-name> pelo nome da sua VPC. Substitua <project-name> pelo nome do seu projeto. Substitua X.X.X.X/32 pelo intervalo de endereços IP regionais do metastore.

    gcloud beta compute routes create route-to-databricks-scc-service \
    --project=<project-name> --description="Route to default metastore" \
    --network=<vpc-name> \
    --priority=1000 \
    --destination-range=X.X.X.X/32 \
    --next-hop-gateway=default-internet-gateway
    

o passo 5: Crie uma zona DNS para APIs do Google para que você possa ativar o acesso privado do Google para GCS e GCR

Agora, o senhor deve criar uma zona DNS para o Google APIs, que é necessária para ativar o Google Private Access do plano clássico compute para os dois Google APIs para GCS e GCR. Para obter detalhes sobre como ativar o GPA, consulte os artigos da documentação do Google Configure Private Google Access].

  1. Personalize o DNS na VPC para o domínio googleapis.com usando DNS clouds . Normalmente googleapis.com resolve endereços IP públicos, mas para o acesso privado do Google você deve usar restricted.googleapis.com. Este domínio é resolvido para um intervalo específico 199.36.153.4/30, acessível na rede clouds do Google.

    O plano Databricks classic compute GKE cluster requer acesso a GCS e GCR. Para a PGA, o senhor precisa garantir que o acesso ao site restrito APIs seja resolvido, caso contrário, o GKE não começará com êxito.

    Você pode usar o seguinte comando gcloud para criar a zona DNS. Substitua <vpc-name> pelo nome da sua VPC.

    gcloud dns managed-zones create google-apis \
    --description "private zone for Google APIs" \
    --dns-name googleapis.com \
    --visibility private \
    --networks VPC-NAME
    
    gcloud dns record-sets transaction start --zone google-apis
    
    gcloud dns record-sets transaction add restricted.googleapis.com. \
    --name *.googleapis.com \
    --ttl 300 \
    --type CNAME \
    --zone google-apis
    
    gcloud dns record-sets transaction add "199.36.153.4" "199.36.153.5" "199.36.153.6" "199.36.153.7" \
    --name restricted.googleapis.com \
    --ttl 300 \
    --type A \
    --zone google-apis
    gcloud dns record-sets transaction execute --zone google-apis
    

    Os objetos no Console do Google clouds são semelhantes a estes:

    Zona para API
  2. Faça configurações de zona semelhantes para o domínio GCR.io para enviar tráfego para a sub-rede restrita de APIs do Google para acessar o registro de contêiner. Sem essas alterações, os clusters do GKE não funcionarão com sucesso, pois não serão capazes de extrair todos os contêineres de tempo de execução necessários do Databricks.

    Você pode usar o seguinte comando gcloud para criar essas zonas DNS. Substitua <vpc-name> pelo nome da sua VPC.

    gcloud dns managed-zones create gcr-io \
    --description "private zone for GCR.io" \
    --dns-name gcr.io \
    --visibility private \
    --networks <vpc-name>
    
    gcloud dns record-sets transaction start --zone gcr-io
    gcloud dns record-sets transaction add gcr.io. \
    --name *.gcr.io \
    --ttl 300 \
    --type CNAME \
    --zone gcr-io
    
    gcloud dns record-sets transaction add "199.36.153.4" "199.36.153.5" "199.36.153.6" "199.36.153.7" \
    --name gcr.io \
    --ttl 300 \
    --type A \
    --zone gcr-io
    gcloud dns record-sets transaction execute --zone gcr-io
    

    Os objetos no Console do Google clouds são semelhantes a estes:

    Zona para GCR

o passo 6: Validar configuração

  1. Crie clusters Databricks e comece.

  2. Aguarde para confirmar se ele começou com sucesso e está com o estado Running.

    Validar clusters
  3. Acesse a página de carga de trabalho do GKE no console do Google clouds .

  4. No seletor clusters , escolha seus clusters. O nome clusters do seu workspace tem o nome db- seguido pelo ID workspace do Databricks, que é um número grande.

  5. Confirme se todos os serviços mostram status OK.

    Validar serviço

Solução de problemas

Não é possível iniciar clustersdo GKE

Se os clusters do GKE não começarem, é possível que o DNS esteja configurado incorretamente quando o Acesso privado do Google estiver habilitado na VPC usada pelo seu espaço de trabalho do Databricks. Se os nós não conseguirem resolver googleapis hostname, isso poderá resultar na falha do registro, o que resultará na criação malsucedida dos clusters do GKE .

Você pode view logs verificando os logs da porta serial dos nós correspondentes do GKE. Você pode ver erros como os seguintes:

>>> [ 203.604558] configure.sh[948]: curl: (6) Couldn't resolve host '

>>> storage.googleapis.com'

>>> [ 203.605422] configure.sh[948]: == Failed to download

>>> https://storage.googleapis.com/gke-release/npd-custom-plugins/v1.0.1/npd-custom-plugins-v1.0.1.tar.gz.

>>> Retrying. ==

>>> [ 203.614049] configure.sh[948]:

>>> https://www.googleapis.com/auth/devstorage.read_write

Como os clusters usam uma rede VPC, a sub-rede em que esses clusters estão tem o Acesso privado do Google ativado. Você precisará concluir a configuração do Acesso privado do Google seguindo as instruções nesta documentação do Google PGA.

clusters do GKE param de funcionar ou não podem ser iniciados depois de terem sido iniciados com sucesso em tentativas anteriores

Talvez você descubra que os do GKE clusters param de funcionar ou não podem reiniciá- clusters devido à configuração incorreta do compute serviço Engine account no projeto que hospeda o GKE. A compute default de serviço Engine account associada aos nós dos problemáticos clusters está no estado 'desativado' ou não tem a função mínima necessária. A account de serviço é <project-id>-compute@developer.gserviceaccount.com.

A causa da falha no registro do nó pode ser devido ao status desabilitado desta account de serviço, que está sendo anexada aos nós dos clusters problemáticos.

Tente ativar a account de serviço seguindo este centro de ajuda do Google e tente recriar os clusters ou pool de nós para ver se isso resolve o problema.

Você também pode tentar usar o Google clouds Console para examinar sua página IAM e Admin em busca de account de serviço e os nós correspondentes de clusters problemáticos.

defaultPor , a compute de default serviço Engine account é criada com a função de editor de projeto do IAM. Você pode alterá-lo para a função mínima exigida da seguinte maneira:

  1. Obtenha as funções atuais atribuídas à de default compute serviço .account

    gcloud projects get-iam-policy {{project-id}}  \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:{{project-id}}-compute@developer.gserviceaccount.com"
    
  2. Adicione funções mínimas necessárias à de default compute serviço account

    gcloud projects add-iam-policy-binding {{project-id}} \
    --member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
    --role roles/logging.logWriter
    
    gcloud projects add-iam-policy-binding {{project-id}} \
    --member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
    --role roles/monitoring.metricWriter
    
    gcloud projects add-iam-policy-binding {{project-id}} \
    --member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
    --role roles/monitoring.viewer
    
    gcloud projects add-iam-policy-binding {{project-id}} \
    --member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
    --role roles/stackdriver.resourceMetadata.writer
    
  3. Remova a função de editor de projeto da de default compute serviço account.

    gcloud projects remove-iam-policy-binding {{project-id}} \
    --member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
    --role roles/editor
    
  4. Valide as funções atribuídas à de default compute serviço de account.

    gcloud projects get-iam-policy {{project-id}}  \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:{{project-id}}-compute@developer.gserviceaccount.com"
    
  5. Certifique-se de que esta account de serviço tenha o conjunto correto de funções no projeto.