セキュリティ保護された ASP.NET アプリケーションの構築 : ロードマップ

patterns and practices home

ロードマップ

J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy
Microsoft Corporation

November 2002
日本語版最終更新日 2003 年 3 月 17 日

対象
    Microsoft® .NET Framework version 1.0
    ASP.NET
    Enterprise Services
    Web services
    .NET Remoting
    ADO.NET
    Visual Studio® .NET
    SQL™ Server
    Windows® 2000

要約: このガイドでは、Windows 2000 および .NET Framework Version 1.0 に対応し、セキュリティで保護された ASP.NET アプリケーションを、実践的かつさまざまな状況に基づいて設計および作成する方法について説明します。また、分散 .NET Web アプリケーションの各層間での認証、認定、およびセキュリティで保護された通信の主要要素を中心として説明しています。

日本語版編集注: このページで提供する日本語訳は暫定版です。今後、内容に関して更新が入る可能性がありますのでご了承ください。

目次

このガイドの内容
   パート I : セキュリティ モデル
   パート II : アプリケーション シナリオ
   パート III : 各層の保護
   パート IV : 参照
このガイドの対象読者
前提知識
ご意見、お問い合わせ、およびサポート
ご協力いただいた方々

このガイドの推奨事項とサンプル コードについては、Visual Studio .NET Version 1.0 を使用してテストを実施しており、Windows 2000 Advanced Server SP 3、.NET Framework SP 2、および SQL Server 2000 SP 2 を実行するサーバーで検証されています。

このガイドの内容

このガイドでは、以下の内容について詳細に説明します。

  • 認証 (アプリケーションのクライアントを識別)
  • 認定 (それらのクライアントのアクセス制御を実行)
  • セキュリティで保護された通信 (メッセージの機密性を維持し、それらが認定されない第三者により改変されないことを保証)

なぜ、この認証、認定、およびセキュリティで保護された通信が主要な内容になるのでしょうか。

セキュリティの内容は広い範囲に及びます。調査によれば、認証と認定を早い段階で設計に取り入れておくと、アプリケーションにおける脆弱性を低く抑えられることがわかっています。セキュリティで保護された通信は、アプリケーションとの間、およびアプリケーション層の間でやり取りされる、資格情報などの機密データを保護するために、分散アプリケーションのセキュリティを強化する際に不可欠な要素です。

.NET Web アプリケーションの構築には、さまざまなテクノロジが使用されます。効率的なアプリケーション レベルでの認証および認定の戦略を打ち出すには、各製品やテクノロジ分野での各種セキュリティ機能の調整方法と、それらのセキュリティ機能を使って効率的かつ重層的なセキュリティ戦略を実現する方法を理解していることが必要です。このガイドでは、読者がこのような知識を理解できることを目的としています。このガイドで取り上げる各種テクノロジを図 1 に示します。

図 1 .NET Web アプリケーションのセキュリティ

このガイドは、4 つのパートに分かれています。論理的な区分けを使用することで、より簡単に内容を理解できるようになっています。

パート I : セキュリティ モデル

パート I では、このガイドの残りの部分の基礎となる内容を説明します。パート II で紹介される概念、原則、およびテクノロジに慣れておくことで、後続の章を十分に理解できるようになります。パート I には、以下の章が含まれます。

  • 第 1 章 はじめに

    この章では、このガイドの目的を示し、主要な用語を説明したうえで、後続の章で紹介する内容に適用される主な原則について記載します。

  • 第 2 章 ASP.NET アプリケーションのセキュリティ モデル

    この章では、セキュリティ上の観点から捉えた .NET Web アプリケーションの一般的な特徴について説明し、.NET Web アプリケーションのセキュリティ モデルを紹介します。また、セキュリティで保護された .NET Web アプリケーションを作成するために使用する主要な実装テクノロジも紹介します。

  • 第 3 章 認証と認定

    アプリケーションの複数の層を横断する形で、一貫性のある認証および認定の戦略を設計することは非常に重要な作業です。この章では、特定のアプリケーション シナリオに対し適切な戦略を決定する際に役立つ内容について説明します。これらは、最適な認証および認定の技術を選択し、それらをアプリケーション内の適切な場所に適用するのに有益な情報となります。

  • 第 4 章 セキュリティで保護された通信

    この章では、インターネットおよび企業イントラネット上のクライアントとサーバーがやり取りするデータにおいてメッセージの機密性と整合性を確保することを目的とした 2 つのコア テクノロジについて説明します。2 つのコア テクノロジとは、SSL と IPSec です。ここでは、リモートのサービス コンポーネントとの通信においてセキュリティを確保するために使用する RPC 暗号化についても説明します。

