はじめに

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を実行できません。
  • 一時テーブルに対してアクセス・ポリシーを作成することはできません。
  • フレックス・テーブルに対してアクセス・ポリシーを作成することは非推奨です。

参考情報

Access Policies
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/Tables/UsersPrivileges/USINGACCESSPOLICY.htm

CREATE ACCESS POLICY
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATEACCESSPOLICY.htm


検証バージョンについて

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

更新履歴

2019/04/11 検証バージョンを9.2に変更
2016/05/16 本記事を公開