Exercice : Configurer Azure SQL Database

Effectué

Dans cette unité, vous allez déployer un serveur logique Azure SQL et créer des bases de données afin d’utiliser les fonctionnalités décrites pour sécuriser votre base de données Azure SQL.

Configurer : Utiliser des scripts pour déployer Azure SQL Database

Ci-contre à droite se trouve Azure Cloud Shell, un moyen d’interagir avec Azure à l’aide d’un navigateur. Avant de commencer l’exercice, vous exécutez un script dans Cloud Shell pour créer votre environnement avec l’exemple de base de données AdventureWorks dans Azure SQL Database. Dans le script, vous êtes invité à entrer un mot de passe pour la nouvelle base de données et votre adresse IP locale pour permettre à votre appareil de se connecter à la base de données.

L’exécution de ces scripts prend trois à cinq minutes. Veillez à noter vos valeurs password, unique ID et region, car elles ne seront plus affichées après cela.

  1. Commencez par obtenir votre adresse IP locale. Vérifiez que vous êtes déconnecté de tout service VPN, puis ouvrez un terminal PowerShell local sur votre appareil. Exécutez la commande suivante et notez l’adresse IP qui en résulte.

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    
  2. Exécutez les commandes suivantes dans Cloud Shell. Entrez un mot de passe complexe et, à l’invite, entrez votre adresse IP publique locale, que vous avez obtenue à l’étape précédente. Remplacez « [nom du groupe de ressources de bac à sable] » par « [nom du groupe de ressources de bac à sable] ».

    $adminSqlLogin = "cloudadmin"
    $password = Read-Host "Your username is 'cloudadmin'. Enter a password for your Azure SQL Database server that meets the password requirements"
    # Prompt for local ip address
    $ipAddress = Read-Host "Disconnect your VPN, open PowerShell on your machine and run '(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content'. Enter the value (include periods) next to 'Address' " 
    # Get resource group and location and random string
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like "[sandbox resource group name]"
    $resourceGroupName = "[sandbox resource group name]"
    $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000
    $storageAccountName = "mslearnsa"+$uniqueID
    $location = $resourceGroup.Location
    # The logical server name has to be unique in the system
    $serverName = "aw-server$($uniqueID)"
    
  3. Stockez dans un fichier texte les informations dont vous aurez besoin tout au long du module en exécutant le code suivant dans Cloud Shell. Vous devrez probablement appuyer sur Enter après avoir collé le code, car la dernière ligne n’est pas exécutée par défaut.

    Write-Host "Your unique ID for future exercises in this module:" $uniqueID
    Write-Host "Your resource group name is:" $resourceGroupName
    Write-Host "Your resources were deployed in the following region:" $location
    Write-Host "Your server name is:" $serverName
    

    Notes

    N’oubliez pas de noter vos valeurs password, unique ID et region. Vous les utiliserez tout au long du module.

  4. Exécutez le script suivant pour déployer un serveur logique Azure SQL Database avec l’exemple AdventureWorks, ainsi qu’une base de données de registre que nous abordons dans de prochaines unités. Le script ajoute également votre adresse IP en tant que règle de pare-feu, active Microsoft Defender pour SQL et crée un compte de stockage à utiliser dans de prochaines unités. Patientez un certain temps jusqu’à la fin de l’exécution de ce script.

    # The sample database name
    $databaseName = "AdventureWorks"
    # The ledger database name
    $databaseName2 = "myLedgerDatabase"
    # The storage account name has to be unique in the system
    $storageAccountName = $("sql$($uniqueID)")
    # Create a new server with a system wide unique server name
    $server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -Location $location `
        -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
    # Create a server firewall rule that allows access from the specified IP range and all Azure services
    $serverFirewallRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -FirewallRuleName "AllowedIPs" `
        -StartIpAddress $ipAddress -EndIpAddress $ipAddress 
    $allowAzureIpsRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -AllowAllAzureIPs
    # Create databases
    $database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName `
        -SampleName "AdventureWorksLT" `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    $database2 = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName2 `
        -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5"
    # Enable Microsoft Defender for SQL
    $azureDefender = Enable-AzSqlServerAdvancedDataSecurity `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName
    # Create a storage account
    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
        -AccountName $storageAccountName `
        -Location $location `
        -Type "Standard_LRS"
    
  5. Ouvrez SQL Server Management Studio (SSMS), puis créez une connexion à votre serveur logique. Pour le Nom du serveur, entrez celui de votre serveur logique Azure SQL Database (par exemple, aw-server<unique ID>.database.windows.net). Si vous n’avez pas enregistré ce nom précédemment, accédez éventuellement au portail Azure pour l’obtenir.

    Dans le portail Azure, recherchez AdventureWorks pour rechercher votre base de données et son serveur logique associé.

    Remplacez l’authentification par Authentification SQL Server, puis entrez les informations de connexion d’administrateur et le mot de passe correspondants du serveur, que vous avez fournis lors du déploiement dans l’exercice précédent.

    Cochez la case Mémoriser le mot de passe, puis sélectionnez Connecter.

    Capture d’écran montrant comment se connecter à SQL Database dans SSMS.

    Notes

    En fonction de votre configuration locale (par exemple, VPN), l’adresse IP de votre client peut différer de l’adresse IP que le portail Azure a utilisé lors du déploiement. Si c’est le cas, un message s’affiche indiquant « Votre adresse IP cliente n’a pas accès au serveur. Connectez-vous à un compte Azure et créez une nouvelle règle de pare-feu pour activer l’accès. Si vous recevez ce message, connectez-vous avec le compte que vous utilisez pour le bac à sable (sandbox) et ajoutez une règle de pare-feu pour l’adresse IP de votre client. Vous pouvez effectuer toutes ces étapes en utilisant l’Assistant contextuel dans SSMS.

  6. Une fois connecté à votre serveur logique Azure SQL, développez le dossier Bases de données.

  7. Vous devez voir les deux bases de données qui ont été créées, AdventureWorks et myLedgerDatabase. Cliquez avec le bouton droit sur la base de données myLedgerDatabase et sélectionnez Nouvelle requête, puis exécutez la commande suivante pour créer une table nommée Account.Balance. Vous pouvez exécuter la requête en sélectionnant Exécuter dans la barre des tâches.

    CREATE SCHEMA [Account];
    GO  
    CREATE TABLE [Account].[Balance]
    (
        [CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED,
        [LastName] VARCHAR (50) NOT NULL,
        [FirstName] VARCHAR (50) NOT NULL,
        [Balance] DECIMAL (10,2) NOT NULL
    )
    WITH 
    (
     SYSTEM_VERSIONING = ON (HISTORY_TABLE = [Account].[BalanceHistory]),
     LEDGER = ON
    );