Esercizio - Configurare l'ambiente sandbox
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
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')
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
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
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 leADMINLOGIN
credenziali ePASSWORD
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.
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": "" }
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 dipublicIpAddress
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 sì salva l'indirizzo IP come host valido per la connessione e consente la continuazione della connessione.
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.