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

更新 : 2007 年 11 月

複雑にリンクされた現在のコンピュータ システムには、多種多様な、多くの場合は不明なソースからコードが送信されてきます。このようなコードは、電子メールに添付されていたり、文書に含まれていたり、インターネットからダウンロードされたりします。ウイルスやワームのような悪意のあるコードによってコンピュータ上のデータを破損または破壊され、時間的にも金銭的にも直接の被害を受けた経験のあるユーザーは少なくはありません。

ほとんどのセキュリティ機構では、ログオン資格情報 (通常はパスワード) に基づいてユーザーに権限を与え、そのユーザーがアクセスできるリソース (多くの場合はディレクトリとファイル) を制限しています。しかし、この方法では対処できないさまざまな問題が存在します。たとえば、ユーザーはさまざまなソースからコードを入手しますが、中には信頼できない入手先もあります。コードに、悪意のあるコードからねらわれやすいバグがあったり、脆弱性が潜んでいる可能性もあります。また、コードがユーザーの予期しない動作をする場合もあります。これらの結果、ユーザーが慎重で信頼できるとしても、実行したソフトウェアが悪意のあるソフトウェアやエラーを含むソフトウェアであった場合は、コンピュータ システムが損害を受けたり、機密データが漏洩したりする可能性があります。多くのオペレーティング システムのセキュリティ機構では、Web ページ上のスクリプトなどの場合を除き、コードを実行するためには、その細部にわたるまで完全に信頼されていることが要求されます。そのため、信頼関係のないコンピュータ システム間でも、一方のシステムから送信されたコードをもう一方のシステムで安全に実行できるようにするための、幅広く適用できるセキュリティ機構が必要になります。

コンピュータ システムを悪意のあるコードから簡単に保護できるようにしたり、発生元の不明なコードを安全に実行できるようにしたり、信頼されているコードを故意または過失によって露呈したセキュリティの脆弱性から保護できるようにしたりするために、.NET Framework はコード アクセス セキュリティというセキュリティ機構を提供しています。コード アクセス セキュリティにより、コードの発生元や、そのコードの身元を示すその他の基準に基づいて、コードをさまざまなレベルで信頼できます。また、コードに対してさまざまな信頼レベルを強制的に適用することにより、実行するために完全に信頼されていなければならないコードの数は少なくなります。コード アクセス セキュリティを使用することで、作成したコードが悪意のあるコードやバグのあるコードによって誤用される可能性も低くなります。さらに、コードによって実行できる操作だけでなく、実行できない操作も指定できるため、さまざまな問題について開発者の責任を限定することにもつながります。コード アクセス セキュリティは、コードにセキュリティの脆弱性があった場合に、それによって被る可能性のある損害を最小限に抑えるためにも役立ちます。

共通言語ランタイムに対応したマネージ コードは、コード アクセス セキュリティ呼び出しを行わない場合でも、コード アクセス セキュリティの利点を享受することになります。ただし、「コード アクセス セキュリティの基礎」で説明するように、すべてのアプリケーションでコード アクセス要求を行う必要があります。

このセクションの内容

関連するセクション