Configurer une passerelle réseau privée
Aperçu privé
La passerelle réseau privée est en aperçu privé. Pour demander l’accès, contactez l’équipe de votre compte Databricks.
Cet article décrit comment configurer et gérer une passerelle de réseau privé à l’aide de l’API REST de compte. Pour un aperçu de ce qu’est une passerelle de réseau privé et de son fonctionnement, consultez Passerelle de réseau privé.
Avant de commencer
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
/28constitue 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.
- L'adresse IP d'un résolveur DNS accessible depuis le sous-réseau de la passerelle. Lorsque vous utilisez le DNS fourni par Amazon, il s'agit de l'adresse VPC+2 (par exemple,
10.0.0.2si votre CIDR de Virtual Private Cloud (VPC) est10.0.0.0/16), ou de l'adresse link-local169.254.169.253.
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’y a pas de prise en charge de l’interface utilisateur ou de Terraform pendant l’Aperçu privé.
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.
-
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 :
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' -
Créez une NCC, exécutez la commande suivante :
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" }'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.
- Une adresse IP de résolveur DNS accessible depuis le sous-réseau de la passerelle. Vous pouvez utiliser le résolveur VPC AWS à l’adresse
169.254.169.253, la base CIDR du VPC plus deux (par exemple,10.0.0.2pour un VPC10.0.0.0/16), un endpoint de résolveur Route 53 ou votre serveur DNS personnalisé.
Le sous-réseau, le groupe de sécurité et le résolveur DNS doivent se trouver dans, ou être accessibles depuis, le même Virtual Private Cloud (VPC) et la même région que votre NCC et vos workspaces cibles.
Créer le rôle IAM inter-comptes
-
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.
-
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>"
}
}
}
]
} -
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"
}
}
},
{
"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" }
}
}
]
}Le compte AWS 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 ; la portée la plus restreinte disponible est donc le compte et la région. Accordez la politique dans son intégralité. Toutes les instructions sont requises. Il s’agit d’une politique unique compatible avec les versions ultérieures pour le provisionnement et la gestion de la passerelle ; vous configurez donc le rôle une seule fois et n’avez pas besoin de le mettre à jour à mesure que la passerelle évolue.
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 :
gateway_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(requis) : les adresses IP du résolveur DNS que vous avez identifiées lors de la préparation de votre réseau Virtual Private Cloud (VPC).traffic_mode(requis) :SPECIFIC_DESTINATIONSouALL_TRAFFIC. Voir Modes de trafic.destinations(requis lorsquetraffic_modeestSPECIFIC_DESTINATIONS) : les noms DNS à acheminer via la passerelle.
Pour créer une passerelle en mode SPECIFIC_DESTINATIONS, exécutez la commande suivante :
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" }
]
}'
La passerelle est créée dans l'état CREATING. Il passe à ESTABLISHED une fois que Databricks a créé l'interface réseau de la passerelle dans votre sous-réseau, ce qui prend généralement moins de deux minutes.
Confirmez que la passerelle est établie
Pour vérifier l'état de la passerelle, envoyez une requête GET jusqu'à ce que state soit 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>'
Confirmez que state est ESTABLISHED avant de continuer.
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 :
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
Une passerelle utilise le résolveur que vous spécifiez dans private_dns_resolvers pour résoudre les Hostnames des destinations que vous configurez. Le résolveur doit être joignable depuis le sous-réseau de la passerelle.
Si vos ressources privées sont enregistrées dans une zone hébergée privée Route 53, associez cette zone au VPC qui contient le sous-réseau de la passerelle afin que les hostnames soient résolus correctement. Pour utiliser le résolveur AWS Virtual Private Cloud (VPC) intégré, spécifiez 169.254.169.253 ou la base CIDR du Virtual Private Cloud (VPC) plus deux. Si vous avez des zones privées personnalisées avec des noms qui se chevauchent, utilisez plutôt votre propre résolveur.
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 gateway_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 mettre à jour les destinations, exécutez la commande suivante :
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" } ] }'
Supprimer une passerelle
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 :
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>'
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 :
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>'
États de la passerelle
Une passerelle signale l’un des états suivants :
État | Description |
|---|---|
| Databricks crée l'interface réseau de la passerelle dans votre sous-réseau. |
| La passerelle est prête à acheminer le trafic. |
| La passerelle est en cours de suppression. |
| 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. |