演習 - サンドボックス環境の設定
このユニットでは、このモジュール全体で使用するリソースを設定します。 顧客が使用するアプリケーションをホストするサーバーで構成される基本的なアーキテクチャを想像してみてください。 サーバーは、データを格納するためにデータベースに接続されています。 アプリケーションは、仮想マシン (VM) で実行されています。 データベースは、最近、VM で実行されている SQL Server データベースから Azure SQL Database サービス上のデータベースに移行されました。 データベースをセキュリティで保護する方法を示すために、このモジュール全体で使用する以下のリソースを設定します。
- appServer という名前の Linux VM。 このサーバーは、ユーザーが接続するアプリケーション サーバーとして機能します。 これをデータベースに接続する必要があります。 appServer 上で実行してデータベースに接続するアプリケーションをシミュレートするために、VM に
sqlcmd
をインストールします。 - Azure SQL Database 論理サーバー。 この論理サーバーは、1 つまたは複数のデータベースをホストするために必要です。
- 論理サーバー上の marketplaceDb という名前のデータベース。 デモ用データベース AdventureWorksLT を使用してデータベースを作成し、操作するいくつかのテーブルとデータを用意します。 このデータには、適切にセキュリティで保護する必要のあるメール アドレスや電話番号などの機密データが含まれています。
Azure SQL Database を作成する
まず、いくつかの変数を設定します。 以下の値のうち
[]
で示されているものは、自分で選んだ値に置き換えます。[password]
は 8 文字以上で、大文字、小文字、数字、英数字のうち少なくとも 3 つのカテゴリの文字が含まれている必要があります。 この値を後で使用するために保存します。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
出力は次の例のようになります。 このモジュールで後ほどデータベースに接続するためにこのコマンドが必要になるため、これを手元に控えておきます。 先ほど変数で指定した資格情報
ADMINLOGIN
とPASSWORD
に置き換える、コマンド内のプレースホルダー[username]
と[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
出力の値です。注意
注意点が 2 つあります。 まず、VM の作成の一環として SSH キー ペアを生成したので、パスワードは必要ありません。 次に、初めてシェルで VM に接続すると、ホストの信頼性を確認するプロンプトが表示されます。 これが表示されるのは、ホスト名ではなく IP アドレスに接続しているためです。 [はい] と答えると、接続用の有効なホストとして IP アドレスが保存され、接続を続行できます。
最後に、sqlcmd を使用してデータベースに接続できるように、Linux VM 上に mssql-tools をインストールします。
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
Note
これらのうち、いくつかのコマンドは、実行すると大量のテキストがスクロールされます。このため、最後のコマンドの後で必ず Enter キーを押して、それが確実に実行されるようにしてください。
Azure SQL Database 論理サーバー、その論理サーバー上のデータベース、アプリケーション サーバーからのネットワーク接続をシミュレートする appServer という名前の仮想マシンを作成しました。 次に、データベースを適切にセキュリティで保護する方法を見てみましょう。