Pular para o conteúdo principal
Página não listada
Esta página não está listada. Mecanismos de busca não armazenarão nenhuma informação, e somente usuários que possuam o link direto poderão acessá-la

Configurar um gateway de rede privada

info

Visualização

Esse recurso está na Visualização privada. Para experimentar, entre em contato com o seu representante da Databricks.

Este artigo descreve como configurar e gerenciar um gateway de rede privada. Para ter uma visão geral do que é um gateway de rede privada e como ele funciona, consulte Gateway de rede privada.

Requisitos​

Antes de criar um gateway de rede privada, certifique-se de ter o seguinte:

  • Uma conta do AWS Databricks com pelo menos um workspace que tenha o compute serverless habilitado.
  • Privilégios de administrador de account do Databricks. Sua account também deve estar no nível de preços Enterprise.
  • Uma sub-rede de VPC dedicada na sua região de destino e zona de disponibilidade. Um(a) /28 é o mínimo prático. A sub-rede deve ter endereços IP disponíveis e conectividade downstream para os recursos pretendidos. A Databricks recomenda criar uma sub-rede dedicada ao gateway.
  • Permissão em sua conta da AWS para criar uma IAM role que o Databricks possa assumir.
  • A capacidade de criar um grupo de segurança na mesma VPC para controlar a saída do gateway.
  • Resolução DNS configurada em sua VPC para os recursos que você deseja acessar. O gateway usa o DNS fornecido pela Amazon.

O gateway de rede privada está disponível em um conjunto limitado de regiões da AWS e Zonas de Disponibilidade físicas durante a prévia privada. Entre em contato com sua equipe de conta do Databricks para confirmar as regiões e Zonas de Disponibilidade suportadas para sua implantação. O gateway e sua sub-rede devem estar na mesma região que o NCC.

Ativar a pré-visualização​

Para solicitar acesso ao Private Preview do gateway de rede privada, entre em contato com sua equipe de conta do Databricks e forneça o seguinte:

  • ID da sua conta do Databricks.
  • As regiões onde você pretende usar o gateway.

Configurar um gateway de rede privada​

Toda a configuração de gateway de rede privada usa a API REST account. Não há suporte para interface de usuário ou Terraform durante a visualização.

Os passos da API REST abaixo usam /api/networking/v1/ para operações de gateway. A criação de NCC e o anexo ao workspace continuam a usar /api/2.0/accounts/....

Crie ou selecione um NCC​

Se você já tiver um NCC na região que deseja usar, pule esta etapa.

  1. Obtenha um access token OAuth usando um Service Principal que tenha a função de administrador de account. Um administrador de conta cria o Service Principal no console da conta com antecedência. Para solicitar o token, execute o seguinte:

    Bash
    curl --location 'https://accounts.cloud.databricks.com/oidc/accounts/{account_id}/v1/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --header 'Authorization: Basic <base64(client_id:client_secret)>' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'scope=all-apis'
  2. Crie um NCC, execute o seguinte:

    Bash
    curl --request POST \
    'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs' \
    --header 'Authorization: Bearer <access_token>' \
    --header 'Content-Type: application/json' \
    --data '{ "name": "my-ncc", "region": "us-east-1" }'

    Salve o network_connectivity_config_id da resposta.

Prepare sua rede VPC​

Forneça o seguinte em sua conta da AWS:

  • Uma sub-rede na zona de disponibilidade de destino, com endereços IP disponíveis. O Private Preview suporta exatamente uma sub-rede em uma zona de disponibilidade.
  • Um grupo de segurança que controla o que a interface de rede do gateway pode acessar. O Databricks recomenda não utilizar regras de entrada e que as regras de saída sejam limitadas às suas portas de destino.
  • Resolução de DNS por meio de DNS fornecido pela Amazon. Associe quaisquer zonas privadas hospedadas necessárias do Route 53 com a VPC que contém a sub-rede de gateway.

A sub-rede e o grupo de segurança devem estar na mesma VPC, na região de seus Workspace NCC e de destino.

