Démarrage rapide : Créer une instance Private Endpoint à l’aide de Bicep
Dans ce guide de démarrage rapide, vous allez utiliser Bicep pour créer un point de terminaison privé.
Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.
Vous pouvez également créer un point de terminaison privé à l'aide du portail Azure, d’Azure PowerShell, d’Azure CLI ou d'un modèle Azure Resource Manager.
Prérequis
Vous devez avoir un compte Azure avec un abonnement actif. Si vous n’avez pas encore de compte Azure, créez-en un gratuitement.
Examiner le fichier Bicep
Ce fichier Bicep crée un point de terminaison privé pour une instance d’Azure SQL Database.
Le fichier Bicep que nous utilisons dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide Azure.
@description('The administrator username of the SQL logical server')
param sqlAdministratorLogin string
@description('The administrator password of the SQL logical server.')
@secure()
param sqlAdministratorLoginPassword string
@description('Username for the Virtual Machine.')
param vmAdminUsername string
@description('Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)')
@secure()
param vmAdminPassword string
@description('The size of the VM')
param VmSize string = 'Standard_D2_v3'
@description('Location for all resources.')
param location string = resourceGroup().location
var vnetName = 'myVirtualNetwork'
var vnetAddressPrefix = '10.0.0.0/16'
var subnet1Prefix = '10.0.0.0/24'
var subnet1Name = 'mySubnet'
var sqlServerName = 'sqlserver${uniqueString(resourceGroup().id)}'
var databaseName = '${sqlServerName}/sample-db'
var privateEndpointName = 'myPrivateEndpoint'
var privateDnsZoneName = 'privatelink${environment().suffixes.sqlServerHostname}'
var pvtEndpointDnsGroupName = '${privateEndpointName}/mydnsgroupname'
var vmName = take('myVm${uniqueString(resourceGroup().id)}', 15)
var publicIpAddressName = '${vmName}PublicIP'
var networkInterfaceName = '${vmName}NetInt'
var osDiskType = 'StandardSSD_LRS'
resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
name: sqlServerName
location: location
tags: {
displayName: sqlServerName
}
properties: {
administratorLogin: sqlAdministratorLogin
administratorLoginPassword: sqlAdministratorLoginPassword
version: '12.0'
publicNetworkAccess: 'Disabled'
}
}
resource database 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
name: databaseName
location: location
sku: {
name: 'Basic'
tier: 'Basic'
capacity: 5
}
tags: {
displayName: databaseName
}
properties: {
collation: 'SQL_Latin1_General_CP1_CI_AS'
maxSizeBytes: 104857600
sampleName: 'AdventureWorksLT'
}
dependsOn: [
sqlServer
]
}
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: subnet1Name
properties: {
addressPrefix: subnet1Prefix
privateEndpointNetworkPolicies: 'Disabled'
}
}
resource privateEndpoint 'Microsoft.Network/privateEndpoints@2021-05-01' = {
name: privateEndpointName
location: location
properties: {
subnet: {
id: subnet.id
}
privateLinkServiceConnections: [
{
name: privateEndpointName
properties: {
privateLinkServiceId: sqlServer.id
groupIds: [
'sqlServer'
]
}
}
]
}
dependsOn: [
vnet
]
}
resource privateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = {
name: privateDnsZoneName
location: 'global'
properties: {}
dependsOn: [
vnet
]
}
resource privateDnsZoneLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
parent: privateDnsZone
name: '${privateDnsZoneName}-link'
location: 'global'
properties: {
registrationEnabled: false
virtualNetwork: {
id: vnet.id
}
}
}
resource pvtEndpointDnsGroup 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2021-05-01' = {
name: pvtEndpointDnsGroupName
properties: {
privateDnsZoneConfigs: [
{
name: 'config1'
properties: {
privateDnsZoneId: privateDnsZone.id
}
}
]
}
dependsOn: [
privateEndpoint
]
}
resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicIpAddressName
location: location
tags: {
displayName: publicIpAddressName
}
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkInterfaceName
location: location
tags: {
displayName: networkInterfaceName
}
properties: {
ipConfigurations: [
{
name: 'ipConfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIpAddress.id
}
subnet: {
id: subnet.id
}
}
}
]
}
dependsOn: [
vnet
]
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmName
location: location
tags: {
displayName: vmName
}
properties: {
hardwareProfile: {
vmSize: VmSize
}
osProfile: {
computerName: vmName
adminUsername: vmAdminUsername
adminPassword: vmAdminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
name: '${vmName}OsDisk'
caching: 'ReadWrite'
createOption: 'FromImage'
managedDisk: {
storageAccountType: osDiskType
}
diskSizeGB: 128
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
}
}
Le fichier Bicep définit plusieurs ressources Azure :
- Microsoft.Sql/servers : l’instance de SQL Database contenant l’exemple de base de données.
- Microsoft.Sql/servers/databases : l’exemple de base de données.
- Microsoft.Network/virtualNetworks : le réseau virtuel sur lequel le point de terminaison privé est déployé.
- Microsoft.Network/privateEndpoints : point de terminaison privé que vous utilisez pour accéder à l’instance de SQL Database.
- Microsoft.Network/privateDnsZones : La zone utilisée pour résoudre l’adresse IP du point de terminaison privé.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups : groupe de zones que vous utilisez pour associer le point de terminaison privé à une zone DNS privée.
- Microsoft.Network/publicIpAddresses : adresse IP publique que vous utilisez pour accéder à la machine virtuelle.
- Microsoft.Network/networkInterfaces : l’interface réseau de la machine virtuelle.
- Microsoft.Compute/virtualMachines : machine virtuelle que vous utilisez pour tester la connexion du point de terminaison privé à l’instance de SQL Database.
Déployer le fichier Bicep
Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.
Déployez le fichier Bicep à l’aide d’Azure CLI ou d’Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters sqlAdministratorLogin=<admin-login> vmAdminUsername=<vm-login>
Notes
Remplacez <admin-login> par le nom d'utilisateur du serveur logique SQL. Remplacez <vm-login> par le nom d’utilisateur de la machine virtuelle. Il vous sera demandé de saisir sqlAdministratorLoginPassword. Vous serez également invité à entrer vmAdminPassword, qui doit comporter au moins 12 caractères et au moins un caractère minuscule, un caractère majuscule et un caractère spécial.
Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.
Valider le déploiement
Notes
Le fichier Bicep génère un nom unique pour la ressource de la machine virtuelle myVm{uniqueid} et pour celle de SQL Database sqlserver{uniqueid}. Remplacez la valeur générée pour {uniqueid} .
Se connecter à une machine virtuelle à partir d’Internet
Connectez-vous à la machine virtuelle myVm{uniqueid} via Internet en procédant comme suit :
Dans la barre de recherche du portail Azure, saisissez myVm{uniqueid}.
Sélectionnez Connecter. Se connecter à une machine virtuelle s’ouvre.
Sélectionnez Télécharger le fichier RDP. Azure crée un fichier RDP (Remote Desktop Protocol) et le télécharge sur votre ordinateur.
Ouvrez le fichier .rdp téléchargé.
a. Si vous y êtes invité, sélectionnez Se connecter.
b. Entrez le nom d’utilisateur et le mot de passe que vous avez indiqué lors de la création de la machine virtuelle.Notes
Vous devrez peut-être sélectionner Plus de choix>Utiliser un autre compte pour spécifier les informations d’identification que vous avez entrées lors de la création de la machine virtuelle.
Sélectionnez OK.
Un avertissement de certificat peut s’afficher pendant le processus de connexion. Si vous en recevez un, sélectionnez Oui ou Continuer.
Une fois le bureau de la machine virtuelle affiché, réduisez-le pour revenir à votre poste de travail local.
Accéder au serveur SQL Database en privé à partir de la machine virtuelle
Voici comment vous allez vous connecter au serveur SQL Database depuis la machine virtuelle en utilisant le point de terminaison privé :
Dans le Bureau à distance de myVM{uniqueid}, ouvrez PowerShell.
Exécutez la commande suivante :
nslookup sqlserver{uniqueid}.database.windows.net
Vous recevez un message similaire à celui-ci :
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: sqlserver.privatelink.database.windows.net Address: 10.0.0.5 Aliases: sqlserver.database.windows.net
Installez SQL Server Management Studio.
Dans le volet Se connecter au serveur, procédez comme suit :
- Pour Type de serveur, sélectionnez Moteur de base de données.
- Pour Nom du serveur, sélectionnez sqlserver{uniqueid}.database.windows.net.
- Pour Nom d’utilisateur, entrez le nom d’utilisateur fourni précédemment.
- Pour Mot de passe, entrez le mot de passe fourni précédemment.
- Pour Mémoriser le mot de passe, sélectionnez Oui.
Sélectionnez Connecter.
Dans le volet gauche, sélectionnez Bases de données. Si vous le souhaitez, vous pouvez créer ou interroger des informations à partir de sample-db.
Fermez la connexion du Bureau à distance à myVm{uniqueid} .
Nettoyer les ressources
Quand vous n’avez plus besoin des ressources que vous avez créées avec le service de liaison privée, supprimez le groupe de ressources. Cette action supprime le service de liaison privée et toutes les ressources qui y sont associées.
az group delete --name exampleRG
Étapes suivantes
Pour plus d’informations sur les services qui prennent en charge les points de terminaison privés, consultez :