演習 ‐ お使いのネットワークをセキュリティで保護する
この演習では、Azure portal を使用してお使いのファイアウォール規則を確認および管理する方法を説明します。 また、パブリック エンドポイントの使用時に、接続を最も安全に構成します。
まだ行っていない場合は、次のボタンを使用して Azure portal を開きます。
ネットワークのセキュリティ保護
自分のデータベースを Azure SQL Database にデプロイしたときに、実行したスクリプトによって、[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] が有効になりました。これにより、すべてのリージョンまたはサブスクリプションのすべてのリソースがお使いのリソースにアクセスできるようになります。 パブリック エンドポイントを最も安全な構成にするには、この設定をオフにすることが重要です。 [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] 設定がオフの場合、追加した接続とネットワーク以外のすべての接続とネットワークがブロックされます。
この演習では、ファイアウォール規則を表示および編集する方法について学習します。 ファイアウォール規則の設定は複雑になる場合があります。お使いのすべての接続に IP アドレスの範囲を指定する必要があり、その中には動的な IP アドレスが含まれる可能性もあるためです。 ネットワークをセキュリティで保護するための別の方法については、この演習の最後にあるデモ ビデオを参照してください。
Azure portal でのファイアウォール規則の管理
Azure portal のリソース メニューで、[SQL データベース] を選択して、Azure SQL Database (AdventureWorks) を選択します。
SQL データベースのコマンド バーで、[サーバー ファイアウォールの設定] を選択します。
[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] のために設定の横のボックスをオフにします。
システムにより、デプロイ時にコンピューターのクライアント IP アドレスが追加されているはずですが、いずれの規則もお使いのクライアント IP と一致しない場合は、[規則名] で IP アドレスを追加して、SQL Server Management Studio (SSMS) からのログインを有効にします。
保存を選択して、変更を保存します。 SQL データベースのメニューで [概要] を選択し、概要ページに戻ります。
ローカル コンピューターから引き続きアクセス権があることを確認するには、SSMS に移動します。 オブジェクト エクスプローラーでお使いのデータベースを右クリックし、[更新] を選択して、Azure SQL Database 論理サーバーへの接続を更新します。 エラーが発生しなかった場合は、IP アドレスの Azure SQL Database 論理サーバーへの安全なアクセスが正常に構成されています。
必要に応じて、SSMS で新しいクエリから次のコードを実行して、SSMS がどのように Azure SQL Database インスタンスに接続しているかを確認できます。
SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id=@@SPID;
結果は、ローカル コンピューターのパブリック IP アドレスになります。 IP アドレスを確認するには、(Azure Cloud Shell ではなく) PowerShell のローカル インスタンス上で次のコマンドを実行します。
(Invoke-WebRequest -UseBasicParsing -Uri "https://ipinfo.io/ip").Content
このモジュールの冒頭では、これとよく似たコマンドを使用して IP アドレスを見つけました。 このクエリは、同じ IP アドレスを返します。
Azure Cloud Shell を使用したファイアウォール規則の管理
また、Azure CLI コマンド az sql server firewall-rule
を使用して、サーバーレベルのファイアウォール規則を作成、削除、表示することもできます。 Azure CLI は、お使いの Azure 仮想マシン (VM) のコマンド ライン インターフェイスまたは PowerShell ノートブックから使用できます。 この演習では、Cloud Shell を試用します。 Azure portal から Cloud Shell ターミナルを開くことができますが、今のところ、右側のサンドボックスの組み込みターミナルを使用します。これは基本的に同じものです。
次のコマンドを実行して、環境を構成します。
$database_name = "AdventureWorks" $server = Get-AzureRmSqlServer -ResourceGroupName <rgn>Sandbox resource group name</rgn> $logical_server = $server.ServerName
次のコマンドを入力して、サーバーのファイアウォール設定を一覧表示します。
az sql server firewall-rule list -g <rgn>Sandbox resource group name</rgn> -s $logical_server
この出力は、Azure portal の Azure SQL 論理サーバーの [ネットワーク] メニューの [ファイアウォール規則] 設定の各規則の JSON オブジェクトである必要があります。
Azure portal または Cloud Shell のいずれかを使用してサーバーレベルのファイアウォール規則を設定すると、クライアント IP アドレスに対して、論理サーバーのすべてのデータベースに対するアクセスが許可されます。 個々のデータベースに適用するデータベースレベルのファイアウォール規則を構成するには、SSMS で T-SQL コマンド EXECUTE sp_set_database_firewall_rule
を使用します。 T-SQL は、特定のデータベースのファイアウォール規則を構成するために使用できる唯一の方法です。 詳細については、このモジュールの「まとめ」にあるリファレンスを参照してください。
さらに進める
ここでは、サーバー上およびデータベースレベルで特定の IP アドレスまたは IP アドレスの範囲のファイアウォール規則を更新する方法を学習しました。 運用環境では、Azure アプリや Azure VM など、さまざまな仮想ネットワークまたはリソースからアクセスすることが必要な場合もあります。 Azure VM の IP アドレスは動的ですが、これは、アドレスが変更されることを意味します。 静的 IP アドレスを設定することはできますが、ファイアウォール規則を使用して保守するのは困難です。 代わりに、仮想ネットワーク規則を使用して、VM やその他のサービスを含む特定のサブネットからのアクセスを管理できます。 また、Azure SQL Database 論理サーバーに接続する最も安全な方法である、プライベート エンドポイントを構成することもできます。
[ネットワーク] メニューを使用して、論理サーバーへのクライアント接続から許可される最小 TLS バージョンを設定し、Azure SQL 論理サーバーの [接続] タブに移動することもできます。
次のビデオでは、Azure SQL Database のデータベースに接続するさまざまな方法を作成、構成、比較する方法について説明します。
- Azure リソースへのアクセスの許可
- ファイアウォール規則
- 仮想ネットワーク規則
- プライベート エンドポイント