ヘッダーをスキップ
Oracle® SQL Developer IBM DB2からの移行のための追加情報
リリース3.0
B66846-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 データベース・セキュリティ

この章では、IBM DB2データベースのセキュリティ機能およびSQL Developerによるそれらの制御方法について説明します。

3.1 IBM DB2 UDBグループおよびユーザーのマッピング

IBM DB2 UDBのセキュリティは認可レベルおよび権限を含むシステムによって管理されます。ユーザーは必要な権限や認可レベルを持つオブジェクトにのみアクセスできます。

SQL DeveloperによってIBM DB2ユーザーがOracleユーザーにマップされます。ユーザーはUSR_GUESTのように接頭辞USR_を付けてOracleにマップされます。IBM DB2グループはロールとしてOracleにマップされます。一部のシステム・レベルの権限および表、列レベルの権限はIBM DB2からOracleのユーザーに移行されます。

IBM DB2グループの移行時に、SQL DeveloperによってIBM DB2グループと同じ名前のOracleロールが作成されます。Oracleにおけるロールは、ユーザーまたは他のロールに付与可能な一連の権限です。IBM DB2グループに属するユーザーはシステムのカタログ表からは判断できないため、SQL Developerは移行されたロールをユーザーに付与しません。移行されたユーザーにロールを付与するのはOracle Database管理者の責任です。ロールの付与、削除、変更については、『Oracle Database SQL言語リファレンス』を参照してください。

3.2 IBM DB2 UDBの認可レベルのOracleへのマッピング

IBM DB2の認可は、インスタンス・レベルの認可およびデータベース・レベルの認可の2種類に分類できます。

3.2.1 インスタンス・レベルの認可

IBM DB2 UDBで利用可能なインスタンス・レベルの認可は3つあります。

  • 管理者認可レベル(SYSADM)

  • システム制御認可レベル(SYSCTRL)

  • システム保守認可レベル(SYSMAINT)

これら3つのインスタンス・レベルの認可は、いずれもインストール先プラットフォームのセキュリティ・システムによって制御されます。セキュリティ・モデルにはクロス・プラットフォームの違いがあるため、SQL Developerはインスタンス・レベルの認可を移行しません。Oracleのシステム・レベルの認可の詳細は、『Oracle Database管理者ガイド』を参照してください。

3.2.2 データベース・レベルの認可

IBM DB2で利用可能なデータベース・レベルの認可は6つあります。これらの認可は、単一のIBM DB2インスタンスではなく、特定のデータベースで利用できます。IBM DB2のデータベース・レベル権限のOracleへの直接マッピングはありません。

次の表は、ユーザーおよびSQL DeveloperによってユーザーとしてOracleに移行されるスキーマに割り当てられる権限について説明しています。

Oracle権限 説明
CONNECT この権限は、Oracleを使用する権限をユーザーに付与します。CONNECTロールを持つユーザーは、表、ビュー、順序、クラスタ、シノニム、セッションおよび他のデータベースへのリンクも作成できます。
RESOURCE この権限は、ユーザーに、各自の表、順序、プロシージャ、トリガー、索引およびクラスタを作成する権限を付与します。
CREATE PUBLIC SYNONYM この権限は、パブリック・シノニムをOracle Databaseに作成する権限をユーザーに付与します。これによって、ユーザーが別名を作成するIBM DB2 UDBの機能がエミュレートされます。
DROP PUBLIC SYNONYM この権限は、Oracle Databaseのパブリック・シノニムを削除する権限をユーザーに付与します。

Oracleには、個別のシステム権限だけでも100を超える権限があります。Oracleでの認可の設定方法の詳細は、『Oracle Database管理者ガイド』を参照してください。

3.3 IBM DB2 UDBの権限のOracleへのマッピング

データベース権限は、特定のオブジェクトで特定の処理または操作を実行する権限を付与します。IBM DB2権限は、次の種類に分類されます。

3.3.1 表権限および列権限

次の権限を表および列に付与できます。

3.3.1.1 CONTROL権限

ALTER、INDEX、REFERENCES、INSERT、DELETEおよびUPDATE権限を表に付与します。また、この権限は、表に適切な権限を付与する権限を他のユーザーおよびグループに付与します。また、表を削除する権限や表に対する統計を更新する権限も付与します。

3.3.1.2 ALTER権限

表に列を追加するなど、表定義を変更する権限を付与します。また、COMMENT文を使用して表にコメントを追加する権限や、CREATE TRIGGER文を使用して表にトリガーを作成する権限も付与します。

3.3.1.3 DELETE権限

表から行を削除する権限を付与します。

3.3.1.4 INDEX権限

表に索引を作成する権限を付与します。

3.3.1.5 INSERT権限

表に行を挿入する権限を付与します。

3.3.1.6 REFERENCE権限

現在の表の親キーを参照する、他の表の外部キー制約を作成または削除する権限を付与します。REFERENCE権限は表全体または列に付与されることがあります。

3.3.1.7 SELECT権限

SELECT文を使用して表からデータを選択する権限を付与するほか、副問合せで表を使用する権限も付与します。

3.3.1.8 UPDATE権限

表の行を更新する権限を付与します。UPDATE権限は表全体または列に付与されることがあります。

