0

ドメインユーザー(MYDOMAIN \ someuser)として実行するように構成されたIIS7のサイトがいくつかあります。

Microsoft.Web.Administration名前空間を使用してサーバー構成をスキャンしていますが、次の「なりすまし」サイトの1つにアクセスすると、例外がスローされます。

using (ServerManager sm = new ServerManager()) {
    foreach (Site site in sm.Sites) {
        foreach (Application app in site.Applications.Reverse()) {
            foreach (VirtualDirectory vdir in app.VirtualDirectories.Reverse()) {
                var config = app.GetWebConfiguration();
                foreach (var locationPath in config.GetLocationPaths()) {
                    // error occurs in GetLocationPaths()
                }
            }
        }
    }
}

実際のエラーメッセージは次のとおりです。

COMException was unhandled 
Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 
Line number: 279
Error: Failed to decrypt attribute 'password' because the keyset does not exist

IISは、暗号化されたMYDOMAIN \ someuserパスワードをapplicationHost.configに格納しているようです。これは、セキュリティの点で優れていますが、ServerManagerにこれを復号化させる方法がわかりません。

ServerManagerにこれを復号化させる方法、またはパスワードをプレーンテキストで保存するようにIISに指示する方法に関するヒントはありますか?

ちなみに、これはWindows7RCのIIS7にあります。

4

1 に答える 1

0

IIS は、スキーマで「encrypted=true」とマークされている属性に暗号化を使用します。また、そのスキーマでは、暗号化に使用するプロバイダーを定義します (C:\Windows\System32\inetsrv\config\schema\IIS_Schema.xml を参照)。仮想ディレクトリ内のパスワードの場合は、で定義されている AesProvider を使用します。 ApplicationHost.config 内のセクション configProtectedData。

そこには、暗号化を解除したいアカウントにアクセス許可を付与する必要がある KeyContainerName が表示されます。セキュリティ上の理由から、デフォルトでは管理者のみが含まれています。

あなたのコードが失敗している場合、管理者ではないユーザーに ApplicationHost.config へのアクセスを許可したと思いますが、そうですか? もしそうなら、これがあなたの環境のセキュリティリスクを引き起こさないことを確認することをお勧めします.

于 2010-05-23T03:35:30.187 に答える