パート II : アプリケーション シナリオ

部分のアプリケーションは、イントラネット、エクストラネット、またはインターネット アプリケーションに分類されます。このパートでは、一般的なアプリケーション シナリオを、このカテゴリごとに 1 つずつ紹介します。各シナリオの主要な特徴を説明したうえで、セキュリティ上の潜在的な脅威を分析します。

次に、各アプリケーション シナリオについて、最適な認証、認定、およびセキュリティで保護された通信を構成し、実装する方法を紹介します。

パート III : 各層の保護

このパートでは、セキュリティで保護された .NET Web アプリケーションに関連する個々の層およびテクノロジについての詳細情報を紹介します。パート III には、以下の章が含まれます。

  • 第 8 章 ASP.NET セキュリティ

    この章では、ASP.NET Web アプリケーションで推奨されるセキュリティの詳細について説明します。フォーム認証と Windows 認証を実装する方法や、ASP.NET でサポートされている各種ゲートキーパーを使用した認定の実行方法を説明します。また、シークレットの保存方法、正しいプロセス IDの使用方法、Windows 認証を使用したネットワーク リソース (リモート データベースなど) へのアクセス方法についても説明します。

  • 第 9 章 Enterprise Services セキュリティ

    この章では、Enterprise Services アプリケーションに格納されるサービス コンポーネントのビジネス機能をセキュリティで保護する方法について説明します。Enterprise Services (COM+) ロールを認定に使用する方法とタイミングについて、および RPC 認証と偽装を構成する方法についての内容も含まれています。また、ASP.NET Web アプリケーションからセキュリティで保護された状態でサービス コンポーネントを呼び出す方法や、中間層のサービス コンポーネントを介して最初の呼び出し元のセキュリティ コンテキストを識別し、フローさせる方法についても説明します。

  • 第 10 章 Web サービス セキュリティ

    この章では、IIS と ASP.NET の基本的な機能を使用する、Web サービスのプラットフォーム レベルのセキュリティを中心に説明します。メッセージ レベルのセキュリティについては、Microsoft では Web Services Development Kit を開発中です。この開発キットでは、GXA (Global XML Architecture) の一部である WS-Security という仕様に準拠したセキュリティ ソリューションを構築することができます。

  • 第 11 章 .NET リモート処理のセキュリティ

    .NET Framework はリモート処理のインフラストラクチャとして、クライアントがリモートのアプリケーション ドメインおよびプロセスでホストされるオブジェクトや、リモート コンピュータのオブジェクトと通信することを可能にします。この章では、セキュリティで保護された .NET リモート処理のソリューションを実装する方法を説明します。

  • 第 12 章 データ アクセス セキュリティ

    この章では、セキュリティ保護されたデータ アクセスの戦略の作成に役立つ推奨事項とガイドラインを示します。ここで扱うトピックは、ASP.NET からデータベースに対する Windows 認証、接続文字列の保護、資格情報をデータベースに保存する際のセキュリティ保護、SQL コード注入攻撃に対する防御、データベース ロールの使用などです。

パート IV : 参照

