権限の概要
TimesTenでは、権限の付与による認可に応じて、データベース内のオブジェクトへのアクセスが許可されます。これらの権限によって、ユーザーが実行できる操作が決定されます。
この項の内容は次のとおりです。
権限について
データベース・オブジェクトにアクセスする可能性があるユーザーが複数存在する場合、権限の付与に従ってこれらのオブジェクトへのアクセスが認可されます。
オブジェクトには必ず所有者が存在します。オブジェクト権限によって、ユーザーは、他のユーザーが所有しているオブジェクトに対するアクセスまたは変更を認可されます。権限の付与または取消しを実行できるのはインスタンス管理者、ADMIN
権限を持つユーザー、または特定のオブジェクトに対する権限の場合は、そのオブジェクトの所有者です。
また、データベースへの接続などのアクションを認可するシステム・レベル権限もあります。
ノート:
ユーザーは、所有するすべてのオブジェクトに対するすべての権限を持ち、これらの権限は取り消せません。
権限の付与および取消し
ユーザーが特定のオブジェクトまたはオブジェクトのタイプにアクセスできるようにするには、SQLのGRANT
文を使用して権限を付与します。権限を取り消すには、SQLのREVOKE
文を使用します。
システム権限の付与または取消し、あるいは所有していないオブジェクトに対するオブジェクト権限の付与または取消しを行うには、管理権限が必要です。
例:
GRANT admin TO terry; GRANT SELECT ON pat.customers TO terry; GRANT SELECT ON emp_details_view TO terry; REVOKE admin, ddl FROM terry; REVOKE update ON pat.customers FROM terry;
『Oracle TimesTen In-Memory Database SQLリファレンス』のGRANTおよびREVOKEを参照してください。
権限の機能
TimesTenでは、SQL文の実行時に各ユーザーの権限が評価されます。
たとえば、次のように指定します:
Command> SELECT * from pat.table1;
この文をpat
が実行する場合、pat
はこのオブジェクトの所有者であるため、他に必要な権限はありません。ただし、terry
などの他のユーザーがこの文を実行する前に、pat.table1
に対するSELECT
権限を付与されている必要があります。
Command> GRANT SELECT ON pat.table1 TO terry;
権限では、次のことが実行されます。
-
ユーザー、アプリケーションまたはファンクションがアクセスできるデータまたはそれらが実行できる操作を定義します。
-
ユーザーがシステム・パフォーマンスを低下させたり、システム・リソースを大量に消費することを防ぎます。たとえば、認可上の懸念からではなく、DMLパフォーマンスを低下させたり、ディスク領域を占有する可能性があるという理由から、索引作成を制限する権限を指定できます。
権限の一部の例には、次の処理を実行する認可が含まれます。
-
データベースへの接続およびセッションの作成
-
表の作成
-
表からの行の選択
-
キャッシュ・グループ処理の実行
権限には、次の2つのレベルがあります。
-
システム権限があると、すべてのオブジェクトへのアクセスなど、システム全体の機能を有効にできます。システム権限を付与されたユーザーは、管理者タスクを実行したり、他のユーザーのスキーマ内のオブジェクトにアクセスできます。信頼できるユーザーのみにこれらを付与してください。「システム権限の概要」を参照してください。
-
オブジェクト権限によって、特定の表やビューなど、特定のデータベース・オブジェクトへのアクセスが可能になります。「オブジェクト権限の概要」を参照してください
このような権限のサブセットは、作成時に、PUBLIC
ロールを介して各ユーザーに自動的に付与されます。「PUBLICロールの概要」を参照してください。
SQL文が準備されたとき、およびSQL文が最初に実行されたときに、権限が確認されます。それ以降に文を実行するときにさらに権限のチェックが必要になるのは、データベースでREVOKE
文が実行された場合のみです。
システム権限の概要
システム権限は、ユーザーがデータベース全体でシステム・レベルのアクティビティを実行することや、指定したタイプのすべてのデータベース・オブジェクトに指定したタイプの操作(CREATE ANY TABLE
など)を実行することを認可します。
システム権限の例として、ADMIN
、SELECT ANY TABLE
、CREATE SESSION
およびCREATE ANY SEQUENCE
があります。「システム権限」を参照してください。
ユーザーにシステム権限を付与できるのは、インスタンス管理者またはADMIN
(管理)権限を持つユーザーのみです。
ノート:
ADMIN
権限を持つユーザーは、「管理権限」で説明されているように、特別なシステム権限のセットを持ちます。インスタンス管理者は、「インスタンス管理者」で説明しているように、システム権限のセットをすべて包含しています。
オブジェクト権限の概要
オブジェクト権限を持つユーザーは、特定の処理を特定のオブジェクトに対して実行できます。オブジェクト・タイプごとに、CREATE TABLE
などの個別のオブジェクト権限を使用できます。
他のユーザーが所有するオブジェクトには、そのオブジェクトの所有者またはADMIN
権限を持つユーザーから明示的にアクセス権を付与されないかぎり、アクセスできません。
PUBLIC
ロールに特定のオブジェクトへのアクセス権が付与されている場合、すべてのデータベース・ユーザーがそのオブジェクトにアクセスできます。
オブジェクト権限の付与または取消しを実行できるのは、インスタンス管理者、ADMIN
権限を持つユーザー、または該当するオブジェクトを所有するユーザーです。
「SQLオブジェクトに対する権限」を参照してください。
TimesTenユーティリティの権限
TimesTenユーティリティを実行するには、特別な権限が必要な場合があります。
TimesTenユーティリティの実行に必要な特別な権限は、『Oracle TimesTen In-Memory Databaseリファレンス』のユーティリティまたはTimesTen Scaleoutユーティリティの「必要な権限」に記載された説明を参照してください。
ノート:
データベースがメモリーにロードされていないときに、インスタンス管理者以外のユーザーが特別な権限を必要とするユーティリティを実行しようとすると、TimesTenはユーザーの権限を判断できないためにエラーが発生します。
PUBLICロールの概要
PUBLIC
というロールがTimesTenの各データベースに自動的に作成され、特定の権限が付与されて、TimesTenデータベースに作成される各ユーザーは、これらの権限を継承します。PUBLIC
ロールに後で付与された各権限も、同時にすべてのユーザーに自動的に付与されます。
たとえば、このコマンドを実行すると、すべてのユーザーに対するCREATE SESSION
権限が発生します。
Command> GRANT CREATE SESSION TO PUBLIC;
このドキュメントの「PUBLICロールを介した権限」および『Oracle TimesTen In-Memory Database SQLリファレンス』のPUBLICロールも参照してください。
ノート:
TimesTenでは他のロールはサポートされません。