Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.2.13 ビュー表を使用した運用例

次に示す運用条件を満たす場合の,ビュー表の定義方法とアクセス権限の付与方法について説明します。

■運用条件
  • 顧客データが格納されている顧客表(CUSTOMERS)を定義し,顧客データをHADBユーザが参照できるようにする

  • 顧客データを参照するHADBユーザが,顧客表の顧客名列(CUSTOMER_NAME)に格納されているデータを参照できないようにする

  • 顧客データを参照するHADBユーザには,顧客表の表名(CUSTOMERS)を公開しないようにする

■この運用例で定義する表
  • 顧客表(CUSTOMERS

    実際の顧客データが格納されている実表です。

  • 顧客表のビュー表(V1_CUSTOMERS

    V1_CUSTOMERSは,CUSTOMERSを基表としたビュー表です。顧客表から顧客名列(CUSTOMER_NAME)を除いた表をビュー表として定義します。

  • 顧客表のビュー表を基表としたビュー表(V2_CUSTOMERS

    V2_CUSTOMERSは,V1_CUSTOMERSを基表としたビュー表です。

    顧客データを参照するHADBユーザには,V2_CUSTOMERSにアクセスさせます。

■この運用例で登場するHADBユーザ
  • HADBユーザADBUSER01:顧客表CUSTOMERS,ビュー表V1_CUSTOMERSの所有者

  • HADBユーザADBUSER02:ビュー表V2_CUSTOMERSの所有者

  • HADBユーザADBUSER03:顧客データを参照するHADBユーザ

  • HADBユーザADBUSER04:顧客データを参照するHADBユーザ

■運用の関連図

[図データ]

上記の運用条件を実現するには,次の手順で顧客表とビュー表を定義し,各表に対するアクセス権限を各HADBユーザに付与します。

手順

  1. ADBUSER01が顧客表を定義する

    CREATE TABLE "ADBUSER01"."CUSTOMERS"("CUSTOMER_ID" INTEGER,
                                         "CUSTOMER_NAME" CHAR(100),
                                         "REGISTERED_DATE" TIMESTAMP)
                 IN "DBAREA01"
  2. ADBUSER01が,顧客表に顧客データをインポートする

    adbimportコマンドを実行して,顧客表に顧客データをインポートしてください。

  3. ADBUSER01が,顧客表のビュー表V1_CUSTOMERSを定義する

    CREATE VIEW "ADBUSER01"."V1_CUSTOMERS"
        AS SELECT "CUSTOMER_ID","REGISTERED_DATE" FROM "ADBUSER01"."CUSTOMERS"

    顧客表からCUSTOMER_NAME列を除いた表が,ビュー表V1_CUSTOMERSとして定義されます。

  4. ADBUSER01が,ビュー表V1_CUSTOMERSに対するSELECT権限を付与権付きでADBUSER02に付与する

    GRANT SELECT ON "ADBUSER01"."V1_CUSTOMERS" TO "ADBUSER02" WITH GRANT OPTION

    ビュー表V1_CUSTOMERSに対するSELECT権限が付与権付きでADBUSER02に付与されます。

    メモ
    • ビュー表V1_CUSTOMERSに対するSELECT権限の付与権をADBUSER02に付与するために,WITH GRANT OPTIONを指定しています。

    • 手順の5.で,ADBUSER02が,ビュー表V1_CUSTOMERSを基表としたビュー表V2_CUSTOMERSを定義するために,ビュー表V1_CUSTOMERSに対するSELECT権限をADBUSER02に付与しています。

    • この例では,SELECT権限だけを付与していますが,必要に応じてほかの種類のアクセス権限も一緒に付与できます。

  5. ADBUSER02が,ビュー表V2_CUSTOMERSを定義する

    CREATE VIEW "ADBUSER02"."V2_CUSTOMERS"
        AS SELECT * FROM "ADBUSER01"."V1_CUSTOMERS"

    ビュー表V1_CUSTOMERSを基表としたビュー表V2_CUSTOMERSが定義されます。

    メモ
    • CREATE VIEW文中の問合せ式中のSELECT*が指定されていますが,CUSTOMER_NAME列を除いたV1_CUSTOMERSが基表のため,定義されたV2_CUSTOMERSCUSTOMER_NAME列を除いたビュー表として定義されます。

    • ビュー表V2_CUSTOMERSの基表にビュー表V1_CUSTOMERSを指定することによって,実際に顧客データが格納されている顧客表の表名(CUSTOMERS)を隠すことができます。

  6. ADBUSER02が,ビュー表V2_CUSTOMERSに対するSELECT権限をADBUSER03ADBUSER04に付与する

    GRANT SELECT ON "ADBUSER02"."V2_CUSTOMERS" TO "ADBUSER03","ADBUSER04"

    ADBUSER03ADBUSER04は,ビュー表V2_CUSTOMERSに対するSELECT権限を付与されたため,顧客データを参照できるようになります(ビュー表V2_CUSTOMERSを参照できるようになります)。

    メモ

    ADBUSER03ADBUSER04は,顧客データを参照するだけのHADBユーザのため,ビュー表V2_CUSTOMERSに対するSELECT権限の付与権は付与しません。そのため,上記のGRANT文では,WITH GRANT OPTIONを指定していません。

上記の運用を継続中に,顧客データを参照するHADBユーザADBUSER05が追加された場合,ADBUSER02が,ビュー表V2_CUSTOMERSに対するSELECT権限をADBUSER05に付与してください。そうすると,ADBUSER05は,顧客データを参照できるようになります。

メモ
  • この例の場合,顧客表中の顧客データを更新,追加,削除できるのは,ADBUSER01だけになります。

  • 顧客データを参照するHADBユーザの管理(ビュー表V2_CUSTOMERSに対するアクセス権限の管理)は,ADBUSER02が実施します。

  • ADBUSER02ADBUSER05は,顧客データを参照だけできます。また,CUSTOMER_NAME列を参照することはできません。