Exercice : Configurer un environnement de bac à sable (sandbox)

Effectué

Dans cette unité, vous configurez les ressources que vous utilisez tout au long de ce module. Envisagez une architecture de base qui se compose d’un serveur hébergeant une application que vos clients utilisent. Le serveur se connecte à une base de données pour le stockage de ses données. L’application s’exécute sur une machine virtuelle. La base de données a récemment migré d’une base de données SQL Server s’exécutant sur une machine virtuelle vers une base de données sur le service Azure SQL Database. Pour vous montrer de quelle manière sécuriser votre base de données, configurez les ressources suivantes que vous utiliserez dans ce module :

  • Une machine virtuelle Linux nommée appServer. Ce serveur agit en tant que serveur d’applications auquel les utilisateurs se connectent. Il doit se connecter à la base de données. Installez sqlcmd sur la machine virtuelle pour simuler une application exécutée sur appServer qui établit les connexions à la base de données.
  • Un serveur logique Azure SQL Database. Ce serveur logique est nécessaire pour héberger une ou plusieurs bases de données.
  • Une base de données sur votre serveur logique appelée marketplaceDb. Vous la créez à partir de la base de données de démonstration AdventureWorksLT afin d’avoir déjà quelques tables et données à utiliser. Ces données comprennent des données sensibles, comme des adresses e-mail et des numéros de téléphone, que vous souhaitez sécuriser correctement.

Créer une base de données Azure SQL Database

  1. Tout d’abord, définissez des variables. Remplacez les valeurs suivantes entre [] par les valeurs de votre choix. Le [password] doit comporter au moins huit caractères, lesquels doivent appartenir à au moins trois des catégories suivantes : majuscules, minuscules, chiffres et caractères non alphanumériques. Enregistrez la valeur à utiliser ultérieurement.

    export ADMINLOGIN='[ServerAdmin]'
    export PASSWORD='[password]'
    export SERVERNAME=server$RANDOM
    export RESOURCEGROUP=<rgn>[sandbox resource group name]</rgn>
    export LOCATION=$(az group show --name $RESOURCEGROUP | jq -r '.location')
    
  2. Exécutez la commande suivante pour créer un serveur logique Azure SQL Database.

    az sql server create \
        --name $SERVERNAME \
        --resource-group $RESOURCEGROUP \
        --location $LOCATION \
        --admin-user $ADMINLOGIN \
        --admin-password $PASSWORD
    
  3. Exécutez la commande suivante pour créer la base de données appelée marketplaceDb sur le serveur logique que vous avez créé. Cette commande utilise la base de données AdventureWorksLT comme modèle pour que vous ayez des tables préremplies à utiliser.

    az sql db create --resource-group $RESOURCEGROUP \
        --server $SERVERNAME \
        --name marketplaceDb \
        --sample-name AdventureWorksLT \
        --service-objective Basic
    
  4. Exécutez la commande suivante pour obtenir la chaîne de connexion de cette base de données.

    az sql db show-connection-string --client sqlcmd --name marketplaceDb --server $SERVERNAME | jq -r
    

    Votre sortie doit ressembler à l’exemple suivant. Gardez cette commande à portée de main, car vous aurez besoin de celle-ci pour vous connecter à votre base de données plus loin dans ce module. Notez les espaces réservés [username] et [password] dans la commande que vous souhaitez remplacer par les informations d’identification ADMINLOGIN et PASSWORD que vous avez spécifiées précédemment dans des variables.

    sqlcmd -S tcp:server12345.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

Créer et configurer une machine virtuelle Linux

Créez la machine virtuelle linux à utiliser par le biais de quelques exemples.

  1. Exécutez la commande suivante pour créer la machine virtuelle. L’exécution de cette commande peut prendre plusieurs minutes.

    az vm create \
      --resource-group $RESOURCEGROUP \
      --name appServer \
      --image Ubuntu2204 \
      --size Standard_DS2_v2 \
      --public-ip-sku Standard \
      --generate-ssh-keys
    

    Une fois la commande exécutée, vous devez voir une sortie semblable à l’exemple suivant.

    {
      "fqdns": "",
      "id": "/subscriptions/nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn/resourceGroups/learn-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn/providers/Microsoft.Compute/virtualMachines/appServer",
      "location": "westus",
      "macAddress": "nn-nn-nn-nn-nn-nn",
      "powerState": "VM running",
      "privateIpAddress": "nn.nn.nn.nn",
      "publicIpAddress": "nnn.nnn.nnn.nnn",
      "resourceGroup": "learn-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn",
      "zones": ""
    }
    
  2. Après avoir créé la machine virtuelle, connectez-vous à son adresse IP publique à l’aide de SSH.

    ssh nnn.nnn.nnn.nnn
    

    nnn.nnn.nnn.nnn est la valeur de la sortie publicIpAddress à l’étape précédente.

    Notes

    Deux points sont à noter. Tout d’abord, vous n’avez pas besoin d’un mot de passe, car vous avez généré une paire de clés SSH dans le cadre de la création de la machine virtuelle. Ensuite, lors de la première connexion de l’interpréteur de commandes sur la machine virtuelle, une invite s’affiche concernant l’authenticité de l’hôte. Cela se produit car vous vous connectez à une adresse IP au lieu d’un nom d’hôte. Si vous répondez oui, l’adresse IP est enregistrée en tant qu’hôte valide pour la connexion, et la connexion peut être établie.

  3. Pour finir, installez mssql-tools sur la machine virtuelle linux afin de permettre la connexion à votre base de données par le biais de sqlcmd.

    echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
    echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
    source ~/.bashrc
    curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
    curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
    sudo apt-get update
    sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18 unixodbc-dev
    

    Remarque

    Une quantité importante de texte défilera pour certaines de ces commandes. Veillez donc à appuyer sur la touche Entrée après la dernière commande pour être sûr qu’elle s’exécute.

Vous avez créé un serveur logique Azure SQL Database, une base de données sur ce serveur logique, et une machine virtuelle appelée appServer qui simule la connectivité réseau à partir d’un serveur d’applications. Ensuite, examinez comment sécuriser correctement votre base de données.