【Azure for ITPRO】証明書の管理について


2010.9.2 証明書の準備について追記しました

Tech・Ed 2010 が終わり、ひとまず年度初めの一区切りといった感じです。

さて、今年度の私の大きなテーマは、Windows Azure Security & Management です。BLOG の投稿も、このあたりの情報が増えると思います。何かリクエストがあればぜひお送りください。

今回は Windows Azure における証明書の管理ついて解説しておきたいと思います。以下はMSDNの記事なのですが、実際にこのあたりの管理を行うのはインフラ屋さんですよねぇ(今後 TechNet にもクラウド情報をガンガン掲載していく予定です。MSDN になんか負けないぞ!っと)

Managing Service Certificates(英語です。すんません。)
http://msdn.microsoft.com/en-us/library/ff793095.aspx

上記の記事から、ITPROに必要な部分を抜き出して解説します。

Windows Azure で管理される証明書は2種類あります。「サブスクリプション証明書」と「サービス証明書」です。これらはいずれも俗にいう「サーバー証明書」ではありますが、使用する目的と管理方法が異なっています。

■サブスクリプション証明書

image

「サブスクリプション」とは、要は課金対象となる Windows Azure アカウントのことです。利用者はサブスクリプションにWindows Live ID を使用してログオンし、Windows Azure Portal 画面からホストサービスを追加したり、削除したり、ストレージアカウントを追加したり…各種操作を行うことができます。

では、そうした操作を独自のプログラムから行う場合にはどうしたらよいでしょう? Windows Azure には、開発者用にサービス管理 API(SMAPI)という専用の REST APIが用意されています。開発者は、SMAPI を使用して独自の管理プロセスを作成することができますが、アプリケーションと SMAPI の通信には SSL が必須となります。このときに使用されるのがサブスクリプション証明書 です。

azure01

サブスクリプション証明書は X.509 V3(.CER)に対応し、最低 2048 bit キー を持っている必要があります。自己署名でもOkです。

サブスクリプション証明書を登録するには、以下の Windows Azure Portal 画面から行います。

image

image

 ■サービス証明書

サブスクリプション証明書が SMAPI に使用される一方で、サービス証明書はその名の通り、Windows Azure 上に展開したアプリケーションサービスへの HTTPS を使用したアクセスに使用されます。

サブスクリプション証明書の主体が SMAPI にアクセスするサーバー(例えば管理用imageアプリをホストした社内サーバー)であるのに対し、サービス証明書の主体は Winodws Azure 上のロールインスタンス(ひとまず Windows Azure 上の仮想マシンのことだと思ってください)です。なので、証明書を作成する場合には、利用者からのアクセスに使用する FQDN でなければなりません。つまり、Windows Azure に新しいホストサービスを展開する際に URL(xxxxxxxx.cloudapp.net)を指定しますが、これを使用して証明書を作成する必要があります。自己署名証明書でも大丈夫です。

(2010.9.3 追記)xxxxxxx.cloudapp.net では証明書の取得ができないですよね。失礼しました。以下をご覧ください。
【Azure for ITPRO】サービス証明書の準備

証明書の形式は 秘密キー付のPFXファイル で、各ホストサービスの管理画面から登録することができます。

image

証明書を登録すると 主体(Subject)に加えて、Thumbprint が表示されます。システム管理者は、この Thumbprint と暗号化に使用したアルゴリズムを開発者に伝え、ロールインスタンスのサービス定義ファイルに設定してもらうことで、展開するホストサービスと証明書とが結びつきます。

<Certificates>
  <Certificate name="t33xxx" thumbprint="EB1~~~~~~~~~ACCDFAB5213911724" thumbprintAlgorithm="sha1" />
</Certificates>

面白いのは、アップロードした証明書がどういう経路を通ってロールインスタンスに展開azure2 されるかという点です。(あまり運用には関係ないのですが…)

Windows Azure には「ファブリックコントローラー」と呼ばれるソフトウェアが実装されています。ファブリックコントローラーについて説明すると長くなるのでやめておきますが、簡単に言ってしまうと、「重要でセキュリティ上危険を伴う処理はファブリックコントローラーを介して」行われます。証明書の登録もファブリックコントローラーを通ります。証明書が登録されると、これは一旦ファブリックコントローラー内の「安全な場所」に格納されます。これが「ルートOS」と呼ばれる管理用OSを経由してゲストOSに展開されます。

このように、証明書はホストサービスとは別に管理され、サービスとはThumbprint で関連付いているため、証明書の更新のたびにアプリケーションごとアップデートするといった必要はありません。

システム管理者は新しい証明書を追加したら、Thumbprint を Windows Azure Portal を使用して Service Configuration File に書き込むだけですので、再度開発者に依頼して作業する…といった必要はありません。

image

Comments (0)

Skip to main content