Aller au contenu principal
Page non répertoriée
Cette page n'est pas répertoriée. Les moteurs de recherche ne l'indexeront pas, et seuls les utilisateurs ayant un lien direct peuvent y accéder.

Configurer une passerelle réseau privée

info

Aperçu

Cette fonctionnalité est en aperçu privé Private Preview. Pour l’essayer, veuillez contacter votre conseiller Databricks.

Cet article décrit comment configurer et gérer une passerelle de réseau privé. Pour obtenir une vue d’ensemble de ce qu’est une passerelle de réseau privé et de son fonctionnement, consultez Passerelle de réseau privé.

Conditions requises​

Avant de créer une passerelle réseau privée, assurez-vous de disposer des éléments suivants :

  • Un compte AWS Databricks avec au moins un workspace pour lequel le compute serverless est activé.
  • Privilèges d’administrateur de compte Databricks. Votre compte doit également être sur le niveau de Tarifs Entreprise.
  • Un sous-réseau Virtual Private Cloud (VPC) dédié dans votre région cible et votre zone de disponibilité. Une valeur de /28 constitue le minimum pratique. Le sous-réseau doit disposer d'adresses IP disponibles et d'une connectivité en aval vers vos ressources cibles. Databricks recommande de créer un sous-réseau dédié à la passerelle.
  • Autorisation dans votre compte AWS pour créer un rôle IAM que Databricks peut assumer.
  • La possibilité de créer un groupe de sécurité dans le même Virtual Private Cloud (VPC) pour contrôler la sortie de la passerelle.
  • Résolution DNS configurée dans votre Virtual Private Cloud (VPC) pour les ressources auxquelles vous souhaitez accéder. La passerelle utilise le DNS fourni par Amazon.

La passerelle réseau privée est disponible dans un nombre limité de régions AWS et de zones de disponibilité physiques pendant l’Aperçu privé. Contactez l’équipe de votre compte Databricks pour confirmer les régions et les zones de disponibilité prises en charge pour votre déploiement. La passerelle et son sous-réseau doivent se trouver dans la même région que le NCC.

Activer l'aperçu​

Pour demander l’accès à l’aperçu privé de la passerelle réseau privée, contactez l’équipe de votre compte Databricks et fournissez les éléments suivants :

  • Votre ID de compte Databricks.
  • Les régions où vous avez l’intention d’utiliser la passerelle.

Configurer une passerelle réseau privée​

Toute configuration de passerelle de réseau privé utilise l’API REST de compte. Il n’existe aucune prise en charge de l’interface utilisateur ou de Terraform pendant la période d’avant-première.

Les étapes de l'API REST ci-dessous utilisent /api/networking/v1/ pour les opérations de passerelle. La création de NCC et la jonction de workspace continuent d'utiliser /api/2.0/accounts/....

Créer ou sélectionner une NCC​

Si vous disposez déjà d'une NCC dans la région que vous souhaitez utiliser, passez cette étape.

  1. Obtenez un jeton d'accès OAuth en utilisant un service principal disposant du rôle d'administrateur de compte. Un administrateur de compte crée le service principal dans la console de compte au préalable. Pour demander le jeton, exécutez ce qui suit :

    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. Créez une NCC, exécutez la commande suivante :

    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" }'

    Enregistrez le network_connectivity_config_id à partir de la réponse.

Préparer votre mise en réseau Virtual Private Cloud (VPC)​

Fournissez les éléments suivants dans votre compte AWS :

  • Un sous-réseau dans la zone de disponibilité cible, avec des adresses IP disponibles. L'aperçu privé ne prend en charge qu'un seul sous-réseau dans une zone de disponibilité.
  • Un groupe de sécurité qui contrôle ce que l’interface réseau de la passerelle peut atteindre. Databricks recommande de ne définir aucune règle entrante et de limiter les règles sortantes à vos ports de destination.
  • Résolution DNS via le DNS fourni par Amazon. Associez toutes les zones privées hébergées Route 53 requises au Virtual Private Cloud (VPC) qui contient le sous-réseau de la passerelle.

Le sous-réseau et le groupe de sécurité doivent se trouver dans le même Virtual Private Cloud (VPC), dans la région de votre NCC et des Workspaces cibles.

