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