このパートでは、ここまでに説明された技術、戦略、およびセキュリティ ソリューションについて理解を深めるための追加情報を紹介します。

  • 第 13 章 セキュリティのトラブルシューティング

    この章では、セキュリティ関連の問題を診断するときに役立つトラブルシューティングのヒント、テクニック、およびツールについて説明します。

  • 作業の手引き

    これまでの章で説明されているさまざまな問題解決テクニックの実行手順を説明します。

  • ベース構成

    このガイドの開発およびテストにおいて使用されたハードウェアとソフトウェアの一覧が記載されています。

  • 構成ストアとツール

    認証、認定、および通信保護の各種サービスで使用される構成ストアの概要と、関連する保守ツールの一覧が記載されています。

  • 参照リンク集

    このガイドの中心的なトピックに関する背景情報について説明した各種記事や Web サイトへのリンクが記載されています。

  • 動作のしくみ

    各種テクノロジがどのように機能するかについての詳細を説明した補足情報を提供します。

  • ASP.NET の ID マトリックス

    ASP.NET 内でホストされている ASP.NET Web アプリケーション、Web サービス、およびリモート コンポーネントで使用できる変数について、具体的な例を挙げて説明しています。これらの変数により、呼び出し元、スレッド、およびプロセスのレベルでの ID 情報が提供されます。

  • キーと証明書

    キーと証明書に関する背景情報を記載しています。

  • .NET Web アプリケーションのセキュリティ

    ASP.NETアプリケーションの各層の間で使用できる認証サービス、認定サービス、および通信保護サービスの図が示されています。

  • 用語集

    このガイドで使われているセキュリティ関連の用語集です。

このガイドの対象読者

このガイドは、ミドルウェアの構築を計画している開発者または設計者、または、次のテクノロジを使用して現在 .NET Web アプリケーションの開発に携わっている開発者を対象にしています。

  • ASP.NET
  • Web services
  • Enterprise Services
  • Remoting
  • ADO.NET

前提知識

セキュリティ保護された .NET Web アプリケーションを設計、構築する際にこのガイドを最も有効に利用するには、.NET 開発における技法とテクノロジに関する知識と経験を持ち合わせていることが必要です。分散アプリケーション アーキテクチャに関する知識、また .NET Web アプリケーション ソリューションを構築済みである場合には、構築したアプリケーションのアーキテクチャと展開パターンを把握している必要があります。

ご意見、お問い合わせ、およびサポート

このガイドに関する質問、ご意見、ご提案等ございましたら、secguide@microsoft.com (英語で) までご連絡ください。

このセキュリティ ガイドは、セキュリティ保護された .NET 分散アプリケーションの構築を支援することを目的としています。記載されているサンプル コードと情報は、現状のまま無保証で提供されています。このガイドの内容については検証しており、確実な手順と推奨事項を収録していますが、通常の Microsoft 製品と同様のサポートは提供されません。

Collaborators

ご協力いただいた方々

Manish Prabhu, Jesus Ruiz-Scougall, Jonathan Hawkins and Doug Purdy, Keith Ballinger, Yann Christensen and Alexei Vopilov, Laura Barsan, Greg Fee, Greg Singleton, Sebastian Lange, Tarik Soulami, Erik Olson, Caesar Samsi, Riyaz Pishori, Shannon Pahl, Ron Jacobs, Dave McPherson, Christopher Brown, John Banes, Joel Scambray, Girish Chander, William Zentmayer, Shantanu Sarkar, Carl Nolan, Samuel Melendez, Jacquelyn Schmidt, Steve Busby, Len Cardinal, Monica DeZulueta, Paula Paul, Ed Draper, Sean Finnegan, David Alberto, Kenny Jones, Doug Orange, Alexey Yeltsov, Martin Kohlleppel, Joel Yoker, Jay Nanduri, Ilia Fortunov, Aaron Margosis (MCS), Venkat Chilakala, John Allen, Jeremy Bostron, Martin Petersen-Frey, Karl Westerholm, Jayaprakasam Siddian Thirunavukkarasu, Wade Mascia, Ryan Kivett, Sarath Mallavarapu, Jerry Bryant, Peter Kyte, Philip Teale, Ram Sunkara, Shaun Hayes, Eric Schmidt, Michael Howard, Rich Benack, Carlos Lyons, Ted Kehl, Peter Dampier, Mike Sherrill, Devendra Tiwari, Tavi Siochi, Per Vonge Nielsen, Andrew Mason, Edward Jezierski, Sandy Khaund, Edward Lafferty, Peter M. Clift, John Munyon, Chris Sfanos, Mohammad Al-Sabt, Anandha Murukan (Satyam), Keith Brown (DevelopMentor), Andy Eunson, John Langley (KANA Software), Kurt Dillard, Christof Sprenger, J.K.Meadows, David Alberto, Bernard Chen (Sapient)

patterns and practices home