Créer le rôle IAM inter-comptes​

  1. Créez un rôle IAM dans votre compte AWS que Databricks assumera pour créer et gérer l’interface réseau de la passerelle.

  2. Définissez la politique de confiance pour permettre au rôle Databricks d’assumer ce rôle, en utilisant votre ID de compte Databricks comme identifiant externe :

    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. Attachez la politique d'autorisation suivante. Remplacez <region>, <customer_account> et <vpc_id> par vos valeurs :

    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" }
    }
    }
    ]
    }

    Le compte AWS de Databricks est 414351767826. L’ID externe est votre ID de compte Databricks. Certaines actions ne peuvent pas être limitées à un Virtual Private Cloud (VPC) spécifique, de sorte que la portée la plus restreinte disponible est le compte et la région. Accordez la politique dans son intégralité. Toutes les instructions sont requises.

    Databricks balise les passerelles de ressources qu’il crée avec Vendor=Databricks et DatabricksGateway=true, et les configurations de ressources qu’il crée avec Vendor=Databricks et DatabricksManaged=true. La politique n’autorise les balises VPC Lattice que lorsqu’une ressource est créée, et n’autorise les configurations de ressources que sur les passerelles de ressources que Databricks a créées dans le Virtual Private Cloud (VPC) approuvé. N’appliquez pas la balise DatabricksGateway aux passerelles de ressources que vous créez vous-même, car cela les ferait entrer dans le champ d’application de cette politique.

    Si vous avez créé le rôle avec une version antérieure de cette stratégie, le rôle continue de fonctionner et vous n’avez pas besoin de le modifier. Pour empêcher Databricks de créer des configurations de ressources sur des passerelles de ressources qu’il n’a pas créées, remplacez la politique d’autorisation du rôle par la politique ci-dessus. Conservez le même ARN de rôle et la même politique de confiance.

Créer la passerelle réseau privée​

Pour créer la passerelle, envoyez une requête POST à l’endpoint private-network-gateways sous votre NCC. Le corps de la requête accepte les champs suivants :

  • display_name (requis) : un nom lisible par l'humain pour la passerelle.
  • aws_cloud_connection.gateway_subnets (requis) : le sous-réseau où l’interface réseau de la passerelle est placée. L’aperçu privé accepte exactement un sous-réseau.
  • aws_cloud_connection.cross_account_role.role_arn (requis) : L'ARN du rôle IAM que vous avez créé à l'étape précédente.
  • aws_cloud_connection.security_group_ids (requis) : les groupes de sécurité attachés à l'interface réseau de la passerelle, qui contrôlent la sortie.
  • private_dns_resolvers (facultatif) : omettez ce champ ou définissez-le sur [] pour utiliser le DNS fourni par Amazon. Ne spécifiez pas les adresses IP du résolveur fournies par Amazon.
  • traffic_mode (requis) : SPECIFIC_DESTINATIONS ou ALL_TRAFFIC. Voir Modes de trafic.
  • destinations (requis lorsque traffic_mode est SPECIFIC_DESTINATIONS) : les noms DNS à acheminer via la passerelle.

Pour rendre la création de passerelle idempotente, ajoutez le parameter de query facultatif request_id à l’URL POST, tel que ?request_id={request_id}. Utilisez un ID unique pour chaque nouvelle passerelle et réutilisez-le lorsque vous réessayez la même requête pour retourner l’opération d’origine sans créer d’autre passerelle.

Pour créer une passerelle en mode SPECIFIC_DESTINATIONS, exécutez la commande suivante :

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": []
}'

La réponse est une opération de longue durée. Enregistrez son name, qui a la forme accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}/operations/{operation_id}. Le nom de cette opération est différent du nom de ressource de la passerelle.

Par exemple, une opération en attente inclut les champs suivants :

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

Confirmez que la passerelle est établie​

Pour interroger l’opération de création, remplacez {operation_name} par la valeur complète du champ de haut niveau name dans la réponse de création. Cette valeur start par accounts/ et se termine par operations/{operation_id}. Ajoutez-le à https://accounts.cloud.databricks.com/api/networking/v1/ comme indiqué ci-dessous :

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

Attendez que done soit true. Si l'opération contient error, résolvez le problème de provisionnement. Si elle contient response, la passerelle est établie. Une opération réussie comprend les champs suivants :

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"
}
}

