Esercizio - Configurare l'ambiente sandbox

Completato

In questa unità vengono configurate le risorse usate in questo modulo. Immaginare un'architettura di base costituita da un server che ospita un'applicazione usata dai clienti. Il server si connette a un database per l'archiviazione dei dati. L'applicazione viene eseguita in una macchina virtuale.The application runs on a virtual machine (VM). Il database di recente migrato da un database di SQL Server in esecuzione in una macchina virtuale a un database nel servizio database SQL di Azure. Per illustrare come proteggere il database, configurare le risorse seguenti da usare in questo modulo:

  • Una macchina virtuale Linux denominata appServer. Questo server funge da server applicazioni a cui gli utenti si connetterebbero. Deve connettersi al database. Installare sqlcmd nella macchina virtuale per simulare un'applicazione in esecuzione in appServer che effettua connessioni al database.
  • Un server logico del database SQL di Azure. Questo server logico è necessario per ospitare uno o più database.
  • Un database nel server logico denominato marketplaceDb. È possibile crearlo usando il database demo AdventureWorksLT in modo da avere alcune tabelle e dati da usare. Questi dati includono alcuni dati sensibili, ad esempio indirizzi di posta elettronica e numeri di telefono che si desidera proteggere correttamente.

Creare un database SQL di Azure

  1. Prima di tutto, configurare alcune variabili. Sostituire i valori seguenti visualizzati in [] con valori di propria scelta. [password] Deve contenere almeno otto caratteri e contenere caratteri di almeno tre di queste categorie: caratteri maiuscoli, caratteri minuscoli, numeri e caratteri non alfanumerici. Salvare il valore per usarlo in un secondo momento.

    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. Eseguire il comando seguente per creare un nuovo server logico con database SQL di Azure.

    az sql server create \
        --name $SERVERNAME \
        --resource-group $RESOURCEGROUP \
        --location $LOCATION \
        --admin-user $ADMINLOGIN \
        --admin-password $PASSWORD
    
  3. Eseguire il comando seguente per creare il database denominato marketplaceDb nel server logico creato. Questo comando usa il database AdventureWorksLT come modello per poter usare alcune tabelle prepopolate.

    az sql db create --resource-group $RESOURCEGROUP \
        --server $SERVERNAME \
        --name marketplaceDb \
        --sample-name AdventureWorksLT \
        --service-objective Basic
    
  4. Eseguire il comando seguente per ottenere il stringa di connessione per questo database.

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

    L'output dovrebbe essere simile all'esempio seguente. Tenere a portata di mano questo comando perché è necessario questo comando per connettersi al database più avanti in questo modulo. Si notino i [username] segnaposto e [password] nel comando da sostituire con le ADMINLOGIN credenziali e PASSWORD specificate in precedenza nelle variabili.

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

Creare e configurare una macchina virtuale Linux

Creare la macchina virtuale Linux da usare tramite alcuni esempi.

  1. Eseguire il comando seguente per creare la macchina virtuale. Il completamento di questo comando potrebbe richiedere alcuni minuti.

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

    Quando il comando viene completato, verrà visualizzato output simile all'esempio seguente.

    {
      "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. Dopo che la macchina virtuale è stata creata, connettersi all'indirizzo IP pubblico di questa tramite SSH.

    ssh nnn.nnn.nnn.nnn
    

    Dove nnn.nnn.nnn.nnn è il valore dell'output di publicIpAddress nel passaggio precedente.

    Nota

    Ci sono due aspetti da considerare. In primo luogo, non è necessaria una password perché è stata generata una coppia di chiavi SSH come parte della creazione della macchina virtuale. In secondo luogo, nella prima connessione della shell alla macchina virtuale viene richiesto l'autenticità dell'host. Ciò si verifica perché ci si connette a un indirizzo IP anziché a un nome host. La risposta salva l'indirizzo IP come host valido per la connessione e consente la continuazione della connessione.

  3. Per completare l'installazione di mssql-tools nella macchina virtuale Linux, è possibile connettersi al database tramite 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
    

    Nota

    Un sacco di testo scorrerà per alcuni di questi comandi, quindi assicurarsi di selezionare Invio dopo il comando finale per assicurarsi che venga eseguito.

È stato creato un server logico database SQL di Azure, un database in tale server logico e una macchina virtuale denominata appServer che simula la connettività di rete da un server applicazioni. Esaminare quindi come proteggere correttamente il database.