Windows Azure SQL Databaseは、インターネット上で提供されるデータベースサービスです。
セキュリティを確保するため、SQL Databaseに接続することができるIPアドレスを制限する機能として、Firewallが提供されています。
SQL Databaseがリリースされた当初から今まで提供されていたのは、SQL DetabaseサーバーレベルのFirewallでした。SQL Databaseサーバーに接続することができるIPを指定すると、SQL Databaseに含まれるすべてのデータベースに接続することができました。
これまではできなかったデータベース個別のFirewall設定ができるようになり、SQL Databaseに含まれる特定のデータベースだけにしか接続できないIPを設定することができるようになりました。
概要
Azure SQL Databaseに接続をする場合の挙動が、今後次のようになります。
- サーバーレベルのFirewallルールで許可されたIP範囲の中に、リクエスト元のIPアドレスが含まれていれば、SQL Databaseへの接続が許可されます。
- サーバーレベルのFirewallルールにリクエスト元のIPアドレスが含まれていない場合は、データベースレベルのFirewallルールをチェックします。リクエスト元のIPアドレスが、データベースレベルのFirewallルールで許可されたIP範囲に含まれていれば、データベースレベルのルールと適合したデータベースだけ接続が許可されます。
- サーバーレベルもしくはデータベースレベルのFirewallルールで許可されたIP範囲の中に、リクエスト元のIPアドレスが含まれていない場合、接続は失敗します。
データベースレベルのFirewallルール制御
今のところGUIでの制御画面が提供されていないので、設定したいデータベースに対してT-SQLクエリを発行することで設定します。
ルールの確認
select * from sys.database_firewall_rules
ルールの作成
exec sp_set_database_firewall_rule N’Example DB Setting 1′,’0.0.0.4′,’0.0.0.4′
ルールの更新
exec sp_set_database_firewall_rule N’Example DB Setting 1′,’0.0.0.4′,’0.0.0.5′
ルールの削除
exec sp_delete_database_firewall_rule N’Example DB Setting 1′
次の図は、未設定、作成、更新、削除をした、それぞれのタイミングで確認クエリを発行したときの内容です。
FederationメンバーDBへの影響について
データベースレベルのFirewallルールを設定したルートデータベースに、Federationを作成した場合、
フェデレーションメンバーデータベースには、データベースレベルのFirewallルールはコピーされません。
フェデレーションメンバーデータベースで、データベースレベルのFirewallルールを定義する必要がある場合は、個別にデータベースレベルのルールを作成する必要があります。
フェデレーションメンバーデータベースにデータベースレベルのFirewallルールを定義してある状態で、メンバーデータベースをSPLITすると、新しいメンバーデータベースにもFirewallルールが複製されます。