SQL Database ファイアウォールを構成する

完了

データベースのセキュリティ プロセスは、SQL Database ファイアウォールの構成から始めます。

Azure SQL Database と Azure Synapse Analytics (旧称 SQL Data Warehouse) (このレッスンでは両方とも SQL Database と呼びます) は、Azure やその他のインターネットベースのアプリケーション向けにリレーショナル データベース サービスを提供しています。 データを保護するため、ファイアウォールは、どのコンピューターに権限を持たせるかを指定するまで、データベース サーバーへのすべてのアクセスを遮断します。 ファイアウォールは、各要求の送信元 IP アドレスに基づいてデータベースへのアクセス権を付与します。

IP 規則に加えて、ファイアウォールは仮想ネットワーク規則も管理します。 仮想ネットワーク規則は、仮想ネットワーク サービス エンドポイントに基づいています。 仮想ネットワーク規則は、場合によっては IP 規則より望ましい場合があります。

概要

最初は、Azure SQL Database へのすべてのアクセスが、SQL Database ファイアウォールによってブロックされます。 データベース サーバーにアクセスするには、Azure SQL Database へのアクセスを有効にするサーバー レベルの IP ファイアウォール規則を、1 つまたは複数指定する必要があります。 IP ファイアウォール規則を使用して、インターネットからのアクセスを許可する IP アドレス範囲、および Azure アプリケーションから Azure SQL Database への接続を試みることができるかどうかを指定します。

Azure SQL Database 内のデータベースの 1 つだけに選択的にアクセス権を付与するには、必要なデータベースに対してデータベースレベルの規則を作成する必要があります。 データベース IP ファイアウォール規則に対して、サーバー レベルの IP ファイアウォール規則で指定された IP アドレス範囲外の IP アドレスの範囲を指定し、クライアントの IP アドレス範囲が、データベース レベルの規則で指定された範囲内に確実に収まるようにします。

注意

Azure Synapse Analytics では、サーバーレベルの IP ファイアウォール規則のみがサポートされており、データベースレベルの IP ファイアウォール規則はサポートされていません。

A diagram has two clouds that both point to database-level firewall rules. After the database-level rules are evaluated the server-level rules are applied.

インターネットからの接続

コンピューターをインターネットからデータベース サーバーに接続しようとすると、まず、ファイアウォールによって、要求の送信元 IP アドレスが、接続に必要なデータベースのデータベースレベルの IP ファイアウォール規則に対して確認されます。

  • 要求の IP アドレスが、データベースレベルの IP ファイアウォール規則で指定されている範囲内に収まっている場合、その規則を含む SQL データベースへの接続が許可されます。
  • 要求の IP アドレスがデータベースレベルの IP ファイアウォール規則で指定された範囲内に収まっていない場合、ファイアウォールにより、サーバーレベルの IP ファイアウォール規則が確認されます。 要求の IP アドレスがサーバー レベルの IP ファイアウォール規則で指定されたいずれかの IP アドレス範囲内にある場合は、接続が許可されます。 サーバーレベルの IP ファイアウォール規則は、Azure SQL Database 上のすべての SQL Database に適用されます。
  • 要求の IP アドレスがデータベース レベルの IP ファイアウォール規則またはサーバー レベルの IP ファイアウォール規則で指定された IP アドレス範囲内にない場合、接続要求は失敗します。

Azure からの接続

Azure のアプリケーションから Azure SQL Database に接続できるようにするには、Azure 接続を有効にする必要があります。 Azure からアプリケーションがデータベース サーバーに接続しようとした場合、ファイアウォールは、Azure の接続が許可されていることを確認します。 開始アドレスと終了アドレスが 0.0.0.0 であるファイアウォール設定は、Azure 接続が許可されることを示します。 接続試行が許可されていない場合、要求は、Azure SQL Database サーバーに到達しません。

このオプションでは、他のお客様のサブスクリプションからの接続を含む、Azure からのすべての接続を許可するようにファイアウォールを構成します。 このオプションを選択する場合は、サインインとユーザーのアクセス許可により、許可されているユーザーのみにアクセスが制限されていることを確認してください。

サーバーレベルの IP ファイアウォール規則

サーバーレベルの IP ファイアウォール規則を使うと、クライアントから Azure SQL Database 全体、つまり同じ SQL Database サーバー内のすべてのデータベースにアクセスできるようになります。 これらのルールは、master データベースに格納されます。

サーバーレベルの IP ファイアウォール規則を構成するには、Azure portal、PowerShell、または Transact-SQL ステートメントを使います。 Azure portal または PowerShell を使用してサーバー レベルの IP ファイアウォール規則を作成するには、サブスクリプション所有者またはサブスクリプション共同作成者である必要があります。 Transact-SQL を使ってサーバーレベルの IP ファイアウォール規則を作成するには、サーバーレベルのプリンシパル ログインまたは Azure Active Directory (Azure AD) 管理者として SQL Database インスタンスに接続する必要があります (つまり、サーバーレベルの IP ファイアウォール規則は、まず Azure レベルのアクセス許可を持っているユーザーが作成する必要があります)。

データベース レベルの IP ファイアウォール規則

データベースレベルの IP ファイアウォール規則を使うと、クライアントから同じ SQL Database サーバー内の特定のセキュア データベースにアクセスできるようになります。 これらの規則は、(マスター データベースを含む) 各データベースに対して作成することができ、個々のデータベースに格納されます。 マスター データベースとユーザー データベース用のデータベースレベルの IP ファイアウォール規則の作成と管理は、最初のサーバーレベルのファイアウォールを構成した後に、Transact-SQL ステートメントを使って行う必要があります。 サーバー レベルの IP ファイアウォール規則で指定された範囲外にあるデータベース レベルの IP ファイアウォール規則で IP アドレスの範囲を指定した場合、データベース レベルの範囲の IP アドレスを持つクライアントのみがデータベースにアクセスできます。 データベースに対し、最大 128 個のデータベース レベルの IP ファイアウォール規則を作成できます。

重要

セキュリティを強化しデータベースの移植性を高めるため、可能な限り、ベスト プラクティスとしてデータベース レベルの IP ファイアウォール規則を使用してください。 アクセス要件が同じデータベースが複数存在し、それぞれのデータベースの設定に時間を費やしたくない場合は、管理者向けのサーバー レベルの IP ファイアウォール規則を使用します。