2.7.7 ビュー表に対するアクセス権限
ビュー表に対するアクセス権限について説明します。
- ■定義したビュー表に対するアクセス権限
-
ビュー表を定義したHADBユーザが基表に対して持っているアクセス権限によって,定義したビュー表に対するアクセス権限が決まります。例えば,SELECT権限とINSERT権限を持っている表を基表としたビュー表を定義した場合,ビュー表を定義したHADBユーザは,そのビュー表に対するSELECT権限とINSERT権限を持ちます。
なお,基表が複数ある場合は,すべての基表に対して持っている共通のアクセス権限が,ビュー表に対するアクセス権限となります。
- (例)
-
HADBユーザAは,次の表に対して次のアクセス権限を持っているものとします。
-
表X.T1:SELECT権限,INSERT権限,DELETE権限
-
表X.T2:SELECT権限,INSERT権限,UPDATE権限
-
表X.T3:SELECT権限,UPDATE権限,DELETE権限
表X.T1と表X.T2を基表としたビュー表A.V1をHADBユーザAが定義した場合,HADBユーザAは,ビュー表A.V1に対するSELECT権限とINSERT権限を持ちます。
表X.T1,表X.T2,および表X.T3を基表としたビュー表A.V2をHADBユーザAが定義した場合,HADBユーザAは,ビュー表A.V2に対するSELECT権限だけを持ちます。
-
- メモ
-
定義したビュー表に対して,例えばUPDATE権限を持ちたい場合は,すべての基表に対してUPDATE権限を持っている必要があります。
定義したビュー表に対するアクセス権限の決定規則の詳細については,マニュアルHADB SQLリファレンスのCREATE VIEW文の指定形式および規則の規則を参照してください。
- ■ビュー表に対するアクセス権限の付与
-
ビュー表に対するアクセス権限をほかのHADBユーザに付与するには,基表に対するアクセス権限を付与権付きで持っている必要があります。
- (例)
-
HADBユーザAは,次の表に対して次のアクセス権限を持っているものとします。
-
表X.T1:SELECT権限(付与権付き),INSERT権限(付与権付き),UPDATE権限
-
表X.T2:SELECT権限(付与権付き),INSERT権限,DELETE権限(付与権付き)
表X.T1を基表としたビュー表A.V1をHADBユーザAが定義した場合,HADBユーザAは,ビュー表A.V1に対するSELECT権限(付与権付き),INSERT権限(付与権付き),およびUPDATE権限を持ちます。SELECT権限とINSERT権限については付与権があるため,HADBユーザAは,ビュー表A.V1に対するSELECT権限とINSERT権限をほかのHADBユーザに付与できます。
表X.T1と表X.T2を基表としたビュー表A.V2をHADBユーザAが定義した場合,HADBユーザAは,ビュー表A.V2に対するSELECT権限(付与権付き)とINSERT権限を持ちます。SELECT権限については付与権があるため,HADBユーザAは,ビュー表A.V2に対するSELECT権限をほかのHADBユーザに付与できます。
-
- ■ビュー表に対するアクセス権限の伝搬
-
基表に対するアクセス権限が新たに付与された場合,その基表に依存するビュー表に対するアクセス権限も新たに付与されます。これをアクセス権限の伝搬といいます。
- (例)
-
HADBユーザAが,表X.T1を基表としたビュー表A.V1と,ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に,表X.T1に対するINSERT権限がHADBユーザAに新たに付与されると,ビュー表A.V1,A.V2に対するINSERT権限もHADBユーザAに新たに付与されます。
また,基表に対するアクセス権限が取り消された場合も,アクセス権限の伝搬が発生します。
- (例)
-
HADBユーザAが,表X.T1を基表としたビュー表A.V1と,ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に,HADBユーザAが持っている表X.T1に対するINSERT権限が取り消されると,HADBユーザAが持っているビュー表A.V1,A.V2に対するINSERT権限も取り消されます。
アクセス権限の伝搬規則の詳細については,マニュアルHADB SQLリファレンスのアクセス権限の付与の規則を参照してください。
- ■表に対するSELECT権限の取り消しによるビュー表への影響
-
ビュー表の基表に対するSELECT権限が取り消された場合,その基表に依存するすべてのビュー表が無効化されます。
- (例)
-
HADBユーザAが,表X.T1を基表としたビュー表A.V1と,ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に,HADBユーザAが持っている表X.T1に対するSELECT権限が取り消されると,表X.T1に依存するビュー表A.V1,A.V2が無効化されます。
また,付与権付きのSELECT権限が取り消された場合,またはSELECT権限の付与権が取り消された場合,その付与権を使用して付与されたSELECT権限も取り消されます。それに伴いビュー表が無効化されることがあります。
- (例)
-
HADBユーザAが持っている表X.T1に対するSELECT権限の付与権が取り消されたとします。HADBユーザAが,表X.T1に対するSELECT権限をHADBユーザBに付与していた場合,HADBユーザBに付与した表X.T1に対するSELECT権限が取り消されます。HADBユーザBが,表X.T1を基表としたビュー表B.V1を定義している場合,ビュー表B.V1が無効化されます。