次の方法で共有


セキュリティの概要

アプリケーションのセキュリティ保護は進行中のプロセスです。 新しいテクノロジがどのような種類の将来の攻撃をもたらすかを予測することは不可能であるため、開発者がアプリケーションがすべての攻撃から安全であることを保証できる点は決してありません。 逆に、システムのセキュリティ上の欠陥をまだ検出 (または公開) していないからといって、存在しない、または存在する可能性があるわけではありません。 プロジェクトの設計フェーズ中にセキュリティを計画し、アプリケーションの有効期間中にセキュリティを維持する方法を計画する必要があります。

セキュリティの設計

セキュリティで保護されたアプリケーションを開発する際の最大の問題の 1 つは、多くの場合、セキュリティは後から考え、プロジェクトのコードが完了した後に実装する必要があるということです。 最初にアプリケーションにセキュリティを組み込まないと、アプリケーションをセキュリティで保護するものはほとんど考えられていないため、安全でないアプリケーションにつながります。

最後の最後のセキュリティ実装は、新しい制限の下でソフトウェアが中断したり、予期しない機能に対応するために書き換える必要がある場合に、より多くのバグにつながります。 改訂されたコードの各行には、新しいバグを導入する可能性が含まれています。 このため、新機能の開発と並行して進めることができるように、開発プロセスの早い段階でセキュリティを検討する必要があります。

脅威モデリング

攻撃対象となる可能性のある攻撃をすべて理解していない限り、システムを攻撃から保護することはできません。 脅威 モデリングと呼ばれるセキュリティ脅威を評価するプロセスは、ADO.NET アプリケーションにおけるセキュリティ侵害の可能性と影響を判断するために必要です。

脅威モデリングは、敵対者の見解を理解し、システムのセキュリティを特徴付け、脅威を特定する 3 つの大まかな手順で構成されます。

脅威モデリングは、アプリケーションの脆弱性を評価して、最も機密性の高いデータを公開するため、最も危険な脆弱性を見つけるための反復的なアプローチです。 脆弱性を特定したら、重大度順にランク付けし、脅威に対抗するための優先順位付けされた一連の対策を作成します。

詳細については、次のリソースを参照してください。

リソース 説明
セキュリティ エンジニアリング ポータルの 脅威モデリング サイト このページのリソースは、脅威モデリング プロセスを理解し、独自のアプリケーションをセキュリティで保護するために使用できる脅威モデルを構築するのに役立ちます

最小限の特権の原則

アプリケーションを設計、ビルド、デプロイするときは、アプリケーションが攻撃されると想定する必要があります。 多くの場合、これらの攻撃は、コードを実行しているユーザーのアクセス許可で実行される悪意のあるコードから発生します。 他の問題は、攻撃者によって悪用された意図的に作成されたコードから生じる可能性があります。 セキュリティを計画するときは、常に最悪のシナリオが発生すると想定してください。

使用できる対策の 1 つは、最小限の特権で実行することで、コードの周囲にできるだけ多くの壁を立てようとすることです。 最小特権の原則とは、必要な作業を完了するために、特権を必要最小限のコードに対して、必要最小限の時間だけ付与することを言います。

セキュリティで保護されたアプリケーションを作成するためのベスト プラクティスは、アクセス許可をまったく使用せず、実行する特定のタスクに対して最も狭いアクセス許可を追加することです。 これに対し、すべてのアクセス許可から始めて、個々のアクセス許可を拒否すると、セキュリティ ホールが意図せずに必要以上のアクセス許可を付与する可能性があるため、テストと保守が困難な安全でないアプリケーションが発生します。

アプリケーションのセキュリティ保護の詳細については、次のリソースを参照してください。

リソース 説明
アプリケーションのセキュリティ保護 一般的なセキュリティ トピックへのリンクが含まれています。 また、分散アプリケーション、Web アプリケーション、モバイル アプリケーション、デスクトップ アプリケーションをセキュリティで保護するためのトピックへのリンクも含まれています。

コード アクセス セキュリティ (CAS)

コード アクセス セキュリティ (CAS) は、コードが保護されたリソースと操作に対して持つアクセスを制限するのに役立つメカニズムです。 .NET Framework では、CAS は次の関数を実行します。

  • さまざまなシステム リソースにアクセスする権限を表すアクセス許可とアクセス許可セットを定義します。

  • アクセス許可のセットをコード グループ (コード グループ) に関連付けることで、管理者がセキュリティ ポリシーを構成できるようにします。

  • コードで、実行に必要なアクセス許可と、持つ必要があるアクセス許可を要求し、コードが持つ必要のないアクセス許可を指定できるようにします。

  • コードによって要求されたアクセス許可とセキュリティ ポリシーによって許可される操作に基づいて、読み込まれる各アセンブリにアクセス許可を付与します。

  • 呼び出し元が特定のアクセス許可を持っていることを要求するコードを有効にします。

  • コードで、呼び出し元がデジタル署名を持っていることを要求できるため、特定の組織またはサイトからの呼び出し元のみが保護されたコードを呼び出すことができます。

  • 呼び出し履歴上のすべての呼び出し元の付与されたアクセス許可と呼び出し元が持つ必要があるアクセス許可を比較することで、実行時にコードに制限を適用します。

攻撃が成功した場合に発生する可能性のある損害の量を最小限に抑えるには、コードのセキュリティ コンテキストを選択します。このコンテキストでは、作業を完了するために必要なリソースにのみアクセス権を付与し、それ以上は許可しません。

詳細については、次のリソースを参照してください。

リソース 説明
コード アクセスのセキュリティと ADO.NET ADO.NET アプリケーションの観点から、コード アクセス セキュリティ、ロールベースのセキュリティ、部分的に信頼された環境の間の相互作用について説明します。
コード アクセス セキュリティ .NET Framework の CAS について説明するその他のトピックへのリンクが含まれています。

データベース セキュリティ

最小特権の原則は、データ ソースにも適用されます。 データベース セキュリティに関する一般的なガイドラインには、次のようなものがあります。

  • 可能な限り低い特権を持つアカウントを作成します。

  • コードを動作させるためだけに、管理者アカウントへのアクセスをユーザーに許可しないでください。

  • サーバー側のエラー メッセージをクライアント アプリケーションに返さないでください。

  • クライアントとサーバーの両方ですべての入力を検証します。

  • パラメーター化されたコマンドを使用して、動的 SQL ステートメントを回避します。

  • 使用しているデータベースのセキュリティ監査とログ記録を有効にして、セキュリティ侵害に対してアラートが送信されるようにします。

詳細については、次のリソースを参照してください。

リソース 説明
SQL Server のセキュリティ SQL Server のセキュリティの概要と、SQL Server を対象とするセキュリティで保護された ADO.NET アプリケーションを作成するためのガイダンスを提供するアプリケーション シナリオについて説明します。
データ アクセス戦略に関する推奨事項 データへのアクセスとデータベース操作の実行に関する推奨事項を提供します。

セキュリティ ポリシーと管理

コード アクセス セキュリティ (CAS) ポリシーを不適切に管理すると、セキュリティの弱点が生じる可能性があります。 アプリケーションがデプロイされたら、セキュリティを監視するための手法を使用し、新しい脅威が発生した場合にリスクを評価する必要があります。

詳細については、次のリソースを参照してください。

リソース 説明
セキュリティ ポリシー管理 セキュリティ ポリシーの作成と管理に関する情報を提供します。
セキュリティ ポリシーのベスト プラクティス セキュリティ ポリシーを管理する方法を説明するリンクを示します。

こちらも参照ください