連載 XML Webサービスのセキュリティ実装 第2回 承認と偽装によるアクセス制御 矢嶋 聡2003/05/28 |
|
Page1
Page2
|
2-2 ファイル承認
ファイル承認は、ファイルやフォルダに対するアクセスを制御する仕組みで、厳密にいえば、ASP.NET固有の機能ではなく、実質的にはNTFSファイルシステムを使用した機能です。アクセス制御に関する設定は、通常のNTFSファイルシステムのセキュリティ設定を使います。読者の皆さんが、必ずしもドライブをNTFSでフォーマットしているとは限らないので、ここでは基本的な考え方について説明します。むしろ、重要なのはファイル承認そのものではなく、この機能の背後にある仕組みを理解することです。
この仕組みを利用すると、XML Webサービスなどのプログラムから、ファイルなどのリソースにアクセスする際、ユーザーごとにアクセスを制御できます。ただし、ファイル承認を利用するには、注意する点があります。XML Webサービスのプログラムがファイルにアクセスするとき、Windows OSにしてみれば、ファイルにアクセスしているのは、あくまでASP.NETランタイムであり、このランタイムは「ASPNET」というユーザー・アカウントで実行されています。つまり、XML WebサービスやWebフォームのプログラムがファイルにアクセスするとき、NTFSにアクセスする評価対象はASPNETユーザー・アカウントです。各ユーザーがログオンに利用したアカウントではありません。
各ユーザーがログオンに使用したアカウントを使って、NTFSのファイルにアクセスするには、「偽装(Impersonation)」と呼ばれる設定が必要です。本来、ASPNETユーザーがアクセスすべきところを、特定のログオン・ユーザーに化けるのです。ログオン・ユーザーに偽装するには、Web.configに<identity>要素を含めて次のように記述します。
|
|
例 ログオン・ユーザーに偽装する |
impersonate属性をtrueに設定すると、ASP.NETランタイムはリソースにアクセスする際に、既定のASPNETユーザー・アカウントではなく、ログオン・ユーザーのふりをしてリソースにアクセスします。その結果、ユーザーごとにNTFSセキュリティが作用します。ただし、ファイル承認を使うには、Windowsユーザー・アカウントを使用した認証方法で認証されなければなりません。
ファイル承認において、ユーザーごとに制御する説明は以上ですが、この<identity>要素には、もう1つの使い方があります。偽装の際に、ログオン・ユーザーでアクセスさせるのではなく、一定のユーザー・アカウントで常にアクセスさせることもできます。この場合は、userName属性とpassword属性を追加して次のように記述します(XMLは、大文字・小文字を区別します。userNameはNだけ大文字なので注意してください)。
|
|
例 特定のアカウントに偽装する |
このように指定すると、ASP.NETランタイムは既定のASPNETアカウントを使わずに、指定されたアカウントでアクセスします。
実は、この<identity>要素はファイル承認に限らず、ASPNETランタイムが外部リソースにアクセスする際の偽装に利用できます。例えば、SQL Serverにアクセスする際に、XML WebサービスからWindows認証を使って透過的にアクセスしようとすると、既定ではログオン・ユーザーではなく、ASPNETアカウントでSQL Serverへのアクセスを試みます。NTFSファイルシステムに限らず、外部リソースにWindows認証を使ってアクセスする場合には、偽装に関して考慮する必要があります。
結局、<identity>要素の設定によって、外部リソースへのアクセス方法が、次の3つの中から選択することになります(図8)。
(1)ASPNETアカウントを使用する。
(2)ログオン・ユーザーのアカウントを使用する。
(3)特定のユーザー・アカウントを使用する。
図8 <identity>要素の設定によってアクセス方法が変わる |
なお、ASP.NETランタイムがASPNETアカウントで動作しているということは、厳密にいえば、「ワーカー・プロセス」がASPNETユーザー・アカウントで動作しているという意味です*2。ワーカー・プロセスのアカウントは変更することもできます。変更するには、マシン全体の構成を行うmachine.configファイル内で、<processModel>要素を修正します。詳しくは、ドキュメントで<processModel>を検索して参照してください。
*2 編集部注: ワーカー・プロセスは、IISに対して要求が来たときにASP.NETのプログラム実行用に起動されるプロセスです。転載元の「VB.NETによるXML Webサービス開発」では、6-1-3「実行環境の特徴」でワーカー・プロセスについて解説しています。 |
また、前述の3つの方法のうち(3)の方法は、Windows 2000ではもう1つ設定を変更する必要があります(Windows XPでは変更不要)。Windows 2000の既定の構成では、ログオン・アカウントに偽装することはできますが、特定の任意のアカウントに偽装する(3)の方法ができません。(3)を行うには、ASPNETアカウントに「オペレーティング・システムの一部として機能」というユーザー権利を与える必要があります。この権利をアカウントに与えるには、「ローカル・セキュリティ設定」などの管理ツールが必要です(図9)。
図9 「ローカル・セキュリティ設定」ツール |
詳しい設定方法は、このツールのヘルプをご覧ください(左ペインで「ユーザー権利の割り当て」を選択すると、右ペインの先頭行にこのユーザー権利が表示されるはずです。この行をダブルクリックすると、ユーザー権利の割り当てができます)。
VB.NETによる XML Webサービス開発 本記事は@ITハイブックスシリーズ「VB.NETによる XML Webサービス開発」(インプレス)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。 |
INDEX | ||
連載 XML Webサービスのセキュリティ実装 | ||
第2回 承認と偽装によるアクセス制御 | ||
2-1 URL承認(URL Authorization) | ||
2-2 ファイル承認 | ||
「連載 XML Webサービスのセキュリティ実装」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|