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;