演習 - サンドボックス環境の設定

完了

このユニットでは、このモジュール全体で使用するリソースを設定します。 顧客が使用するアプリケーションをホストするサーバーで構成される基本的なアーキテクチャを想像してみてください。 サーバーは、データを格納するためにデータベースに接続されています。 アプリケーションは、仮想マシン (VM) で実行されています。 データベースは、最近、VM で実行されている SQL Server データベースから Azure SQL Database サービス上のデータベースに移行されました。 データベースをセキュリティで保護する方法を示すために、このモジュール全体で使用する以下のリソースを設定します。

  • appServer という名前の Linux VM。 このサーバーは、ユーザーが接続するアプリケーション サーバーとして機能します。 これをデータベースに接続する必要があります。 appServer 上で実行してデータベースに接続するアプリケーションをシミュレートするために、VM に sqlcmd をインストールします。
  • Azure SQL Database 論理サーバー。 この論理サーバーは、1 つまたは複数のデータベースをホストするために必要です。
  • 論理サーバー上の marketplaceDb という名前のデータベース。 デモ用データベース AdventureWorksLT を使用してデータベースを作成し、操作するいくつかのテーブルとデータを用意します。 このデータには、適切にセキュリティで保護する必要のあるメール アドレスや電話番号などの機密データが含まれています。

Azure SQL Database を作成する

  1. まず、いくつかの変数を設定します。 以下の値のうち [] で示されているものは、自分で選んだ値に置き換えます。 [password] は 8 文字以上で、大文字、小文字、数字、英数字のうち少なくとも 3 つのカテゴリの文字が含まれている必要があります。 この値を後で使用するために保存します。

    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')
    
  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
    

    出力は次の例のようになります。 このモジュールで後ほどデータベースに接続するためにこのコマンドが必要になるため、これを手元に控えておきます。 先ほど変数で指定した資格情報 ADMINLOGINPASSWORD に置き換える、コマンド内のプレースホルダー [username][password] に注意してください。

    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 出力の値です。

    注意

    注意点が 2 つあります。 まず、VM の作成の一環として SSH キー ペアを生成したので、パスワードは必要ありません。 次に、初めてシェルで VM に接続すると、ホストの信頼性を確認するプロンプトが表示されます。 これが表示されるのは、ホスト名ではなく IP アドレスに接続しているためです。 [はい] と答えると、接続用の有効なホストとして IP アドレスが保存され、接続を続行できます。

  3. 最後に、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 という名前の仮想マシンを作成しました。 次に、データベースを適切にセキュリティで保護する方法を見てみましょう。