Ćwiczenie — Konfigurowanie środowiska piaskownicy

Ukończone

W tej lekcji skonfigurujesz zasoby używane w tym module. Zaiwizuj podstawową architekturę, która składa się z serwera obsługującego aplikację używaną przez klientów. Serwer łączy się z bazą danych na potrzeby przechowywania danych. Aplikacja działa na maszynie wirtualnej. Baza danych została niedawno zmigrowana z bazy danych programu SQL Server uruchomionej na maszynie wirtualnej do bazy danych w usłudze Azure SQL Database. Aby pokazać, jak można zabezpieczyć bazę danych, skonfiguruj następujące zasoby do użycia w tym module:

  • Maszyna wirtualna z systemem Linux o nazwie appServer. Ten serwer działa jako serwer aplikacji, z którymi użytkownicy będą się łączyć. Musi nawiązać połączenie z bazą danych. Zainstaluj sqlcmd na maszynie wirtualnej, aby zasymulować aplikację działającą na maszynie appServer wykonującej połączenia z bazą danych.
  • Serwer logiczny usługi Azure SQL Database. Ten serwer logiczny jest potrzebny, aby hostować co najmniej jedną bazę danych.
  • Baza danych na serwerze logicznym o nazwie marketplaceDb. Tworzysz ją przy użyciu demonstracyjnej bazy danych AdventureWorksLT , aby móc pracować z niektórymi tabelami i danymi. Te dane obejmują pewne poufne dane, takie jak adresy e-mail i numery telefonów, które mają być prawidłowo zabezpieczone.

Tworzenie bazy danych SQL platformy Azure

  1. Najpierw skonfiguruj niektóre zmienne. Zastąp następujące wartości, które są wyświetlane w [] pliku z wybranymi wartościami. Musi [password] zawierać co najmniej osiem znaków i zawierać znaki z co najmniej trzech z tych kategorii: wielkie litery, małe litery, cyfry i znaki niefanumeryczne. Zapisz wartość do użycia później.

    export ADMINLOGIN='[ServerAdmin]'
    export PASSWORD='[password]'
    export SERVERNAME=[server-name]
    export RESOURCEGROUP=<rgn>[sandbox resource group name]</rgn>
    export LOCATION=$(az group show --name $RESOURCEGROUP | jq -r '.location')
    
  2. Uruchom następujące polecenie, aby utworzyć nowy serwer logiczny usługi Azure SQL Database.

    az sql server create \
        --name $SERVERNAME \
        --resource-group $RESOURCEGROUP \
        --location $LOCATION \
        --admin-user $ADMINLOGIN \
        --admin-password $PASSWORD
    
  3. Uruchom następujące polecenie, aby utworzyć bazę danych o nazwie marketplaceDb na utworzonym serwerze logicznym. To polecenie używa bazy danych AdventureWorksLT jako szablonu, więc niektóre wstępnie wypełnione tabele do pracy.

    az sql db create --resource-group $RESOURCEGROUP \
        --server $SERVERNAME \
        --name marketplaceDb \
        --sample-name AdventureWorksLT \
        --service-objective Basic
    
  4. Uruchom następujące polecenie, aby uzyskać parametry połączenia dla tej bazy danych.

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

    Dane wyjściowe powinny przypominać poniższy przykład. Zachowaj to polecenie przydatne, ponieważ to polecenie jest potrzebne do nawiązania połączenia z bazą danych w dalszej części tego modułu. Zanotuj [username] symbole zastępcze i [password] w poleceniu, które chcesz zamienić na ADMINLOGIN poświadczenia i PASSWORD określone wcześniej w zmiennych.

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

Tworzenie i konfigurowanie maszyny wirtualnej z systemem Linux

Utwórz maszynę wirtualną z systemem Linux, która będzie używana za pomocą niektórych przykładów.

  1. Uruchom następujące polecenie, aby utworzyć bazę danych: Wykonanie tego polecenia może potrwać kilka minut.

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

    Po zakończeniu tego polecenia powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu.

    {
      "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. Po pomyślnym utworzeniu maszyny wirtualnej połącz się z publicznym adresem IP przy użyciu protokołu SSH.

    ssh nnn.nnn.nnn.nnn
    

    Gdzie nnn.nnn.nnn.nnn jest wartością z danych wyjściowych elementu publicIpAddress w poprzednim kroku.

    Uwaga

    Pamiętaj o dwóch rzeczach. Najpierw nie potrzebujesz hasła, ponieważ w ramach tworzenia maszyny wirtualnej wygenerowano parę kluczy SSH. Po drugie, podczas pierwszego połączenia powłoki z maszyną wirtualną zostanie wyświetlony monit o autentyczność hosta. Dzieje się tak, ponieważ nawiązujesz połączenie z adresem IP zamiast z nazwą hosta. Odpowiedź tak zapisuje adres IP jako prawidłowy host połączenia i umożliwia kontynuowanie połączenia.

  3. Zakończ elementy, instalując narzędzia mssql-tools na maszynie wirtualnej z systemem Linux, aby można było nawiązać połączenie z bazą danych za pomocą narzędzia 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
    

    Uwaga

    W przypadku niektórych z tych poleceń przewija się wiele tekstu, dlatego upewnij się, że po ostatnim poleceniu wybierzesz Enter , aby upewnić się, że jest on uruchamiany.

Utworzono serwer logiczny usługi Azure SQL Database, bazę danych na tym serwerze logicznym i maszynę wirtualną o nazwie appServer , która symuluje łączność sieciową z serwera aplikacji. Następnie przyjrzyj się, jak prawidłowo zabezpieczyć bazę danych.