CData Virtuality - ロールベースでのアクセス制御

by 桑島義行 | 2024年08月27日

000

はじめに

CData Virtualityは、エンタープライズグレードのデータ仮想化プラットフォームです。データ仮想化によるリアルタイムデータアクセスとデータレプリケーションのバイモーダルによるデータ連携を提供します。本記事では、ユーザに割り当てたロールで仮想データベース内のデータへのアクセス権を制御する方法をご紹介します。

 

事前準備

CData Virtualityには、インストール版とフルマネージドクラウド(SaaS)版がございます。入手および初期設定方法は以下の記事をご参照ください。

- CData Virtuality - 製品のインストール、および、初期設定方法 (Windows版)
- CData Virtuality - 無償トライアル、および、初期設定方法 (SaaS版)

 

ロールベースでのアクセス制御について

CData Virtualityでは、任意の「ロール(Role)」を任意の「ユーザ(User)」に割り当てることが出来ます。

一方で、仮想データベース内の任意の「リソースパス(Resoure Path)」に対して「アクセス権(Access right)」を設定した「許可(Permission)」を作成することが出来ます。

作成した「ロール(Role)」に「許可(Permission)」を割り当てることでシンプルで運用を実現するとともに、行ベースでの許可やカラムマスキングなど、強力なデータガバナンスを効かせたアクセス制御を実現することが出来ます。

001

 

ロールの作成

030

CData Virtuality Web Interfaceにてユーザやロールの作成、アクセス権限の設定を行うには、右上のログインユーザのアイコンから「User Management」にアクセスします。

002

ロールを新規に作成するにはRole Managementボタンをクリックします。

003

Role Management画面が開き、ビルトインされているロールのリストが表示されます。「New Role」ボタンをクリックします。

004

ロール名を入力(本例では「Sales01」)してSaveします。

005

リストに作成したロールが追加されていればロールの作成は成功です。

006

 

ユーザの作成

029

「User Management」画面を開きます。ビルトインされているユーザのリストが表示されます。「+New User」ボタンをクリックします。

007

Create new userダイアログが表示されるので以下の項目をセットしてSaveします。

- Name : ユーザ名(本例では「YamadaTaro」)
- Password
- Role : 「ロールの作成」の章で作成したロール(本例では「Sales01」)

008

リストに作成したユーザが追加されていればユーザの作成は成功です。

009

 

許可(Permission)の作成

031

作成したロールに許可(Permission)を作成していきます。本手順では上記「ロールの作成」の章で作成したロール(本例では「Sales01」)に対してサンプルデータベースの「PostgreSQL」の「Read(R)」権限を付与します。

「Role Management」画面を開き、「ロールの作成」の章で作成したロール(本例では「Sales01」)右横のアイコンで開くと同ロールに火もつく許可(Permission)が表示されますので「+New Permission」ボタンをクリックします。

010

「Add a new Permission」ダイアログが表示されます。「Resource Name」右横の検索ボタンをクリックします。

011

「Select Resource」ダイアログが表示されるので「Search」ボックスに「Postgres」と入力します。キーワードに合致するメタデータがツリーとして表示されます。

012

本手順では「psotgres(schema)」を選択してください。「Add a new Permission」ダイアログに戻り、「Resource Name」に選択した「postgres」がセットされていることを確認して、アクセス権(Permission)を選択します。今回は「READ」のみのチェックをONにしてSaveボタンをクリックします。

013

Permissionが追加されました。これにより、「Sales01」ロールのユーザは、PostgreSQLに対して読み取り(READ)のみアクセス可能となります。

014

実際に「Sales01」ロールを持つユーザ(本例では「YamadaTaro」)でJDBCドライバでアクセスしてみましょう。DBVisualizerからのアクセス方法はこちらの記事をご参照ください。

015

スキーマリストを表示すると、「SYS」「pg_catalog」「postgres」のみが表示されます。もう一つのサンプルデータベースの「mysql」やその他のシステムスキーマ(「INFOMATION_SCHEMA」や「SYSADMIN」など)にはアクセス出来なくなっています。

 

行レベルセキュリティの作成

032

次に「Sales01」ロールのユーザがサンプルのPostgreSQL内のCustomerテーブルに対して「Country」カラムが「Japan」がセットされている行のみアクセス出来るようにしてみましょう。まず初めに、本設定を行う前に「Customer」テーブルにアクセスしてみます。「Country」カラムの値を見ると複数の国名のデータが格納されていることを確認できます。

016

「Role Management」画面を開き、ロール(本例では「Sales01」)の許可(permission)リストを開き、「+New Permission」ボタンをクリックします。

017

「Add a new Pwemission」ダイアログでResource Nameの検索ボタンをクリック、「Select Resource」ダイアログの検索ボックスに「psotgres」と入力して、PostgreSQL内の「cusotomer(table)」を選択します。

018

「Resource Name」に「postgres.Customers」がセットされます。テーブルを選択すると「Row-base security」ボックスが追加されます。アクセス権(Permissions)に読み取り(READ)のみをセットして「Row-base security」ボックスに「country='Japan'」条件をセットしてSaveボタンをクリックします。

019

許可(Permission)が追加されていることを確認します。

020

これで想定では、日本の顧客のみが参照できるようになります。再度、DBVisualizerからJDBC Driver経由でPostgreSQLのCustomerテーブルにアクセスしてみましょう。

021

「country='Japan'」条件が効いた日本の顧客のみが参照できていることが確認できたら成功です。

 

カラムマスキングの作成

033

次に「Sales01」ロールのユーザがサンプルのPostgreSQL内の「bankinginfocustomer」テーブルに含まれる「bankaccount(口座番号)」を条件に応じて秘匿化(マスキング)してみます。まず初めに、本設定を行う前に「bankinginfocustomer」テーブルにアクセスしてみます。「bankaccount」カラムの値を参照することが出来て参照可否を制御できる「showbankaccount」というカラムが存在することを確認できます。

022

本手順では、個人情報保護用の新しいロール(本例では「pii」)を作成します。

023

「+New Permission」で「postgres(schema) > bankinginfocustomer(table)>bankaccount(column)」を選択します。

024

アクセス権(Permissions)は読み取り(READ)のみ、Column masking内の項目には以下のテキストをセットします。

- Condition : showbankaccount='false'
- Mask : repeat('*', length(bankaccount))
- Mask Order : 0

025

これにより、showbankaccoutがfalseのレコードのみ、口座番号として登録されている文字数をアスタリスク(*)に置換して表示されるようになるはずです。「Save」ボタンをクリックして作成したロール(本例では「pii」)内のPermissionとして追加されていることを確認します。

026

ユーザ(本例では「YamadaTaro」)に作成したロール(本例では「pii」)を追加します。

027

再度、DBVisualizerからJDBC Driver経由でPostgreSQLのbankinginfocustomerテーブルにアクセスしてみましょう。

028

「showbankaccount='false'」のレコードのbankaccountがアスタリスクに置換されて秘匿化されていることが確認できたら成功です。

 

まとめ

本記事では、ユーザに割り当てたロールで仮想データベース内のデータへのアクセス権を制御する方法をご紹介しました。CData Virtualityはフルマネージドクラウド(SaaS)版、および、インストール版で無償トライアルを提供しています。無償トライアルを始められたい方や設定を進める中でご不明な点が出てきた際には弊社テクニカルサポートまでお問い合わせください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。