Windows Azure: Windows Azure におけるセキュリティ アカウントの管理を理解する
クラウド コンピューティングにより、セキュリティ管理に関する IT プロフェッショナルの負担が多少軽減されますが、依然として、アクセスの管理、通信のセキュリティ確保、データ保護には関与する必要があります。
Joshua Hoffman
IT 業界において、クラウド コンピューティングは、インターネットの登場以来、それに匹敵する最大のパラダイム シフトだと言っても過言ではありません。より高速な帯域幅、より安価なストレージ、および堅牢な仮想化テクノロジにより、Software as a Service (SaaS) のビジョンが現実のものとなりました。クラウドは、より少ないコストと労力でより多くの成果を求める現代人の需要を満たすスケーラブルで弾力性がある課金制のシステムを提供します。
クラウド コンピューティングにより、IT プロフェッショナルは、インフラストラクチャの管理に関する責務から解放されますが、セキュリティは依然として大きな懸念事項です。セキュリティに関しては、物理的なデータセンターと同じレベルの配慮と注意が必要になります。アプリケーションやサービスが Windows Azure などのクラウド コンピューティング プラットフォームに移行しても、引き続き、アクセス管理、通信のセキュリティ保護、重要なビジネス データの保護において積極的な役割を果たす必要があります。
Windows Azure でホストされるアプリケーションとサービスのセキュリティ管理に関しては、いくつかの推奨アプローチがあります。管理者アカウントを作成および管理する方法、認証に証明書を使用する方法、従業員の雇用時と退職時のトランザクションの処理方法にもベスト プラクティスがあります。この記事では、それを紹介します。
アカウントの所有権
Microsoft Online Services カスタマー ポータル (MOCP) では、Windows Azure のアカウント管理と請求に関するすべての処理を行えます。MOCP では、Windows Azure サービスを購入したり、SQL Azure などの別のサービスを追加したり、既存サービス (通称、サブスクリプション) の新しいインスタンスを作成したりすることができます。
サブスクリプションは、Windows Azure サービスの請求処理の範囲に過ぎません。異なる請求形態が必要なアプリケーションごとに個別のサブスクリプションを管理できます。たとえば、Windows Azure でアプリケーションをホストしていて、個別の請求処理が必要な部署がある場合は、必要な支払明細を設定した個別のサブスクリプションを作成できます。
サブスクリプションごとに、アカウント所有者のアカウントとサービス管理者のアカウントを特定する必要があります。これらのアカウントは Windows Live ID と関連付けられています。アカウント所有者は、MOCP でサブスクリプションの管理と請求処理を行う責任があります。サービス管理者は、サブスクリプションの技術的な側面を管理する必要があります。これには、Windows Azure Management Portal (英語) を使用して、ホストされるサービスを作成することも含まれます。
これらの役割ごとに一意なアカウントを作成することを強くお勧めします。また、これらのアカウントは、個人が使用するアカウントとは別に用意する必要があります。つまり、組織やチームでサブスクリプションを使用する場合、アカウント所有者やサービス管理者のアカウントに個人が所有している Windows Live ID は使用しないでください。代わりに、一意なアカウントを作成して一元管理し、必要に応じてリセットできるパスワードを設定します (アカウント所有者のアカウント名には、AO[一意な ID]@live.com のような名前規則を使用し、サービス管理者のアカウント名には、AA[一意な ID]@live.com のような命名規則を使用できます)。
サブスクリプションを作成したら、サービス管理者は、Windows Azure Management Poral を使用してホストされるサービスを管理できます。このポータルには、サービス管理者アカウントの資格情報を使用してアクセスできます。ポータルにログインしたら、新しいホストされるサービスの作成に着手できます (図 1 参照)。
図 1 Windows Azure で新しいホストされるサービスを作成する
新しいホストされるサービスを作成するときには、サービスの名前を指定する必要があります。また、URL のプレフィックスと展開オプションを指定する必要もあります。既にパッケージ化されているアプリケーションを持っている場合は、Visual Studio などの開発環境から既存のパッケージ (.cspkg) と構成ファイル (.cscfg) を選択することもできます。
ポータルの左側にある [Hosted Services] (ホストされるサービス) タブで [User Management] (ユーザー管理) を選択します。ここでは、サブスクリプションの共同管理者を追加できます (図 2 参照)。共同管理者を設定すると、ホストされているアプリケーションの管理画面にアクセスできるユーザーが増えるので、柔軟性を高められます。
図 2 サブスクリプションに新しい管理者を追加する
証明書の管理
証明書は、Windows Azure のセキュリティにおいて重要なコンポーネントです。アプリケーションやサービスのセキュリティを確保する証明書には、サービス証明書と管理証明書の 2 種類があります。
サービス証明書は、エンドポイントの通信保護に使用する従来からある SSL 証明書です。たとえば、IIS でホストしている Web サイトの SSL セキュリティを構成した経験がある場合は、この種類の証明書になじみがあると思います。運用環境での展開には、信頼されたルート証明機関が発行したサービス証明書が必要になります。そのため、VeriSign や DigiCert などのサードパーティ ベンダーからサービス証明書を購入する必要があります。
信頼されたルート証明機関については、このページ (Microsoft Windows) とこのページ (Microsoft Windows Phone 7) を参照してください。SSL 証明書の名前は、Web サイトのドメイン名と一致している必要があります。DNS の CNAME エントリで yourapp.cloudapp.net (Windows Azure で提供されているアプリケーション用のドメイン名) を www.yourcompany.com にマップする必要があります。セキュリティ上の理由から、yourapp.cloudapp.net にマップする証明書を購入することはできません。cloudapp.net の証明書を発行できるのはマイクロソフトだけです。ただし、開発目的で、自己署名の証明書を作成することはできます。
自己署名証明書は、エンド ユーザーが使用する Web ブラウザーでは信頼されないので、自己署名証明書の使用は、テスト目的に限定することをお勧めします。テストの段階では、Web ブラウザーで証明書が信頼されていないことが指摘されたり、Windows Communication Foundation (WCF) を使用した API 呼び出しが失敗することがあります。この現象は、証明書が機能していないことを示すものではなく、単に証明書がルート CA で信頼されていないことを示しています。Web ブラウザーにおけるテストの段階であれば、許容できる迷惑な動作ですが、エンド ユーザーに対して望ましくない動作であるのは明らかです。
API 呼び出しを使用してテストを実行するには、証明書の検証をスキップするコードを追加するか、証明書マネージャー、バッチ コマンド、またはコードを使用して自己署名証明書のルート CA 証明書を信頼されたルート証明機関の証明書ストアに追加する必要があります。マイクロソフトの David Hardin が、この問題についてブログで詳しく説明しています。
Windows Azure のサービス証明書は、Personal Information Exchange (.pfx) 形式にする必要があります。プレースホルダー パスワードを設定した自己署名証明書を作成するには、Visual Studio コマンドプロンプトを起動して、次のコマンドを実行します (パスワードは、最後に実行するコマンドで、好きなように変更できます)。
makecert -r -pe -n "CN=yourapp.cloudapp.net" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sky exchange
-sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv SSLDevCert.pvk SSLDevCert.cer
del SSLDevCert.pfx
pvk2pfx -pvk SSLDevCert.pvk -spc SSLDevCert.cer -pfx SSLDevCert.pfx -po password
SSL サービス証明書は、Windows Azure Management Portal の [Hosted Services] (ホストされるサービス) タブで [Add Certificate] (証明書の追加) をクリックし、パスワードを指定することでアップロードできます (図 3 参照)。
図 3 Windows Azure でサービス証明書を追加する
Windows Azure で使用するもう 1 つの種類の証明書は、管理証明書です。Windows Azure Tools for Microsoft Visual Studio では、管理証明書を使用して、Windows Azure 展開で開発者を認証します。CSUpload コマンド ライン ツールでも、Windows Azure Service Management の REST API 要求と同様に、管理証明書を使用して、仮想マシンの役割イメージを展開します。
Windows Azure Service Management コマンドレットでは、Windows PowerShell に管理証明書を使用します。Windows Azure Service Management コマンドレットを使用すると、Windows Azure ベースのシステムの展開、構成、および管理を簡単に実行および自動化できます。
Windows Azure の管理証明書は、X.509 (.cer) 形式にする必要があります。自己署名管理証明書を作成するには、Visual Studio コマンド プロンプトを起動し、次のコマンドを実行します。
makecert -r -pe -a sha1 -n "CN=Windows Azure Authentication Certificate" -ss my -len 2048 -sp "Microsoft Enhanced RSA and AES Cryptographic Provider" -sy 24 ManagementApiCert.cer
Windows Azure Management Portal の左側にある [Management Certificates] (管理証明書) を選択し、[Add Certificates] (証明書の追加) を選択して、管理証明書をアップロードします (図 4 参照)。Windows Azure で使用する自己署名証明書を作成する方法の詳細については、MSDN ライブラリの記事「役割の証明書を作成する方法 (英語)」を参照してください。
図 4 Windows Azure で管理証明書を追加する
従業員の入れ替わり
クラウド コンピューティング ソリューションの主なメリットは、サードパーティ ベンダーがオフプレミスでホストしていることです。この事実だけで、物理的な冗長性が確保されます。ですが、自己都合と会社都合のどちらにかかわらず、従業員が退職した場合に、リソースへのアクセスを制限するのは困難です。
そのため、クラウド コンピューティング リソースへの承認されたアクセスに影響する変更があるときには、いくつかの重要な手順に従うことが特に重要になります。まず、退職者がアクセスしていたサービス管理者アカウントのパスワードをリセットします。一元管理できる一意で独立したアカウント所有者とサービス管理者の ID を使用していれば、この作業が簡略化されます。
サービス管理者アカウントのパスワードをリセットできない場合は、アカウント所有者のアカウントを使用して MOCP にログインし、サービス管理者として一覧されているアカウントを更新できます。また、Windows Azure Management Portal を使用して、共同管理者として一覧されているアカウントも削除する必要があります。
2 つ目の手順は、関連する管理証明書の再発行です。管理証明書は、Visual Studio や Windows Azure の API 経由でホストされているサービスにアクセスするユーザーの認証手段となっています。そのため、退職した従業員が使用していた管理証明書を信頼することはできません。従業員が作業に使用していたコンピューターが社内に残っていても、なんらかの手段で証明書のコピーを持ち出している可能性があります。
管理証明書の再発行に必要な作業は、先ほどと同じコマンドを再実行して、Windows Azure Management Portal から以前の管理証明書を削除するだけです。新しい管理証明書をアップロードし、Windows Azure にアクセスする権限のあるすべての従業員に新しい管理証明書を配布します。管理証明書について必要な手順は、これだけです。サービス証明書の目的は暗号化で、認証ではないので、サービス証明書を再発行する必要はありません。
クラウドでアプリケーションをホストしていても、セキュリティ構造には、全面的に関与する必要があります (このトピックの詳細については、MSDN ライブラリの記事「Windows Azure のセキュリティ リソース(英語)」を参照してください)。アカウントと証明書の管理のどちらについても、これらのベスト プラクティスに従ってください。ベスト プラクティスに従うと、重要なビジネス データがセキュリティの脅威にさらされることなく、クラウド コンピューティングを十分に活用できます。
Microsoft IT の David Hardin およびデベロッパー&プラットフォーム エバンジェリズム チームの Daniel Odievich と、この記事を執筆する間、サポートを提供してくれたセキュリティ トーク シリーズのメンバーに感謝します。
Joshua Hoffman は、TechNet マガジンの前の編集長です。現在は、フリーランスで執筆活動とコンサルティングを行っており、クライアントにテクノロジとそれぞれのクライアントに合ったマーケティング手法に関するアドバイスをしています。また、市場調査の分野の成長と強化に注力している ResearchAccess.com (英語) で編集長を務めています。現在、ニューヨーク市に住んでいます。