説明
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までの三つのプライベートアドレスを指定しています。サービスが実際に認識するクライアントの送信元に合っているかを確認してください。この例はプライベート接続を構成しないため、接続経路も別途確認する必要があります。