IPv4 全体を指定する Azure SQL ファイアウォールルール

Azure SQL の許可範囲を必要なクライアントのアドレスに限定し、公開接続とデータベースの認証を併せて確認します。

説明

Ansible の Azure SQL ファイアウォールルールで、start_ip_address を 0.0.0.0、end_ip_address を 255.255.255.255 にすると、IPv4 アドレス全体が含まれます。この範囲を Azure SQL 論理サーバーのパブリックエンドポイントに適用すると、IP 許可リストでクライアントの送信元を制限する効果がなくなります。

パブリックネットワークアクセスが無効なら、このファイアウォールルールだけで公開接続が有効になることはありません。ネットワークで接続できる場合も、データベースの認証と権限は引き続き必要です。

Azure SQL Database で両端を 0.0.0.0 にする設定は、Azure サービスからの接続を許可する別の例外です。他の顧客の Azure リソースからの接続も含まれることがあるため、サーバーやデータベースに適用されるほかのファイアウォールルールと併せて確認してください。

想定される影響

  • パブリックエンドポイントが有効な場合、IP 許可リストでは想定外の送信元からの接続試行を遮断できなくなる可能性があります。
  • 認証情報の漏えいや過剰なアカウント権限があると、必要以上に広いネットワークアクセスが悪用の機会を増やす可能性があります。ただし、このアドレス範囲があるだけで、すでにデータにアクセスされたとは判断できません。

対処方法

  • アプリケーションや管理ツールに必要な実際の送信元アドレスを確認し、IPv4 全体のルールを必要なアドレスや範囲に制限してください。パブリックエンドポイントでは、サービスが認識する送信元が、クライアントのプライベートアドレスではなくパブリックアドレスになる場合があります。
  • 公開接続が不要な場合は、プライベートエンドポイントなど必要な接続経路を構成し、パブリックネットワークアクセスを無効にしてください。狭いプライベートアドレス範囲を記入するだけでは、この接続は構成されません。
  • サーバーとデータベースに適用されるほかのファイアウォールルールや、Azure サービスからの接続例外も確認してください。変更後も必要な接続が利用できることを確かめ、認証とデータベースの権限を別途点検してください。

例

以下の例は IPv4 全体と小さな区間を比較しています。サーバーのパブリックネットワークアクセス、プライベートエンドポイント、認証の設定は含まれていません。

IPv4 全体の範囲

yaml
- name: Create Firewall Rule
  azure.azcollection.azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 0.0.0.0
    end_ip_address: 255.255.255.255

狭いプライベート IPv4 範囲

yaml
- name: Create Firewall Rule
  azure.azcollection.azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 172.28.10.136
    end_ip_address: 172.28.10.138

説明:

  • 最初の例: 0.0.0.0 から 255.255.255.255 まで、IPv4 アドレス全体を許可します。現在パブリックエンドポイントが有効かどうかにかかわらず、アクセスが必要なクライアントのアドレスに範囲を限定してください。
  • 2 番目の例: 172.28.10.136 から 172.28.10.138 までの三つのプライベートアドレスを指定しています。サービスが実際に認識するクライアントの送信元に合っているかを確認してください。この例はプライベート接続を構成しないため、接続経路も別途確認する必要があります。

参考資料