プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

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

ODP.NETでは、`OraclePermission`クラスを使用してコード・アクセス・セキュリティを実装します。これにより、データベースにアクセスするアプリケーション・コードに、アクセスに必要な権限が付与されます。

.NETアセンブリからODP.NETを介してOracle Databaseへのアクセスが試行されると、ODP.NETによって`OraclePermission`が要求されます。.NETランタイム・セキュリティ・システムにより、コール・アセンブリと、コール・スタックにあるその他すべてのアセンブリに`OraclePermission`が付与されているかどうかが確認されます。コール・スタックのすべてのアセンブリに`OraclePermission`が付与されている場合、コール・アセンブリからデータベースへのアクセスが可能になります。コール・スタックのアセンブリのいずれかに`OraclePermission`が付与されていない場合、セキュリティ例外がスローされます。

## OraclePermissionの構成

`DemandOraclePermission`構成属性は、ODP.NET APIの`OraclePermission`要求を有効化および無効化するために使用されます。`DemandOraclePermission`の値は、管理対象外ODP.NETのWindowsレジストリで、または管理対象外と管理対象のODP.NETのアプリケーション構成ファイルでそれぞれ指定することができます。

`DemandOraclePermission`構成属性を構成するには、次のWindowsレジストリ・キーを使用します。

    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\Assembly_Version\DemandOraclePermission

`Assembly_Version`は、`Oracle.DataAccess.dll`の完全なアセンブリ・バージョン番号です。`DemandOraclePermission`キーの種類は`REG_SZ`です。`1`(有効)または`0`(無効)に設定できます。

また、アプリケーションの構成ファイルを使用して、各アプリケーションの`OraclePermission`要求を有効化することもできます。次の例では、ODP.NET管理対象外ドライバのアプリケーション構成ファイルで`DemandOraclePermission`プロパティを有効にします。

    <configuration>
      <oracle.dataaccess.client>
        <settings>
          <add name="DemandOraclePermission" value="1"/>
        </settings>
      </oracle.dataaccess.client>
    </configuration>

同様に、`DemandOraclePermission`を使用すると、管理対象プロバイダを構成するsettingsセクションで、ODP.NET管理対象ドライバを構成できます。詳細は、settingsセクションも参照してください。

アセンブリのコード・グループに関連付けられている権限セットに`OraclePermission`が追加されていると、アプリケーションまたはアセンブリが正常にデータベースにアクセスできます。システム管理者は、Microsoft .NET構成ツール(`Mscorcfg.msc`)または手動で該当の権限セットを変更できます。

また、管理者はコード・アクセス・セキュリティ・ポリシー・ツール(`Caspol.exe`)などの適切な.NET Frameworkツールを使用して、マシン、ユーザーおよびエンタープライズ・レベルで`OraclePermission`を含めるようにセキュリティ・ポリシーを変更することもできます。

`DemandOraclePermission`構成属性を使用して`OraclePermission`要求が有効化されている場合、`OracleConnection`で`OraclePermission`オブジェクトを使用してセキュリティ要求が作成されます。アプリケーション開発者は、`OracleConnection`を使用する前に、これらのコードに十分な権限があることを確認する必要があります。

関連項目:

- OraclePermission Class

- OraclePermissionAttribute Class

## 信頼レベルを高または中にするWebアプリケーションのOraclePermissionの構成

高または中より低い信頼レベルで実行されているWebアプリケーションの場合、アプリケーションでセキュリティ・エラーが発生しないように、適切な`web_``TrustLevel``.config`ファイルに`OraclePermission`を構成する必要があります。

`OraclePermission`は、`OracProvCfg`ツールを使用して構成できます。`OraProvCfg.exe`によって、指定した.NET frameworkバージョンに関連付けられている`web_hightrust.config`および`web_mediumtrust.config`ファイルに適切なエントリが追加されます。次の例では、.NET 2.0 Webアプリケーションで`OraclePermission`を構成するために、`OraProvCfg`ツールを使用する方法が示されています。

    OraProvCfg.exe /action:config  /product:odp /component:oraclepermission
                   /frameworkversion:v2.0.50727
                   /providerpath:full_path_of_Oracle.DataAccess.dll

前述のコマンドを実行すると、次のエントリが、ASP.NET権限セットの`web_hightrust.config`および`web_mediumtrust.config`ファイルに追加されます。

    <IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess,
    Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1"
    Unrestricted="true" />

また、必要に応じて、`OraProvCfg`を使用して、`.config`ファイルからこれらのエントリを削除できます。次に、この例を示します。

    OraProvCfg.exe /action:unconfig  /product:odp  /component:oraclepermission
                   /frameworkversion:v2.0.50727
                   /providerpath:full_path_of_Oracle.DataAccess.dll

## 部分信頼環境で実行されるWindowsアプリケーションに対するOraclePermissionの構成

部分信頼環境で実行されるWindowsアプリケーションの場合、`security.config`ファイルの適切な権限セットに`OraclePermission`エントリを指定する必要があります。`security.config`ファイルは、`%windir%\Microsoft.NET\Framework\``{version}``\CONFIG`フォルダにあります。

次の例では、.NET 2.0 Windowsアプリケーション用の`OraclePermission`エントリが指定されています。

    <IPermission class="Oracle.DataAccess.Client.OraclePermission, Oracle.DataAccess,
     Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" version="1"
     Unrestricted="true" />