はじめに

Verticaには、特定ロールが付与されているユーザに対して、データをマスキングして見せる機能が用意されています。本記事では、マスキング機能の基本的な使用方法をご紹介します。

アクセス・ポリシーの作成方法

マスキングするためには、CREATE ACCESS POLICY文を使用してアクセス・ポリシーを作成します。
本記事で紹介する実行例は、次の内容を示します。


  • customer表のc_name列に対してアクセス・ポリシーを作成
  • dbadminロールに対しては、マスキングなし
  • trole1ロールに対しては、マスキングなし
  • trole2ロールに対しては、マスキングあり (c_name列の先頭9バイトのみ参照させるようにマスキング)
  • その他のロールに対しては、マスキングあり (何も表示されないようにマスキング)


  • (1)マスキング前のデータ確認

    まずはマスキング前のデータを確認します。


    (2)マスキングの事前準備

    各データベースユーザに対して、対象テーブルへの参照権限や、マスキング可否を制御するためにロールを付与します。ロールの情報を確認する場合は、以下の記事をご参照ください。

  • 作成したロールの情報を確認する方法
  •  http://vertica-tech.ashisuto.co.jp/role_informations/


    (3)アクセス・ポリシー作成

    CREATE ACCESS POLICY文でcustomer表のc_name列にアクセス・ポリシーを作成します。
    各ロールの指定はCASE文分岐し、マスキング内容は関数を使用して制御します。



    (4)マスキング結果の確認

    アクセス・ポリシー作成後のデータを確認します。
    ユーザ(付与されているロール)に応じて、マスキング有無が制御されていることが分かります。


    アクセス・ポリシーの制限事項

    以下の制限事項があるため、ご留意ください。

  • CREATE ACCESS POLICY文のマスキングのアクセス式に、以下を使用することはできません。
  •  - 集計関数
     - サブクエリ
     - 分析関数
     - ユーザ定義変換関数

  • オリジナルデータを参照できるユーザーのみ、アクセス・ポリシー対象列に対してDMLを実行できます。
     その他のユーザーはDMLを実行できません。

  • 一時テーブルに対してアクセス・ポリシーを作成することはできません。

  • フレックス・テーブルに対してアクセス・ポリシーを作成することは非推奨です。

  • 検証バージョンについて

    この記事の内容はVertica 7.2で確認しています。