ある企業とそのパートナー企業のデータ交換シナリオについて検討します。この場合、発行元企業がインターネット上でサービスを発行、販売します。この企業は、限定したパートナー企業に対し、Web サービスを使用して情報を公開します。各パートナー企業のユーザーは、社内のイントラネット ベースの Web アプリケーションを使用して Web サービスにアクセスします。このシナリオを図 6.1 に示します。
クライアント証明書は、発行元企業側で Active Directory? ディレクトリ サービスのアカウントにマップされます。
エクストラネットには、企業内の Active Directory とは別の Active Directory があります。エクストラネットの Active Directory は固有のフォレスト内にあり、独自の信頼関係エリアを形成します。
Web サービス認定は、マップされた Active Directory アカウントに基づいて行います。各企業に固有の Active Directory アカウントで表されるパートナー企業 ID に基づく認定プロセスを使用することもできます。
データベース アクセスには、ASP.NET Web サービス プロセス ID に対応する単一の信頼関係接続を使用します。
Web サービスから取得されるデータは機密データであるため、転送中 (発行元企業の内部およびインターネット上) はセキュリティで保護する必要があります。
このシナリオのセキュリティ対策
このシナリオでは、各パートナー企業の内部 Web アプリケーションが Web サービスを使用して発行元企業からデータを取得し、ユーザーに提供します。発行元には、パートナー企業を認証するセキュリティ メカニズムが必要ですが、パートナー企業の各ユーザー ID の使用は、そのセキュリティ メカニズムでは適切ではありません。
エクストラネット パートナー企業の IP アドレスからの着信接続のみを許可するファイアウォールを使用して、それ以外の不正なインターネット ユーザーが Web サービス サーバーに接続するのを防止します。
表 6.1 セキュリティ対策
分類
詳細
認証
パートナー アプリケーションでは、Web サービスへの各要求にクライアント証明書を使用します。
パートナー企業からのクライアント証明書は、個々の Active Directory アカウントにマップされます。
データベースでは Windows® 認証を使用します。接続には ASP.NET Web サービス プロセス ID を使用します。データベースは Web サービスを信頼します。
認定
Web サービスはロール ベースの .NET 認証を使用して、Active Directory アカウントが Partner グループのメンバであるかどうかチェックします。
セキュリティで保護された通信
パートナー企業の Web アプリケーションと発行元の Web サービスとの通信は、SSL を使用して保護します。
Web サービスとデータベースとの通信は、IPSec を使用して保護します。
結果
このシナリオの推奨セキュリティ構成を図 6.2 に示します。
図 6.2 エクストラネットによる Web サービス企業とパートナー企業のデータ交換シナリオの推奨セキュリティ構成
SSL を使用した Web サービスの呼び出し (このガイドの「パート IV : 参照」の「SSL を使用して Web サービスを呼び出す方法」を参照)。このソリューション テクニックはパートナー企業において必要です。
パートナー アプリケーションの構成
この章では、パートナー アプリケーションとそのセキュリティ構成については詳しく扱いません。ただし、パートナー アプリケーションと Web サービスとの通信を円滑にするには、以下の点について考慮する必要があります。
パートナー企業の Web アプリケーションでは、内部ユーザーの認証および認定を可能にする認証メカニズムを選択できます。内部ユーザーは、それ以上の認証を受けるために Web サービスまで送られることはありません。
パートナー企業の Web アプリケーションがユーザーに代わって Web サービスを呼び出します。ユーザーが直接 Web サービスを呼び出すことはできません。
パートナー企業の Web アプリケーションは、クライアント証明書を使用して、Web サービスに対してクライアントの身元を証明します。
パートナー アプリケーションが ASP.NET Web アプリケーションである場合、そのアプリケーションは中間アウト プロセス コンポーネント (Enterprise Services アプリケーションまたは Windows サービス) を使用して、証明書を読み込み、Web サービスに渡す必要があります。
この処理が必要となる理由と実行方法の詳細については、このガイドの「パート IV : 参照」の「ASP.NET からのクライアント証明書を使用して Web サービスを呼び出す方法」を参照してください。
Web サービスは、マップされた Active Directory アカウントを使用して、PrincipalPermission 要求と .NET ロール チェックに基づいて認定を実行します。
SQL Server の認証方法を Windows 認証に設定することによって、資格情報は Web サーバーに保存されず、内部ネットワークを介して SQL Server に送信されることもありません。SQL 認証を使用する場合は、アプリケーション内とネットワークでの転送中に、ユーザー名とパスワードを含む接続文字列をセキュリティで保護することが重要です。接続文字列を保存するときには、DPAPI を使用するか、「第 12 章 データ アクセス セキュリティ」で説明するセキュリティで保護された保存戦略からいずれかの戦略を選択します。Web サービスとデータベースの間で転送される接続文字列 (および機密性のあるアプリケーション データ) を保護するには、IPSec を使用します。
パートナー企業と Web サービスの間に構成された SSL は、インターネットを介して転送されるデータを保護します。
Web サービスとデータベースの間に IPSec を構成すると、社内ネットワーク上のデータベースとの間でやりとりされるデータが保護されます。パートナー企業と発行元企業がプライベート ネットワークを使用して通信を行う場合には、IPSec を使用して、通信をセキュリティで保護するだけでなく、コンピュータ認証を実行することもできます。
注意点
データベース サーバー上の重複するローカル Windows アカウント (IIS のローカル ASPNET プロセス アカウントと一致するアカウント) を使用すると、管理の負担が増加します。パスワードの更新および同期を手動で定期的に行う必要があります。
.NET ロール ベースのセキュリティは Windows グループのメンバシップを基礎とするため、このソリューションでは、Windows グループがアプリケーションにアクセスするユーザーの分類に対応するレベルまで細分化されていることが必要となります。このシナリオでは、Active Directory アカウントは Partner グループのメンバでなければなりません。
Q&A
データベース側は最初の呼び出し元が誰であるのかを認識しません。監査の軌跡は、どのように作成するのですか。
Web サービスにおけるエンド ユーザー (パートナー企業) の操作を監査します。ストアド プロシージャのパラメータを使用して、パートナー企業の ID をアプリケーション レベルでデータベースに渡します。
関連シナリオ
発行元企業は、雑誌や新聞の記事など、機密性のないデータを発行する場合もあります。その場合、発行元はパートナー企業がそうしたデータを Web サービスから取得できるように、各パートナーに一意のユーザー名とパスワードを割り当てることができます。
こうした場合には、発行元の Web サイトを基本認証でユーザーを認証するように構成します。パートナー アプリケーションは、与えられたユーザー名とパスワードを使用して、Web サービス プロキシ用の資格情報を明示的に設定します。
エクストラネット パートナー企業の IP アドレスからの着信接続のみを許可するファイアウォールを使用して、それ以外の不正なインターネット ユーザーが Web サーバーに接続するのを防止します。
表 6.2 セキュリティ対策
分類
詳細
認証
パートナー企業内のユーザーは、Web アプリケーションにおいて、エクストラネット Active Directory との照合による基本認証またはフォーム認証によって認証されます。
データベースでは Windows 認証を使用します。接続には ASP.NET Web アプリケーション プロセス ID を使用します。データベースは Web アプリケーションを信頼します。
認定
Web アプリケーションは、.NET ロール ベースの認定を使用して、認証されたユーザーが Partner グループのメンバであるかどうかチェックします。なお、このユーザーは、フォーム認証の場合は GenericPrincipal オブジェクトで、基本認証の場合は WindowsPrincipal オブジェクトで表されます。
セキュリティで保護された通信
パートナー企業の Web ブラウザと発行元の Web アプリケーション間の通信は、SSL を使用して保護します。
Web アプリケーションとデータベースとの通信は、IPSec を使用して保護します。