安全な環境を実装する
推定所要時間:30 分
受講者は、レッスンで得た情報を利用して、Azure portal と AdventureWorksLT データベース内でセキュリティを構成した後、実装します。
あなたは、データベース環境のセキュリティを確保するために、上級データベース管理者として採用されています。 これらのタスクは Azure SQL Database に焦点を当てます。
📝 これらの演習では、T-SQL コードをコピーして貼り付け、既存の SQL リソースを使うように求められます。 コードを実行する前に、コードが正しくコピーされていることを確認してください。
環境をセットアップします
ラボ仮想マシンが提供され、事前に構成されている場合は、C:\LabFiles フォルダーにラボ ファイルが用意されているはずです。 少し時間をとって確認してください。ファイルが既に存在存在している場合には、このセクションをスキップしてください。 ただし、独自のマシンを使用している場合、またはラボ ファイルが見つからない場合は、 GitHub からそれらを複製して続行する必要があります。
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code のセッションを起動します。
-
コマンド パレット (Ctrl+Shift+P) を開き、「Git Clone」と入力します。 [Git: Clone] オプションを選択します。
-
[Repository URL] フィールドに次の URL を貼り付け、Enter キーを押します。
https://github.com/MicrosoftLearning/dp-300-database-administrator.git
-
リポジトリを、ラボ仮想マシン、または提供されていない場合はローカル コンピューターの [C:\LabFiles] フォルダーに保存してください(フォルダーが存在しない場合は作成します)。
Azure で SQL Server を構成する
Azure にログインし、Azure で実行されている既存の Azure SQL Server インスタンスがあるかどうかを確認します。 Azure で SQL Server インスタンスが既に実行されている場合は、このセクションをスキップします。
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code セッションを起動し、前のセクションから複製されたリポジトリに移動します。
-
/Allfiles/Labs フォルダーを右クリックし、[統合ターミナルで開く] を選択します。
-
Azure CLI を使用して Azure に接続しましょう。 次のコマンドを入力して、Enter キーを押します。
az login
📝 ブラウザー ウィンドウが開くことに注意してください。 ログインには Azure 資格情報を使用してください。
-
Azure にログインしたら、リソース グループがまだ存在しない場合は作成し、そのリソース グループの下に SQL サーバーとデータベースを作成します。 次のコマンドを入力して、Enter キーを押します。 スクリプトが完了するまで数分かかります。
cd ./Setup ./deploy-sql-database.ps1
📝 既定では、このスクリプトは contoso-rg というリソース グループを作成するか、名前が contoso-rg (存在する場合) で始まるリソースを使用していることに注意してください。 既定では、 West US 2 リージョン (westus2) にもすべてのリソースが作成されます。 最後に、 SQL 管理者パスワードのランダムな 12 文字のパスワードを生成します。 これらの値は、パラメーター -rgName、-location、-sqlAdminPw のいずれかまたは複数を使用して、任意の値に変更することができます。 パスワードは Azure SQL のパスワードの複雑さの要件を満たす必要があります。具体的には、12文字以上で、大文字 1 文字、小文字 1 文字、数字 1 つ、特殊文字 1 つを含める必要があります。
📝 スクリプトによって、現在のパブリック IP アドレスが SQL Server ファイアウォール規則に追加されることに注意してください。
-
スクリプトが完了すると、リソース グループ名、SQL Server 名とデータベース名、管理者ユーザー名とパスワードが返されます。 これらの値は、後でラボで必要になりますのでメモしておきます。
Azure SQL Database ファイアウォール規則を構成する
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、ブラウザー セッションを起動し、 https://portal.azure.comに移動します。 Azure 資格情報を使用して、Azure portal に接続します。
-
Azure portal の上部にある検索ボックスで SQL サーバーを検索し、オプションの一覧から SQL サーバーを選択します。
-
SQL Server dp300-lab-xxxxxxxx を選択します。xxxxxxxx はランダムな数値文字列です。
📝 このラボで作成されていない独自の Azure SQL Server を使用している場合は、その SQL Server の名前を選択します。
-
SQL Server の [概要] 画面で、サーバー名の右側にある [クリップボードにコピー] ボタンを選択します。
-
[ネットワーク設定を表示する] を選択します。
-
[ネットワーク] ページで、[ファイアウォール規則] の一覧を確認し、クライアント IP アドレスが一覧表示されていることを確認します。 一覧にない場合は、[+ クライアント IPv4 アドレス (IP アドレス) の追加] を選択し、[保存] を選択します。
📝 クライアント IP アドレスは自動的に入力されたことに注意してください。 使用するクライアント IP アドレスを一覧に追加すると、SQL Server Management Studio (SSMS) またはその他任意のクライアント ツールを使用して、Azure SQL Database に接続できます。 クライアントの IP アドレスをメモしてください。後で使用します。
-
SQL Server Management Studio を開きます。 [サーバーへの接続] ダイアログ ボックスで、Azure SQL Database サーバーの名前を貼り付け、次の資格情報でログインします。
- サーバー名: <Azure SQL Database のサーバー名をここに貼り付けてください>__
- 認証: SQL Server 認証
- [サーバー管理者ログイン]: Azure SQL Databaseサーバー管理者ログイン
- パスワード: Azure SQL Database サーバー管理者パスワード
-
[接続] を選択します。
-
オブジェクト エクスプローラーでサーバー ノードを展開し、 [Databases] を右クリックします。 [データ層アプリケーションのインポート] を選択します。
-
[データ層アプリケーションのインポート] ダイアログで、最初の画面の [次へ] をクリックします。
-
[インポートの設定] 画面で、[参照] をクリックし、C:\LabFiles\dp-300-database-administrator\Allfiles\Labs\04 フォルダーに移動して AdventureWorksLT.bacpac ファイルをクリックしたあと、[開く] をクリックします。 [データ層アプリケーションのインポート] 画面に戻り、 [次へ] を選択します。
-
[データベースの設定] 画面で、次のように変更します。
- データベース名: AdventureWorksFromBacpac
- Microsoft Azure SQL Database のエディション: Basic
-
[次へ] を選択します。
-
[概要] 画面で [完了] を選択します。 この処理には数分かかります。 インポートが完了すると、次の結果が表示されます。 次に、[閉じる](Close) を選択します。
-
SQL Server Management Studio に戻り、オブジェクト エクスプローラーで [Databases] フォルダーを展開します。 次に、AdventureWorksFromBacpac データベースを右クリックし、 [新しいクエリ] をクリックします。
- テキストをクエリウィンドウに貼り付けて、次の T-SQL クエリを実行します。
- 重要: 000.000.000.00 は実際のクライアント IP アドレスに置き換えます。 [実行] を選択します。
EXECUTE sp_set_database_firewall_rule @name = N'AWFirewallRule', @start_ip_address = '000.000.000.000', @end_ip_address = '000.000.000.000'
-
次に、AdventureWorksFromBacpac データベースに含まれるユーザーを作成します。 [新しいクエリ] を選択し、次の T-SQL を実行します。
USE [AdventureWorksFromBacpac] GO CREATE USER ContainedDemo WITH PASSWORD = 'P@ssw0rd01'
📝 このコマンドで、AdventureWorksFromBacpac データベース内に含まれるユーザーが作成されます。 この資格情報は、次の手順でテストします。
-
オブジェクト エクスプローラーに移動します。 [接続] 、 [データベース エンジン] の順にクリックします。
-
前の手順で作成した資格情報を使用して接続を試みます。 次の情報を使用する必要があります。
- ログイン: ContainedDemo
- パスワード: P@ssw0rd01
[Connect] をクリックします。
次のエラーが表示されます。
ユーザー ‘ContainedDemo’ はログインできませんでした。(Microsoft SQL Server、エラー: 18456)
📝 このエラーが発生するのは、ユーザーが作成された AdventureWorksFromBacpac ではなく master データベースに接続でログインしようとしたからです。 [OK] を選択してエラー メッセージを終了したあと、[サーバーに接続] で [オプション »] を選択することで、接続コンテキストを変更します。
-
[接続のプロパティ] タブで、データベース名「AdventureWorksFromBacpac」を入力してから、[接続] を選択します。
- ContainedDemo ユーザーを使用して正しく認証できたことに注意してください。 今度は AdventureWorksFromBacpac に直接ログインしました。これは、新しく作成されたユーザーがアクセスできる唯一のデータベースです。
リソースをクリーンアップする
Azure SQL Server を他の目的で使用していない場合は、このラボで作成したリソースをクリーンアップできます。
リソース グループを削除します
このラボの新しいリソース グループを作成した場合は、リソース グループを削除して、このラボで作成されたすべてのリソースを削除できます。
-
Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。
-
このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。
-
トップ メニューから [リソース グループの削除] を選択します。
-
[リソース グループの削除] ダイアログで、リソース グループの名前を入力して確認した後、[削除] を選択します。
-
リソース グループが削除されるのを待ちます。
-
Azure Portal を閉じます。
ラボ リソースのみを削除する
このラボ用の新しいリソース グループを作成せず、リソース グループとその以前のリソースをそのまま残したい場合は、このラボで作成したリソースを削除できます。
-
Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。
-
このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。
-
ラボで以前に指定した SQL Server 名のプレフィックスが付いたすべてのリソースを選択します。
-
トップ メニューから、削除を選択します。
-
[リソースの削除] ダイアログで、「delete」と入力し、[削除] を選択します。
-
[削除] をもう一度選択し、リソースの削除を確定します。
-
リソースが削除されるまで待ちます。
-
Azure Portal を閉じます。
LabFiles フォルダーを削除する
このラボ用に新しい LabFiles フォルダーを作成して、それが不要になった場合は、LabFiles フォルダーを削除して、このラボで作成されたすべてのファイルを削除できます。
- ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、エクスプローラーを開き、 C:\ ドライブに移動します。
- LabFiles フォルダーを右クリックし、[削除] を選択します。
- [はい] を選択して、フォルダーの削除を確認します。
このラボは以上で完了です。
この演習では、Azure SQL Database でホストされているデータベースにアクセスするために、サーバーとデータベースのファイアウォール規則を構成しました。 また、T-SQL ステートメントを使用して含まれるユーザーを作成し、SQL Server Management Studio を使用してアクセスを確認しました。