Azure SQL ファイアウォールの広い許可範囲の確認

Azure SQL ファイアウォールの広い許可範囲を必要なクライアントのアドレスに限定し、適用されるすべてのルールを確認します。

説明

Azure SQL のファイアウォールで広い範囲を許可すると、データベースへの接続が不要な送信元まで含まれることがあります。Ansible の start_ip_address と end_ip_address を、必要なクライアントが実際に使う送信元アドレスに合わせて指定し、サーバーとデータベースに適用されるすべてのファイアウォールルールを確認してください。

適切な範囲は、アプリケーションや管理ツールの接続要件によって異なります。アドレス数が少ないだけで適切なアクセス制限になるわけではありません。パブリックネットワークアクセス、認証、権限も別途管理する必要があります。

Azure SQL Database で開始・終了アドレスをともに 0.0.0.0 にすると、他の顧客のリソースを含む Azure サービスからのアクセスを許可する別の例外になります。一つのクライアントアドレスだけを許可する設定と誤解しないでください。

想定される影響

  • パブリックエンドポイントで必要以上に広い範囲を許可すると、想定外の送信元からもデータベースへの接続を試みることができます。認証情報や権限に問題がある場合、不要なネットワークアクセスが悪用の機会を広げる可能性があります。
  • 必要なクライアントを考慮せずに範囲を狭めると、正規のアプリケーションや管理ツールの接続が途切れるおそれがあります。変更前に、実際の送信元と接続経路を確認してください。

対処方法

  • 実際に必要なクライアントの送信元アドレスを把握し、すべてのファイアウォールルールによる許可範囲全体を必要な範囲に制限してください。同じ広い範囲を小さなルールに分割するだけでは、許可する送信元は減りません。
  • 両端が有効な IPv4 アドレスで、順序が正しいことを検証してください。利用する接続経路でサービスが認識する送信元アドレスを指定し、不要になった一時的なルールは削除してください。
  • 公開接続が不要ならプライベート接続を構成し、パブリックネットワークアクセスを無効にしてください。必要な接続が引き続き利用できることを確認し、認証とデータベースの権限も点検してください。

例

以下は、広い許可範囲と三つのアドレスに限定した範囲を比較する抜粋です。アドレスとリソース名は実際の環境に合うか確認する必要があり、プライベート接続や認証を構成するコードも含まれていません。

広いアドレス範囲

yaml
- name: Create Firewall Rule1
  azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup1
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 0.0.0.0
    end_ip_address: 172.28.11.138

- name: Create Firewall Rule2
  azure_rm_sqlfirewallrule:
    resource_group: myResourceGroup2
    server_name: firewallrulecrudtest-6285
    name: firewallrulecrudtest-5370
    start_ip_address: 172.28.10.136
    end_ip_address: 172.28.11.138

三つのアドレスを指定した範囲

yaml
- name: Create Firewall Rule
  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 から 172.28.11.138 までの非常に広い範囲を許可します。二つ目の 172.28.10.136 から 172.28.11.138 も、両端を含めると259個のアドレスを含みます。それぞれの範囲が、実際に必要な送信元より広くないか確認してください。
  • 2 番目の例: 172.28.10.136 から 172.28.10.138 までの三つのプライベートアドレスを指定しています。サービスが実際に認識するクライアントの送信元かどうかを確認してください。このコードだけでは、プライベート接続やデータへのアクセス制御は構成されません。

参考資料