演習 ‐ お使いのネットワークをセキュリティで保護する

完了

この演習では、Azure portal を使用してお使いのファイアウォール規則を確認および管理する方法を説明します。 また、パブリック エンドポイントの使用時に、接続を最も安全に構成します。

まだ行っていない場合は、次のボタンを使用して Azure portal を開きます。

ネットワークのセキュリティ保護

自分のデータベースを Azure SQL Database にデプロイしたときに、実行したスクリプトによって、[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] が有効になりました。これにより、すべてのリージョンまたはサブスクリプションのすべてのリソースがお使いのリソースにアクセスできるようになります。 パブリック エンドポイントを最も安全な構成にするには、この設定をオフにすることが重要です。 [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] 設定がオフの場合、追加した接続とネットワーク以外のすべての接続とネットワークがブロックされます。

この演習では、ファイアウォール規則を表示および編集する方法について学習します。 ファイアウォール規則の設定は複雑になる場合があります。お使いのすべての接続に IP アドレスの範囲を指定する必要があり、その中には動的な IP アドレスが含まれる可能性もあるためです。 ネットワークをセキュリティで保護するための別の方法については、この演習の最後にあるデモ ビデオを参照してください。

Azure portal でのファイアウォール規則の管理

  1. Azure portal のリソース メニューで、[SQL データベース] を選択して、Azure SQL Database (AdventureWorks) を選択します。

  2. SQL データベースのコマンド バーで、[サーバー ファイアウォールの設定] を選択します。

    Screenshot of how to go to firewalls and virtual networks.

  3. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] のために設定の横のボックスをオフにします。

  4. システムにより、デプロイ時にコンピューターのクライアント IP アドレスが追加されているはずですが、いずれの規則もお使いのクライアント IP と一致しない場合は、[規則名] で IP アドレスを追加して、SQL Server Management Studio (SSMS) からのログインを有効にします。

  5. 保存を選択して、変更を保存します。 SQL データベースのメニューで [概要] を選択し、概要ページに戻ります。

  6. ローカル コンピューターから引き続きアクセス権があることを確認するには、SSMS に移動します。 オブジェクト エクスプローラーでお使いのデータベースを右クリックし、[更新] を選択して、Azure SQL Database 論理サーバーへの接続を更新します。 エラーが発生しなかった場合は、IP アドレスの Azure SQL Database 論理サーバーへの安全なアクセスが正常に構成されています。

    Screenshot of how to refresh the database connection.

  7. 必要に応じて、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 ターミナルを開くことができますが、今のところ、右側のサンドボックスの組み込みターミナルを使用します。これは基本的に同じものです。

  1. 次のコマンドを実行して、環境を構成します。

    $database_name = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName <rgn>Sandbox resource group name</rgn>
    $logical_server = $server.ServerName
    
  2. 次のコマンドを入力して、サーバーのファイアウォール設定を一覧表示します。

    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 リソースへのアクセスの許可
  • ファイアウォール規則
  • 仮想ネットワーク規則
  • プライベート エンドポイント