Configurar um gateway de rede privada
Prévia privada
O gateway de rede privada está em Pré-visualização privada. Para solicitar acesso, entre em contato com sua equipe de conta da Databricks.
Este artigo descreve como configurar e gerenciar um gateway de rede privada usando a API REST da conta. Para obter uma visão geral do que é um gateway de rede privada e como ele funciona, consulte Private network gateway.
Antes de começar
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.
- O endereço IP de um resolvedor DNS que seja acessível a partir da sub-rede do gateway. Ao usar o DNS fornecido pela Amazon, este é o endereço VPC+2 (por exemplo,
10.0.0.2se o seu CIDR da VPC for10.0.0.0/16), ou o endereço link-local169.254.169.253.
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 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 prévia privada.
Crie ou selecione um NCC
Se você já tiver um NCC na região que deseja usar, pule esta etapa.
-
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:
Bashcurl --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' -
Crie um NCC, execute o seguinte:
Bashcurl --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_idda 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.
- Um endereço IP de resolvedor de DNS que seja acessível a partir da sub-rede de gateway. Você pode usar o resolvedor de VPC da AWS em
169.254.169.253, a base CIDR da VPC mais dois (por exemplo,10.0.0.2para uma VPC10.0.0.0/16), um endpoint do Route 53 Resolver ou seu servidor DNS personalizado.
A sub-rede, o grupo de segurança e o resolvedor de DNS devem estar na mesma VPC e região que seu NCC e Workspace de destino, ou ser acessíveis a partir deles.
Criar a IAM role entre contas
-
Crie uma IAM role em sua conta da AWS que o Databricks assume para criar e gerenciar a interface de rede do gateway.
-
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>"
}
}
}
]
} -
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"
}
}
},
{
"Sid": "CreateManagedGatewayResources",
"Effect": "Allow",
"Action": ["vpc-lattice:CreateResourceConfiguration", "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" } }
},
{
"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 conta da Databricks na AWS é
414351767826. O ID externo é o ID da sua conta da Databricks. Algumas ações não podem ser limitadas a uma VPC específica, portanto, o escopo mais restrito disponível é conta e região. Conceda a política na íntegra. Todos os comandos são obrigatórios. Esta é uma política única compatível com versões futuras para o provisionamento e gerenciamento do gateway, portanto, você configura a função uma vez e não precisa atualizá-la à medida que o gateway evolui.
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:
gateway_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(obrigatório): Os endereços IP do resolvedor de DNS que você identificou ao preparar a rede da sua VPC.traffic_mode(obrigatório):SPECIFIC_DESTINATIONSouALL_TRAFFIC. Consulte Modos de tráfego.destinations(obrigatório quandotraffic_modeforSPECIFIC_DESTINATIONS): Os nomes DNS para rotear por meio do gateway.
Para criar um gateway no modo SPECIFIC_DESTINATIONS, execute o seguinte:
curl --request POST \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"gateway_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": [
{ "resolver_type": "IP_ADDRESS", "value": "10.0.0.2" }
]
}'
O gateway é criado no estado CREATING. Ele muda para ESTABLISHED após o Databricks criar a interface de rede do gateway em sua sub-rede, o que geralmente leva menos de dois minutos.
Confirme se o gateway está estabelecido
Para verificar o estado do gateway, envie uma solicitação GET até que state seja ESTABLISHED:
curl --request GET \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}' \
--header 'Authorization: Bearer <access_token>'
Confirme se state é ESTABLISHED antes de continuar.
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:
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
Um gateway usa o resolvedor que você especifica em private_dns_resolvers para resolver hostnames para os destinos que você configura. O resolvedor deve ser acessível a partir da sub-rede do gateway.
Se seus recursos privados estiverem registrados em uma zona hospedada privada do Route 53, associe essa zona à VPC que contém a sub-rede de gateway para que os hostnames sejam resolvidos corretamente. Para usar o resolvedor de VPC da AWS integrado, especifique 169.254.169.253 ou a base CIDR da VPC mais dois. Se você tiver zonas privadas personalizadas com nomes sobrepostos, use seu próprio resolvedor.
Gerenciar um gateway
Você pode atualizar, excluir e listar gateways com a API REST da conta.
Atualizar um gateway
Você pode atualizar gateway_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 atualizar os destinos, execute o seguinte:
curl --request PATCH \
'https://accounts.cloud.databricks.com/api/2.0/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" } ] }'
Excluir um gateway
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:
curl --request DELETE \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}' \
--header 'Authorization: Bearer <access_token>'
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:
curl --request GET \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>'
Estados do gateway
Um gateway relata um dos seguintes estados:
Status | Descrição |
|---|---|
| O Databricks está criando a interface de rede de gateway em sua sub-rede. |
| O gateway está pronto para rotear o tráfego. |
| O gateway está sendo removido. |
| 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. |