SQL Server のセキュリティ機能を Windows Azure 仮想マシンで使用する
このポストは、8 月 2 日に投稿された Using Microsoft SQL Server security features in Windows Azure Virtual Machines の翻訳です。
編集メモ: 今回は、SQL Server チームでシニア プログラム マネージャーを務める Sung Hsueh の投稿をご紹介します。
SQL Server の新しい利用方法として、マイクロソフトの Windows Azure インフラストラクチャ サービスで作成した Windows Azure 仮想マシンで SQL Server をホストすることができます。既にお読みになった方もいらっしゃると思いますが、昨年 Il-Sung が投稿したブログ記事 (https://blogs.msdn.com/b/windowsazurej/archive/2012/12/12/regulatory-compliance-considerations-for-sql-server-running-in-windows-azure-virtual-machine.aspx) では、コンプライアンス要件に対応しながら Windows Azure 仮想マシンで SQL Server を実行できることをお伝えしました。Windows Azure 仮想マシンには、事前構成済みですぐに展開できるというメリットがあり、実行した時間の合計分数に基づいて課金されます。この Windows Azure 仮想マシンで SQL Server 2008 R2 Enterprise Edition および SQL Server 2012 Enterprise Edition を実行して、SQL Server Audit や透過的なデータ暗号化などのエンタープライズ レベルの機能を利用することができます。もちろん、従量課金制ではなく、既存のソフトウェア アシュアランスまたは Enterprise Agreement のライセンスで提供されるライセンス モビリティ (https://www.microsoft.com/ja-jp/licensing/software-assurance/license-mobility.aspx) でも、これらの機能を活用できます。
SQL Server の透過的なデータ暗号化を Windows Azure 仮想マシンで使用する
ここからは、Windows Azure 仮想マシンで SQL Server の機能を活用する例として、透過的なデータ暗号化 (https://msdn.microsoft.com/ja-jp/library/bb934049.aspx) の使用手順について簡単にご説明します。まだお持ちでない場合には Windows Azure 仮想マシンを作成し、Windows Azure 管理ポータルから SQL Server をインストールしてください。
さらに、いくつかデータベースを作成しましょう。
データベースに暗号化を設定する手順は以下のとおりです。SQL Server をローカルで実行している場合にも、これと同じ手順で設定できます。
1.マスター データベースでオブジェクトを作成できるユーザーの資格情報を入力して、仮想マシンにログインします。
2.マスター データベースで、(“USE MASTER” に続けて) 以下の DDL を実行します。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘<your password here>’;
Go
CREATE CERTIFICATE TDEServerCert WITH SUBJECT = ‘My TDE certificate’;
Go
3.暗号化するデータベースに切り替えます。
4.以下の DDL を実行します。
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE TDEServerCert;
Go
ALTER DATABASE [your_database_name] SET ENCRYPTION ON;
Go
これで完了です。暗号化はバックグラウンドで実行されます (暗号化の状態は、sys.dm_database_encryption_keys を実行することで確認できます)。オンプレミスの SQL Server インスタンスでも、同様です。また、SQL Server Audit (https://msdn.microsoft.com/ja-jp/library/cc280386.aspx) も、現在のオンプレミス環境とまったく同じようにお使いいただけます。
セキュリティに関するその他の考慮事項
これに加えて、セキュリティのベストプラクティス (https://msdn.microsoft.com/library/windowsazure/dn133147.aspx) を実践することも忘れてはいけません。たとえば、以下の考慮事項があります。
- 攻撃対象領域を抑えるため、不要なサービスを無効化する
- 弱いアルゴリズムを使用しているなどのセキュリティ状態を検出するため、ポリシーベースの管理を活用する
- 可能な限り権限は最小限にとどめ、sa や sysadmin といった組み込みのアカウントまたはグループの使用を回避すると共に、管理操作の追跡に SQL Server Audit を使用する
- 暗号化機能の使用を検討している場合、サービス マスター キーで開始されるキー エージングやキー ローテーションのポリシーを作成する
- 特に、Windows Azure のパブリック エンドポイントから SQL Server に接続する場合は、SSL 暗号化の使用を検討する
- 特に、Windows Azure のパブリック エンドポイントから SQL Server に接続する場合は、SQL Server が既定のインスタンスに使用するポートを 1433 以外に変更することを検討する (可能であれば、パブリック インターネット全体からの SQL Server インスタンスへの外部接続は避ける)
おわりに
SQL Server Enterprise Edition を Windows Azure 仮想マシンで実行すると、既存のアプリケーションのセキュリティに関するベスト プラクティスや専門知識を引き継ぐことができます。さらに、マイクロソフトの Windows Azure には従量課金制プランが用意されているため、クラウド上でアプリケーションを実行した分だけしかコストがかかりません。ぜひお試しいただき、ご意見をお聞かせください。