練習 - 設定沙箱環境
在本單元中,您會設定在整個課程模組中使用的資源。 設想基本架構,其中包含裝載客戶所使用之應用程式的伺服器。 伺服器會連線到資料庫,以儲存其資料。 應用程式會在虛擬機器 (VM) 上執行。 該資料庫最近從 VM 上執行的 SQL Server 資料庫移轉至 Azure SQL Database 服務上的資料庫。 為了說明如何保護您的資料庫,請設定在這個課程模組中使用的下列資源:
- 名稱為 appServer 的 Linux VM。 此伺服器可做為使用者所連線的應用程式伺服器。 它必須連線到資料庫。 在 VM 上安裝
sqlcmd
以模擬在 appServer 上執行的應用程式建立與資料庫的連線。 - Azure SQL Database 邏輯伺服器。 裝載一或多個資料庫需要此邏輯伺服器。
- 您的邏輯伺服器上的資料庫稱為 marketplaceDb。 您會使用 AdventureWorksLT 示範資料庫來加以建立,以便可以使用一些資料表和資料。 此資料包含一些敏感資料,例如您想要正確保護的電子郵件地址和電話號碼。
建立 Azure SQL Database
首先,設定一些變數。 將下列
[]
中顯示的值取代為您選擇的值。[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')
執行下列命令,以建立新的 Azure SQL Database 邏輯伺服器。
az sql server create \ --name $SERVERNAME \ --resource-group $RESOURCEGROUP \ --location $LOCATION \ --admin-user $ADMINLOGIN \ --admin-password $PASSWORD
執行下列命令以在您所建立的邏輯伺服器上建立稱為 marketplaceDb 的資料庫。 此命令會使用 AdventureWorksLT 資料庫做為範本,因此您會有一些預先填入的資料表可以使用。
az sql db create --resource-group $RESOURCEGROUP \ --server $SERVERNAME \ --name marketplaceDb \ --sample-name AdventureWorksLT \ --service-objective Basic
執行下列命令以取得此資料庫的連接字串。
az sql db show-connection-string --client sqlcmd --name marketplaceDb --server $SERVERNAME | jq -r
您的輸出應該類似下列範例。 請記住此命令,因為您稍後需要此命令才能連線到此課程模組中的資料庫。 記住命令中的
[username]
與[password]
預留位置,您會使用稍早在變數中指定的ADMINLOGIN
與PASSWORD
認證加以取代。sqlcmd -S tcp:server12345.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
建立並設定 Linux 虛擬機器
透過一些範例建立要使用的 Linux VM。
執行下列命令建立 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": "" }
在成功建立您的 VM 後,請使用 SSH 連線到其公用 IP 位址。
ssh nnn.nnn.nnn.nnn
其中
nnn.nnn.nnn.nnn
是上一個步驟中publicIpAddress
輸出的值。注意
請注意以下兩點。 首先,您不需要密碼,因為您在建立 VM 時已產生 SSH 金鑰組。 第二,第一次使用殼層連線到 VM 時,系統會提示您要求確認主機的真確性。 這是因為您連線到 IP 位址,而非主機名稱。 回答「是」會將 IP 位址儲存為連線的有效主機,並允許繼續進行連線。
在 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 的虛擬機器,該虛擬機器模擬來自應用程式伺服器的網路連線。 接下來,看看如何適當保護您的資料庫。