Enregistrer response.name sous {gateway_name}. Pour récupérer la passerelle plus tard, utilisez son nom de ressource complet :

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

La réponse GET est la ressource de la passerelle elle-même, sans le wrapper d’opération.

Joindre la NCC à vos workspaces​

Si votre workspace est déjà joint à la NCC, passez cette étape. Une NCC est un objet régional qui ne peut être joint qu'à des workspaces situés dans la même région.

Dans la console de compte, accédez à Workspaces , sélectionnez le workspace, ouvrez Network Connectivity et joignez votre NCC. Répétez l’opération pour chaque workspace devant utiliser la passerelle.

Vous pouvez également joindre la NCC à l'aide de l'API REST du compte :

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}" }'

Configuration DNS​

Omettez private_dns_resolvers ou définissez-le sur [] pour utiliser le DNS fourni par Amazon. L'API V1 rejette les adresses de résolveur fournies par Amazon explicitement indiquées, y compris 169.254.169.253 et la base Virtual Private Cloud (VPC) CIDR plus deux.

Si vos Ressources privées sont enregistrées dans une zone hébergée privée Route 53, associez cette zone au Virtual Private Cloud (VPC) qui contient le sous-réseau de la passerelle afin que les Hostnames soient résolus correctement. Pour des besoins DNS personnalisés, contactez l'équipe de votre compte Databricks.

Gérer une passerelle​

Vous pouvez mettre à jour, supprimer et lister les passerelles avec l'API REST de compte.

Mettre à jour une passerelle​

Vous pouvez mettre à jour display_name, destinations, private_dns_resolvers et traffic_mode sur place avec une requête PATCH. Le paramètre de requête update_mask est requis et précise quels champs mettre à jour. Quand vous changez traffic_mode en ALL_TRAFFIC, effacez destinations dans la même demande. Lorsque vous basculez vers SPECIFIC_DESTINATIONS, incluez les destinations à acheminer. Pour modifier gateway_subnets, cross_account_role ou security_group_ids, supprimez la passerelle et créez-en une nouvelle.

Pour passer au DNS fourni par Amazon, incluez private_dns_resolvers dans update_mask et définissez private_dns_resolvers sur [].

Pour mettre à jour les destinations, exécutez la commande suivante :

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" } ] }'

La réponse de mise à jour est la ressource de la passerelle elle-même. Il n’est pas encapsulé dans un champ private_network_gateway.

Supprimer une passerelle​

attention

La suppression d'une passerelle coupe la connectivité aux ressources privées qui en dépendent. Confirmez qu'aucune charge de travail active ne dépend de la passerelle avant de la supprimer.

Pour supprimer la passerelle, envoyez une requête DELETE à l’endpoint de la passerelle sous votre 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>'

La réponse de suppression est vide. Les requêtes « get » suivantes renvoient NOT_FOUND, et la passerelle est omise des réponses de liste pendant que le nettoyage de l'infrastructure continue. La suppression ne renvoie pas d'opération à sonder.

Lister les passerelles​

Pour lister les passerelles réseau privées dans une NCC, envoyez une requête GET à l'endpoint de la passerelle sous votre 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>'

Lire les passerelles du tableau private_network_gateways. Si la réponse inclut next_page_token, passez cette valeur comme paramètre de query page_token dans la demande de liste suivante.

États de la passerelle​

Une passerelle signale l’un des états suivants :

État

Description

CREATING

Databricks crée l'interface réseau de la passerelle dans votre sous-réseau.

ESTABLISHED

La passerelle est prête à acheminer le trafic.

FAILED

La passerelle n’a pas pu être provisionnée. Cet état est terminal : supprimez la passerelle et créez-en une nouvelle après avoir corrigé la cause sous-jacente, telle qu’une région ou une zone de disponibilité non prise en charge.

État

Description

CREATING

Databricks crée l'interface réseau de la passerelle dans votre sous-réseau.

ESTABLISHED

La passerelle est prête à acheminer le trafic.

FAILED

La passerelle n’a pas pu être provisionnée. Cet état est terminal : supprimez la passerelle et créez-en une nouvelle après avoir corrigé la cause sous-jacente, telle qu’une région ou une zone de disponibilité non prise en charge.