SQL Azureファイアウォールで、特定のWindows Azureコンピューティングからの接続のみを許可する

Posted: 2012/01/27 カテゴリー: Uncategorized
タグ:, , ,

SQL Azureデータベースはインターネットで公開されているので、セキュリティが心配になりますね。そこで、SQL Azureファイアウォールを使って、接続を許可する接続元のIPアドレス範囲を指定することができます。

通常、Azure環境外部からのアクセスに対しては、明示的にIPアドレス範囲を指定します。一方、Windows Azureコンピューティングからの接続 (Webロール上で稼働するWebアプリからの接続など) に対しては、「他のWindows Azureサービスにこのサーバーへのアクセスを許可する」オプションを指定することで、「MicrosoftServices」という名前の規則を有効化します。

多くの場合、特定のAzureサブスクリプションのSQL Azureデータベースに対して、同じAzureサブスクリプションのWindows Azureコンピューティングからの接続のみを許可したいでしょう。

ですが、「他のWindows Azureサービスにこのサーバーへのアクセスを許可する」オプションでは、Azureサブスクリプションの確認は行われません。悪意を持った人間が、自分のAzureサブスクリプションのWindows Azureコンピューティングから、他人のAzureサブスクリプションのSQL Azure データベースに接続を試みた場合、SQL Azureファイアウォールはそれを遮断できない、ということになります。

もちろん、SQL Azureファイアウォールを通過したとしても、まだSQL Azure データベースのユーザー名/パスワードの認証によって保護されています。SQL Azure データベースの管理者ユーザー名としては、sa、admin、rootなどの、よく使われるユーザー名が禁止されていますし、ログイン失敗を繰り返すIPアドレスをブロックするDoSGuardサービスもあるので、ユーザー名/パスワードの総当たり攻撃は現実的には無理でしょう。

それでも、SQL Azureファイアウォールに、他人のAzureサブスクリプションのWindows Azureコンピューティングからの接続を禁止させたい場合には、次の方法があります。

まず、管理ポータルの「データベース」で、データベース サーバーのファイアウォール規則に対して「他のWindows Azureサービスにこのサーバーへのアクセスを許可する」オプションを有効化していた場合は、無効化します。

次に、管理ポータルの「ホステッド サービス、ストレージ アカウント、CDN」で、SQL Azureデータベースへの接続を許可したいWindows Azureコンピューティングの「ホステッド サービス」>「デプロイ」を選択し、右側のプロパティ ペイン 一番下にある「VIP」(仮想IPアドレス) を確認します。

このVIPは、外部からWindows Azureコンピューティングのロール インスタンス (仮想サーバー) にアクセスする際に、ロール インスタンスの手前に配置されるロード バランサーに割り振られているVIPです。また、このVIPは、ロール インスタンスから外部に通信する際に、通信元のIPアドレスとなります。ロール インスタンスがSQL Azureデータベースに接続する際も同様です。

そこで、管理ポータルの「データベース」で、データベース サーバーのファイアウォール規則に戻り、新しいファイアウォール規則を追加し、IP範囲の開始/終了の両方に、このVIPを指定します。

これによって、特定のWindows Azureコンピューティング (「デプロイ」) からの接続のみを許可することができました!

デプロイのVIPは、初回デプロイ時に割り当てられ、デプロイを削除するまでは固定になりますので、初回デプロイ後にファイアウォール規則を追加するといいでしょう。デプロイを直接更新したり (インプレース アップデート)、2つのデプロイ (運用/ステージング) を入れ替える「VIPスワップ」を行ったりしても、デプロイのIPアドレスは不変です。

 

 

In addition, the firewall can be configured on each SQL Azure server to only allow traffic from specified IP addresses to access the SQL Azure server. By default, no IP addresses are included in the list. This helps to greatly reduce any chance of a denial-of-service (DoS) attack. All communications between clients and SQL Azure must be SSL encrypted, and clients should always connect with Encrypt = True to ensure that there is no risk of man-in-the-middle attacks. DoS attacks are further reduced by a service called DoSGuard that actively tracks failed logins from IP addresses and if it notices too many failed logins from the same IP address within a period of time, the IP address is blocked from accessing any resources in the service.

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中