11 Oracle Database Provider for DRDAのセキュリティおよび記憶域に関する考慮事項

Oracle Database Provider for DRDAを使用してDB2DRDAアプリケーションをOracleに移行する前に、いくつかのセキュリティおよび記憶域の問題を検討する必要があります。

11.1 Oracle Database Provider for DRDAのセキュリティおよび記憶域の概要

Oracle Database Provider for DRDAは、Oracle Databaseのセキュリティおよび認可モデルを使用します。これにより、ユーザー・データへの正しいSQLアクセスが保証されます。

DRDAは、REQUESTERおよびOWNERという2つの認可モデルを指定します。これらはパッケージの属性PKGATHRULとして指定されます。

  • REQUESTERモデルでは、現在ログインしているユーザーが認可を制御します。

    REQUESTERモデルは動的SQLルールとも呼ばれ、実行時に構成されるSQLを実行するために使用されます。これは、Oracle DatabaseがSQLアクセスのために実装するセキュリティ・モデルです。

  • OWNERモデルでは、格納されているUSERID(パッケージ所有者、PKGOWNID)が、文の実行中に異なるUSERIDをインスタンス化します。

    OWNERモデルは静的SQLルールとも呼ばれ、パッケージ内で事前にバインドされているSQLに使用されます。Oracle Databaseは、同等のセキュリティ・モデルを実装していません。

Oracle Databaseでは1つのセキュリティ・モデルのみが実装されるため、格納および動的に作成されたパッケージ内のすべてのSQLは、動的SQLルール・モデルで実行されます。これは、AUTHID DEFINER属性を使用して作成された各PL/SQLオブジェクトのインスタンス化モードをオーバーライドしません。

AUTHID DEFINERの詳細は、Oracle® Database PL/SQL言語リファレンスを参照してください。

11.2 Oracle Database Provider for DRDAでの認証および暗号化

DRDAでは、データベースへのアクセス(ACCRDB)の実行前にユーザー認証(ACCSEC(SECMEC), SECCHK)を実行する必要があります。

11.2.1 認証サービス

DRDAには、2種類の認証サービス(専用および多重化用)があります。

  • 専用の場合、ASが1つの専用データベースへのアクセスを提供します。別のデータベースに接続するオプションはありません。後でACCRDBで渡されるrdbnamは、ターゲット・データベース名と一致している必要があります。一致しいていないと、セッションのアクセスが失敗し、RDBAFLRMメッセージが発行されます。

    このモードでは、ACCSECは認証を実行するためにrdbnamインスタンス変数を必要としません。これは、データベースを選択することがないためです。したがって、ASではACCSEC処理時に1つのデータベースとセッション関連付けを行い、要求されたセキュリティ・メカニズム(SECMEC)が使用可能であることを検証できます。SECCHKコマンドが送信されると、初期データベース・セッションが維持され、完全な認証が実行されます。

    多重化サーバーに対応していない古いARではこのモードを使用する必要があります。このモードでARからrdbnamが提供される場合、このrdbnamは接続データベースと突き合わせて検証される必要があります。

  • 多重化モードでは、ASは複数データベースへの同時アクセスを提供します。このモードでは、要求されたセキュリティ・メカニズムを検証するために、ACCSECのrdbnamインスタンス変数が必要です。ASは、セキュリティ検証のためにリクエストされたデータベースに接続します。SECCHKコマンドが送信されると、初期データベース・セッションが維持され、完全な認証が実行されます。

    このモードは、ACCSECの一部としてrdbnamを提供する新しいARでサポートされています。このモードでARがACCSECのrdbnamを提供しない場合、エラーが生成され、RDBAFLRM応答がACCSECに送信されます。

11.2.2 暗号化サービス

Oracle Database Provider for DRDAでは次のセキュリティ・メカニズムがサポートされています。

  • EUSRIDPWD: 暗号化されたユーザーIDとパスワードのメカニズム

  • EUSRIDNWPWD: 暗号化されたユーザーID、パスワードおよび新規パスワードのメカニズム

  • USRIDPWD: ユーザーIDとパスワードのメカニズム

  • USRIDNWPWD: ユーザーID、パスワード、および新規パスワードのメカニズム

  • USRENCPWD: ユーザーIDとパスワードの暗号化メカニズム

セキュリティ・メカニズムがアクセス可能であると検証されたら、実際のセキュリティ認可(SECCHK)に進むことができます。

11.3 Oracle Database Provider for DRDAでのデータベース・ロール

Oracle Database Provider for DRDAでは、DRDAAS_ADMIN_ROLEおよびDRDAAS_USER_ROLEの2つのロールを使用します。

11.3.1 DRDAAS_ADMIN_ROLE

DRDAAS_ADMIN_ROLEロールにより、DBMS_DRDAAS_ADMINパッケージへのアクセスと使用が許可されます。これは、Oracle Database Provider for DRDA固有のDBAレベルの権限です。Oracle DatabaseへのリモートDRDAアクセスを管理する管理者には、このロールを付与する必要があります。

11.3.2 DRDAAS_USER_ROLE

DRDAAS_USER_ROLEロールは、Oracle Database Provider for DRDAユーザーに対し次の目的でのDBMS_DRDAASパッケージへのアクセスを許可します。

  • DRDAパッケージのバインド

  • Oracle Database Provider for DRDAパッケージ・リソース表への読取りアクセスの許可

  • パッケージの実行

DRDAAS_USER_ROLEロールの権限が付与されていないOracle Database Provider for DRDAユーザーは、アクセスが許可されているDRDAパッケージを実行できません。

11.4 Oracle Database Provider for DRDAの記憶域

Oracle Database Provider for DRDAユーザーには、SYSIBMという名前の記憶域が割り当てられています。これは、SYSIBM表領域とSYSIBMユーザーによって実装されます。

11.4.1 SYSIBM表領域

管理およびサポート機能のためにアプリケーション・サーバーで提供および使用されるすべての表、ビューおよびパッケージは、表領域SYSIBMに含まれます。Oracle Database Provider for DRDAサポート・パッケージをインストールする前にこの表領域を作成する必要があります。SYSIBM表領域を作成する方法の例については、製品に付属するcatdrdaas.sqlスクリプトを参照してください。「Oracle Database Provider for DRDAの作成およびメンテナンスのスクリプト」で「catdrdaas.sql」のリストを参照してください。

create tablespace SYSIBM datafile 'sysibm01.dbf' size 70M reuse 
   extent management local segment space management auto online;

11.4.2 SYSIBMユーザー

Oracle Database Provider for DRDAで提供および使用されるすべての表、ビューおよびパッケージは、ユーザー・スキーマSYSIBMに含まれています。Oracle Database Provider for DRDAのパッケージおよび表のインストール時に、ユーザーIDがロック済アカウントとして作成され、その記憶域としてSYSIBM表領域を使用するように設定されます。