この章では、IBM DB2データベースのセキュリティ機能およびSQL Developerによるそれらの制御方法について説明します。
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言語リファレンス』を参照してください。
IBM DB2の認可は、インスタンス・レベルの認可およびデータベース・レベルの認可の2種類に分類できます。
IBM DB2 UDBで利用可能なインスタンス・レベルの認可は3つあります。
管理者認可レベル(SYSADM)
システム制御認可レベル(SYSCTRL)
システム保守認可レベル(SYSMAINT)
これら3つのインスタンス・レベルの認可は、いずれもインストール先プラットフォームのセキュリティ・システムによって制御されます。セキュリティ・モデルにはクロス・プラットフォームの違いがあるため、SQL Developerはインスタンス・レベルの認可を移行しません。Oracleのシステム・レベルの認可の詳細は、『Oracle Database管理者ガイド』を参照してください。
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管理者ガイド』を参照してください。
データベース権限は、特定のオブジェクトで特定の処理または操作を実行する権限を付与します。IBM DB2権限は、次の種類に分類されます。
表権限および列権限
索引権限
順序権限
スキーマ権限
パッケージ権限
次の権限を表および列に付与できます。
ALTER、INDEX、REFERENCES、INSERT、DELETEおよびUPDATE権限を表に付与します。また、この権限は、表に適切な権限を付与する権限を他のユーザーおよびグループに付与します。また、表を削除する権限や表に対する統計を更新する権限も付与します。
表に列を追加するなど、表定義を変更する権限を付与します。また、COMMENT文を使用して表にコメントを追加する権限や、CREATE TRIGGER文を使用して表にトリガーを作成する権限も付与します。
表の行を更新する権限を付与します。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 |
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に索引をマップするときに索引の作成者を判断し、このユーザーに索引に対する権限を変更する権限が付与されます。
IBM DB2スキーマは名前付きオブジェクトのコレクションです。スキーマはIBM DB2データベースのオブジェクトを論理的に分類し、表、索引、ビューおよびトリガーを含むことがあります。スキーマ自体がデータベースのオブジェクトであり、CREATE SCHEMA文を使用して作成されます。スキーマ名は、tab_schema.mytableのように2つの部分からなるオブジェクト名の上位部分として使用されます。オブジェクトの作成時にスキーマ名が指定されると、そのオブジェクトはそのスキーマに割り当てられます。指定されない場合は、IMPLICIT_SCHEMAの値が使用されます。これはデフォルトのスキーマ名です。
次の権限をスキーマに付与できます。
これは、スキーマのオブジェクトを削除する権限を付与します。
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でエミュレートするかを示します。
SQL Developerは、SCHという名前のユーザー・アカウントをOracle Databaseに作成します。
SQL Developerは、SCHユーザー・アカウントにTABという名前の表を作成します。SCHユーザー・アカウントが自動的にその表の所有者になります。
SQL Developerは、USRという名前の別のユーザー・アカウントをOracle Databaseに作成します。USRは、OracleのUSRというユーザーにマップされます。
SQL Developerは、USRユーザー・アカウントにTABという名前のプライベート・シノニムを作成します。このシノニムによって、USRとして接続するユーザーは表名にSCHという接頭辞を明示的に付けなくても、TAB表を操作できます。
SCHスキーマに存在したすべてのオブジェクトは、OracleのSCHユーザー・アカウントに作成されます。SCHスキーマに存在するオブジェクトについて、IBM DB2のUSRユーザーに付与されるすべての表および列レベルの権限がOracleに移行されます。OracleのUSRユーザー・アカウントは、SCHユーザー・アカウントに存在するオブジェクトに対する適切な権限を付与されます。