次の表に、表および列それぞれについて、IBM DB2 UDBからOracleへの権限のマッピングを示します。

IBM DB2 UDBの表権限 Oracleの表権限
CONTROL ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE
ALTER ALTER
DELETE DELETE
INDEX INDEX
INSERT INSERT
REFERENCES REFERENCES
SELECT SELECT
UPDATE UPDATE

IBM DB2 UDBの列権限 Oracleの列権限
CONTROL INSERT、REFERENCES、UPDATE
INSERT INSERT
REFERENCES REFERENCES
UPDATE UPDATE

3.3.2 索引権限

CONTROL権限は索引に利用できる唯一の権限です。この権限は1人のユーザーまたはユーザーのグループに付与され、索引に対する削除権限をユーザーに付与します。この権限を付与するには、ユーザーはSYSADM認可またはDBADM認可を持っている必要がありますが、この権限は索引作成者に自動的に付与されます。

Oracleで索引を削除するには、ユーザー・アカウントに索引が含まれているか、ユーザーがDROP ANY INDEXシステム権限を持っている必要があります。制約に定義された索引を削除するには、索引を削除する前に、索引自体を無効にするか、削除する必要があります。

ただし、OracleのDROP ANY INDEXシステム権限は、データベースの任意のユーザー・アカウントの索引を削除する権限を付与します。すべての索引ではなく、指定された索引のみを削除する権限が付与されるため、これはIBM DB2 UDBの索引のCONTROL権限にはマップされません。SQL Developerは索引の作成者を判断し、このユーザーにOracle Databaseの索引を削除する権限が付与されます。

Oracleは、索引を変更する機能も提供します。索引の再構築や結合、実際の記憶特性およびデフォルトの記憶特性の変更を行うことができますが、列構造は変更できません。索引を変更するには、ユーザー・アカウントに索引が含まれているか、ユーザーがALTER ANY INDEXシステム権限を持っている必要があります。この場合も、SQL Developerは、IBM DB2からOracleに索引をマップするときに索引の作成者を判断し、このユーザーに索引に対する権限を変更する権限が付与されます。

3.3.3 順序権限

順序オブジェクトはSQL Developerによっては移行されません。したがって、それらに適用される権限の移行はこのドキュメントの範囲外です。

3.3.4 スキーマ権限

IBM DB2スキーマは名前付きオブジェクトのコレクションです。スキーマはIBM DB2データベースのオブジェクトを論理的に分類し、表、索引、ビューおよびトリガーを含むことがあります。スキーマ自体がデータベースのオブジェクトであり、CREATE SCHEMA文を使用して作成されます。スキーマ名は、tab_schema.mytableのように2つの部分からなるオブジェクト名の上位部分として使用されます。オブジェクトの作成時にスキーマ名が指定されると、そのオブジェクトはそのスキーマに割り当てられます。指定されない場合は、IMPLICIT_SCHEMAの値が使用されます。これはデフォルトのスキーマ名です。

次の権限をスキーマに付与できます。

3.3.4.1 CREATIN権限

これは、スキーマにオブジェクトを作成する権限を付与します。

3.3.4.2 ALTERIN権限

これは、スキーマの表定義を変更し、スキーマのオブジェクトにコメントを追加する権限を付与します。

3.3.4.3 DROPIN権限

これは、スキーマのオブジェクトを削除する権限を付与します。

IBM DB2のスキーマ・オブジェクトには、Oracleへの直接マッピングは存在しません。Oracle Databaseには複数のユーザーがおり、各ユーザーはユーザー・アカウントを持ちます。各ユーザー・アカウントは、表や索引などのデータベース・オブジェクトの論理コレクションです。したがって、IBM DB2のスキーマはOracleのユーザーにマップされます。移行中にIBM DB2のスキーマがあると、SQL DeveloperはIBM DB2のスキーマの名前を使用してターゲットのOracle Databaseにユーザー・アカウントを作成します。

次に、SCHという名前のIBM DB2スキーマの、USRというユーザーが所有するTABという名前の表を使用して、SQL DeveloperがどのようにIBM DB2スキーマをOracleでエミュレートするかを示します。

  1. SQL Developerは、SCHという名前のユーザー・アカウントをOracle Databaseに作成します。

  2. SQL Developerは、SCHユーザー・アカウントにTABという名前の表を作成します。SCHユーザー・アカウントが自動的にその表の所有者になります。

  3. SQL Developerは、USRという名前の別のユーザー・アカウントをOracle Databaseに作成します。USRは、OracleのUSRというユーザーにマップされます。

  4. SQL Developerは、USRユーザー・アカウントにTABという名前のプライベート・シノニムを作成します。このシノニムによって、USRとして接続するユーザーは表名にSCHという接頭辞を明示的に付けなくても、TAB表を操作できます。

SCHスキーマに存在したすべてのオブジェクトは、OracleのSCHユーザー・アカウントに作成されます。SCHスキーマに存在するオブジェクトについて、IBM DB2のUSRユーザーに付与されるすべての表および列レベルの権限がOracleに移行されます。OracleのUSRユーザー・アカウントは、SCHユーザー・アカウントに存在するオブジェクトに対する適切な権限を付与されます。

3.3.5 パッケージ権限

SQL Developerでは、パッケージ・オブジェクトのIBM DB2からの移行は行われません。