Criar a IAM role entre contas​

  1. Crie uma IAM role em sua conta da AWS que o Databricks assume para criar e gerenciar a interface de rede do gateway.

  2. Defina a política de confiança para permitir que a função do Databricks assuma esta função, usando o ID da sua conta do Databricks como o ID externo:

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::414351767826:role/png-management-role"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": "<your_databricks_account_id>"
    }
    }
    }
    ]
    }
  3. Anexe a seguinte política de permissão. Substitua <region>, <customer_account> e <vpc_id> pelos seus valores:

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "CreateNicInVpc",
    "Effect": "Allow",
    "Action": "ec2:CreateNetworkInterface",
    "Resource": [
    "arn:aws:ec2:<region>:<customer_account>:network-interface/*",
    "arn:aws:ec2:<region>:<customer_account>:subnet/*",
    "arn:aws:ec2:<region>:<customer_account>:security-group/*"
    ]
    },
    {
    "Sid": "ManageAndCleanupNic",
    "Effect": "Allow",
    "Action": ["ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:CreateTags"],
    "Resource": "arn:aws:ec2:<region>:<customer_account>:network-interface/*",
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>" } }
    },
    {
    "Sid": "CreateGatewayInVpcOnly",
    "Effect": "Allow",
    "Action": "vpc-lattice:CreateResourceGateway",
    "Resource": "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "<region>",
    "vpc-lattice:VpcId": "<vpc_id>",
    "aws:RequestTag/Vendor": "Databricks",
    "aws:RequestTag/DatabricksGateway": "true"
    }
    }
    },
    {
    "Sid": "CreateManagedGatewayResources",
    "Effect": "Allow",
    "Action": "vpc-lattice:CreateResourceConfiguration",
    "Resource": "arn:aws:vpc-lattice:<region>:<customer_account>:resourceconfiguration/*",
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "<region>",
    "aws:RequestTag/Vendor": "Databricks",
    "aws:RequestTag/DatabricksManaged": "true"
    }
    }
    },
    {
    "Sid": "CreateConfigOnDatabricksGatewayOnly",
    "Effect": "Allow",
    "Action": "vpc-lattice:CreateResourceConfiguration",
    "Resource": "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "<region>",
    "aws:RequestTag/Vendor": "Databricks",
    "aws:ResourceTag/DatabricksGateway": "true"
    }
    }
    },
    {
    "Sid": "DenyGatewayTagOnConfig",
    "Effect": "Deny",
    "Action": "vpc-lattice:CreateResourceConfiguration",
    "Resource": "*",
    "Condition": { "Null": { "aws:RequestTag/DatabricksGateway": "false" } }
    },
    {
    "Sid": "TagOnCreateOnly",
    "Effect": "Allow",
    "Action": "vpc-lattice:TagResource",
    "Resource": [
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourceconfiguration/*"
    ],
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "<region>",
    "aws:RequestTag/Vendor": "Databricks",
    "vpc-lattice:CreateAction": ["CreateResourceGateway", "CreateResourceConfiguration"]
    }
    }
    },
    {
    "Sid": "ManageManagedGatewayResources",
    "Effect": "Allow",
    "Action": [
    "vpc-lattice:GetResourceGateway",
    "vpc-lattice:DeleteResourceGateway",
    "vpc-lattice:GetResourceConfiguration",
    "vpc-lattice:DeleteResourceConfiguration",
    "vpc-lattice:PutResourcePolicy",
    "vpc-lattice:DeleteResourcePolicy"
    ],
    "Resource": [
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourceconfiguration/*"
    ],
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>", "aws:ResourceTag/Vendor": "Databricks" } }
    },
    {
    "Sid": "ListAndDescribeInRegion",
    "Effect": "Allow",
    "Action": [
    "vpc-lattice:GetResourcePolicy",
    "vpc-lattice:ListResourceGateways",
    "vpc-lattice:ListResourceConfigurations",
    "ec2:DescribeNetworkInterfaces",
    "ec2:DescribeVpcs",
    "ec2:DescribeSubnets",
    "ec2:DescribeSecurityGroups",
    "ec2:DescribeAvailabilityZones",
    "ec2:DescribeRouteTables"
    ],
    "Resource": "*",
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>" } }
    },
    {
    "Sid": "VpcLatticeServiceLinkedRole",
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::<customer_account>:role/aws-service-role/vpc-lattice.amazonaws.com/AWSServiceRoleForVpcLattice",
    "Condition": {
    "StringEquals": { "iam:AWSServiceName": "vpc-lattice.amazonaws.com" }
    }
    }
    ]
    }

    A account AWS do Databricks é 414351767826. O ID externo é o ID da sua account do Databricks. Algumas ações não podem ser restritas a uma VPC específica, portanto, o escopo disponível mais restrito é account e região. Conceda a política na íntegra. Todas as declarações são obrigatórias.

    O Databricks tags os gateways de recursos que cria com Vendor=Databricks e DatabricksGateway=true, e as configurações de recursos que cria com Vendor=Databricks e DatabricksManaged=true. A política permite tags de VPC Lattice apenas quando um recurso é criado e permite configurações de recursos apenas em gateways de recursos que o Databricks criou na VPC aprovada. Não aplique a tag DatabricksGateway aos gateways de recursos que você mesmo criar, pois isso os coloca no escopo desta política.

    Se você criou a função com uma versão anterior desta política, a função continuará funcionando e você não precisará alterá-la. Para evitar que o Databricks crie configurações de recursos em gateways de recursos que não foram criados por ele, substitua a política de permissão da função pela política acima. Mantenha o mesmo ARN da função e a política de confiança.

Criar o gateway de rede privada​

Para criar o gateway, envie uma solicitação POST para o endpoint private-network-gateways sob seu NCC. O corpo da solicitação aceita os seguintes campos:

  • display_name (obrigatório): um nome legível por humanos para o gateway.
  • aws_cloud_connection.gateway_subnets (obrigatório): A sub-rede onde a interface de rede do gateway é colocada. O Private Preview aceita exatamente uma sub-rede.
  • aws_cloud_connection.cross_account_role.role_arn (obrigatório): O ARN da IAM role que você criou n'o passo anterior.
  • aws_cloud_connection.security_group_ids (obrigatório): Os grupos de segurança anexados à interface de rede do gateway, que controlam a saída.
  • private_dns_resolvers (opcional): Omita este campo ou defina-o como [] para usar o DNS fornecido pela Amazon. Não especifique os endereços IP do resolvedor fornecidos pela Amazon.
  • traffic_mode (obrigatório): SPECIFIC_DESTINATIONS ou ALL_TRAFFIC. Consulte Modos de tráfego.
  • destinations (obrigatório quando traffic_mode for SPECIFIC_DESTINATIONS): Os nomes DNS para rotear por meio do gateway.

Para tornar a criação de gateway idempotente, adicione o parâmetro de query opcional request_id à URL POST, como ?request_id={request_id}. Use um ID exclusivo para cada novo gateway e reutilize-o ao repetir a mesma solicitação para retornar a operação original sem criar outro gateway.

Para criar um gateway no modo SPECIFIC_DESTINATIONS, execute o seguinte:

Bash
curl --request POST \
'https://accounts.cloud.databricks.com/api/networking/v1/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"display_name": "my-aws-png",
"traffic_mode": "SPECIFIC_DESTINATIONS",
"aws_cloud_connection": {
"gateway_subnets": [{ "subnet_id": "subnet-0abc123def456" }],
"cross_account_role": {
"role_arn": "arn:aws:iam::<customer_account>:role/databricks-png-role"
},
"security_group_ids": ["sg-customer-xyz"]
},
"destinations": [
{ "destination_type": "DNS_NAME", "value": "app.customer.internal" }
],
"private_dns_resolvers": []
}'

A resposta é uma operação de longa duração. Salve o seu name, que tem o formato accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}/operations/{operation_id}. Esse nome de operação é diferente do nome do recurso do gateway.

Por exemplo, uma operação pendente inclui os seguintes campos:

JSON
{
"name": "accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}/operations/{operation_id}",
"done": false
}

Confirme se o gateway está estabelecido​

Para verificar a operação de criação, substitua {operation_name} pelo valor completo do campo name de nível superior na resposta de criação. Esse valor começa com accounts/ e termina com operations/{operation_id}. Anexe-o a https://accounts.cloud.databricks.com/api/networking/v1/ como mostrado abaixo:

Bash
curl --request GET \
'https://accounts.cloud.databricks.com/api/networking/v1/{operation_name}' \
--header 'Authorization: Bearer <access_token>'

Aguarde até que done seja true. Se a operação contiver error, resolva o problema de provisionamento. Se ele contiver response, o gateway está estabelecido. Uma operação bem-sucedida inclui os seguintes campos:

JSON
{
"name": "accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}/operations/{operation_id}",
"done": true,
"response": {
"name": "accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}",
"display_name": "my-aws-png",
"state": "ESTABLISHED"
}
}

Salvar response.name como {gateway_name}. Para recuperar o gateway posteriormente, use seu nome de recurso completo:

Bash
curl --request GET \
'https://accounts.cloud.databricks.com/api/networking/v1/{gateway_name}' \
--header 'Authorization: Bearer <access_token>'

A resposta GET é o próprio recurso de gateway, sem o wrapper de operação.

Anexar o NCC aos seus workspaces​

Se seu workspace já estiver anexado ao NCC, pule este passo. Um NCC é um objeto regional e pode ser anexado apenas a Workspace na mesma região.

No console da conta, vá para Workspaces , selecione o workspace, abra Network Connectivity e anexe seu NCC. Repita para cada workspace que deva usar o gateway.

Você também pode anexar o NCC usando a API REST da conta:

Bash
curl --request PATCH \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/workspaces/{workspace_id}' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{ "network_connectivity_config_id": "{network_connectivity_config_id}" }'

Configuração de DNS​

Omit private_dns_resolvers ou defina-o como [] para usar o DNS fornecido pela Amazon. A API V1 rejeita endereços de resolvedor fornecidos pela Amazon explicitamente fornecidos, incluindo 169.254.169.253 e a base CIDR da VPC mais dois.

Se seus recursos privados estiverem registrados em uma zona privada hospedada do Route 53, associe essa zona à VPC que contém a sub-rede do gateway para que os hostnames sejam resolvidos corretamente. Para requisitos de DNS personalizados, entre em contato com sua equipe de account Databricks.

Gerenciar um gateway​

Você pode atualizar, excluir e listar gateways com a API REST da conta.

Atualizar um gateway​

Você pode atualizar display_name, destinations, private_dns_resolvers e traffic_mode no local com uma solicitação PATCH. O parâmetro de query update_mask é obrigatório e especifica quais campos atualizar. Ao alternar traffic_mode para ALL_TRAFFIC, limpe destinations na mesma solicitação. Ao alternar para SPECIFIC_DESTINATIONS, inclua os destinos para rotear. Para alterar gateway_subnets, cross_account_role ou security_group_ids, exclua o gateway e crie um novo.

Para mudar para DNS fornecido pela Amazon, inclua private_dns_resolvers em update_mask e defina private_dns_resolvers como [].

Para atualizar os destinos, execute o seguinte:

Bash
curl --request PATCH \
'https://accounts.cloud.databricks.com/api/networking/v1/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}?update_mask=destinations' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{ "destinations": [ { "destination_type": "DNS_NAME", "value": "app2.customer.internal" } ] }'

A resposta de atualização é o próprio recurso de gateway. Ele não está envolto em um campo private_network_gateway.

Excluir um gateway​

atenção

A exclusão de um gateway interrompe a conectividade com os recursos privados que dependem dele. Confirme se não há cargas de trabalho ativas dependendo do gateway antes de excluí-lo.

Para excluir o gateway, envie uma solicitação DELETE para o endpoint do gateway sob seu NCC:

Bash
curl --request DELETE \
'https://accounts.cloud.databricks.com/api/networking/v1/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}' \
--header 'Authorization: Bearer <access_token>'

A resposta de exclusão está vazia. Solicitações get subsequentes retornam NOT_FOUND e o gateway é omitido das respostas de lista enquanto a limpeza da infraestrutura continua. A exclusão não retorna uma operação para sondar.

Listar gateways​

Para listar os gateways de rede privada em uma NCC, envie uma solicitação GET para o endpoint de gateway sob sua NCC:

Bash
curl --request GET \
'https://accounts.cloud.databricks.com/api/networking/v1/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>'

Ler gateways da matriz private_network_gateways. Se a resposta incluir next_page_token, passe esse valor como o parâmetro de query page_token na próxima solicitação de lista.

Estados do gateway​

Um gateway relata um dos seguintes estados:

Status

Descrição

CREATING

O Databricks está criando a interface de rede de gateway em sua sub-rede.

ESTABLISHED

O gateway está pronto para rotear o tráfego.

FAILED

Não foi possível provisionar o gateway. Este estado é terminal: exclua o gateway e crie um novo após corrigir a causa subjacente, como uma região ou Zona de Disponibilidade não suportada.

Status

Descrição

CREATING

O Databricks está criando a interface de rede de gateway em sua sub-rede.

ESTABLISHED

O gateway está pronto para rotear o tráfego.

FAILED

Não foi possível provisionar o gateway. Este estado é terminal: exclua o gateway e crie um novo após corrigir a causa subjacente, como uma região ou Zona de Disponibilidade não suportada.