はじめに

Verticaでは、特定のテーブルに行アクセス・ポリシーを作成できます。
本記事では、行アクセス・ポリシーの基本的な使用方法をご紹介します。

概要

テーブルに行アクセス・ポリシーを作成することで、データ参照のアクセスを制御することが可能になります。
行アクセス・ポリシーが作成されたテーブルにユーザーがクエリを実行すると、Verticaはテーブルのデータに対して行アクセス・ポリシーのWHERE式を評価します。
クエリは、行アクセス・ポリシーのWHERE式がtrueと評価された行のみを返します。

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

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

 

employees表に対して行アクセス・ポリシーを作成
manager_topロールに対しては、全てのデータが参照可能
manager_1ロールに対しては、dept_idr列が100のデータのみ参照可能
manager_2ロールに対しては、dept_idr列が200のデータのみ参照可能

テーブルとデータを確認

行アクセス・ポリシーで使用するデータを確認します。


ロールとユーザを作成

各データベースユーザに対して、対象テーブルへの参照権限や、データ参照のアクセスを制御するためにロールを付与します。


行アクセス・ポリシーを作成

CREATE ACCESS POLICY文でemployees表に行アクセス・ポリシーを作成します。

WHERE式でtrueと評価されたデータのみ参照可能にします。


行アクセス・ポリシーの結果を確認

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


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

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

・テーブルに含めることができる行アクセス・ポリシーは1つだけです。
・次のテーブルでは、行アクセス・ポリシーは無効です。
   – aggregate projectionsのあるテーブル
   – 一時テーブル
   – システムテーブル
   – ビュー
・行アクセス・ポリシーを使用してテーブルにダイレクトクエリを作成することはできません。

 

参考情報

Access Policies

https://www.vertica.com/docs/10.0.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/AccessPolicies/AccessPoliciesOverview.htm

 

CREATE ACCESS POLICY

https://www.vertica.com/docs/10.0.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATEACCESSPOLICY.htm

 

検証バージョンについて

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

 

更新履歴

2020/09/24 本記事を公開