ODP.NETでは、OraclePermissionクラスを使用してコード・アクセス・セキュリティを実装します。これにより、データベースにアクセスするアプリケーション・コードに、アクセスに必要な権限が付与されます。
.NETアセンブリからODP.NETを介してOracle Databaseへのアクセスが試行されると、ODP.NETによってOraclePermissionが要求されます。.NETランタイム・セキュリティ・システムにより、コール・アセンブリと、コール・スタックにあるその他すべてのアセンブリに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を使用する前に、これらのコードに十分な権限があることを確認する必要があります。
高または中より低い信頼レベルで実行されている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アプリケーションの場合、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" />