練習 - 設定沙箱環境

已完成

在本單元中,您會設定在整個課程模組中使用的資源。 設想基本架構,其中包含裝載客戶所使用之應用程式的伺服器。 伺服器會連線到資料庫,以儲存其資料。 應用程式會在虛擬機器 (VM) 上執行。 該資料庫最近從 VM 上執行的 SQL Server 資料庫移轉至 Azure SQL Database 服務上的資料庫。 為了說明如何保護您的資料庫,請設定在這個課程模組中使用的下列資源:

  • 名稱為 appServer 的 Linux VM。 此伺服器可做為使用者所連線的應用程式伺服器。 它必須連線到資料庫。 在 VM 上安裝 sqlcmd 以模擬在 appServer 上執行的應用程式建立與資料庫的連線。
  • Azure SQL Database 邏輯伺服器。 裝載一或多個資料庫需要此邏輯伺服器。
  • 您的邏輯伺服器上的資料庫稱為 marketplaceDb。 您會使用 AdventureWorksLT 示範資料庫來加以建立,以便可以使用一些資料表和資料。 此資料包含一些敏感資料,例如您想要正確保護的電子郵件地址和電話號碼。

建立 Azure SQL Database

  1. 首先,設定一些變數。 將下列 [] 中顯示的值取代為您選擇的值。 [password] 至少必須要有八個字元,而且至少包含下列幾種字元的其中三種︰大寫字元、小寫字元、數字和非英數字元。 儲存該值以供稍後使用。

    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. 執行下列命令,以建立新的 Azure SQL Database 邏輯伺服器。

    az sql server create \
        --name $SERVERNAME \
        --resource-group $RESOURCEGROUP \
        --location $LOCATION \
        --admin-user $ADMINLOGIN \
        --admin-password $PASSWORD
    
  3. 執行下列命令以在您所建立的邏輯伺服器上建立稱為 marketplaceDb 的資料庫。 此命令會使用 AdventureWorksLT 資料庫做為範本,因此您會有一些預先填入的資料表可以使用。

    az sql db create --resource-group $RESOURCEGROUP \
        --server $SERVERNAME \
        --name marketplaceDb \
        --sample-name AdventureWorksLT \
        --service-objective Basic
    
  4. 執行下列命令以取得此資料庫的連接字串。

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

    您的輸出應該類似下列範例。 請記住此命令,因為您稍後需要此命令才能連線到此課程模組中的資料庫。 記住命令中的 [username][password] 預留位置,您會使用稍早在變數中指定的 ADMINLOGINPASSWORD 認證加以取代。

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

建立並設定 Linux 虛擬機器

透過一些範例建立要使用的 Linux VM。

  1. 執行下列命令建立 VM。 此命令可能需要幾分鐘的時間才能完成。

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

    當此命令完成時,您應該會看到類似下列範例的輸出。

    {
      "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. 在成功建立您的 VM 後,請使用 SSH 連線到其公用 IP 位址。

    ssh nnn.nnn.nnn.nnn
    

    其中 nnn.nnn.nnn.nnn 是上一個步驟中 publicIpAddress 輸出的值。

    注意

    請注意以下兩點。 首先,您不需要密碼,因為您在建立 VM 時已產生 SSH 金鑰組。 第二,第一次使用殼層連線到 VM 時,系統會提示您要求確認主機的真確性。 這是因為您連線到 IP 位址,而非主機名稱。 回答「是」會將 IP 位址儲存為連線的有效主機,並允許繼續進行連線。

  3. 在 Linux VM 上安裝 mssql-tools 來完成任務,以便您可以透過 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
    

    注意

    針對這些命令中的某些命令,有許多文字將會捲動,因此請務必在最終命令之後選取 Enter 以確定命令會執行。

您已建立 Azure SQL Database 邏輯伺服器、該邏輯伺服器上的資料庫,以及名為 appServer 的虛擬機器,該虛擬機器模擬來自應用程式伺服器的網路連線。 接下來,看看如何適當保護您的資料庫。