暗号化を用いた動的データマスキング
このチュートリアルでは、Netezza Performance Serverで暗号化を使用してダイナミック・データ・マスキングを構成し、使用する方法を説明します。
ダイナミック・データ・マスキングは、フィールドやテーブル・カラムのようなデータベース・オブジェクト内の機密データを、権限のないユーザーからマスキングすることで、不正アクセスを防ぐのに役立ちます。 マスキング・ルールが適用されるのはクエリ結果のみで、データベース内のデータは影響を受けないため、このデータへのアクセスが必要な他のアプリケーションでも使用できる。
このタスクについて
このチュートリアルでは、以下のスキーマ例を使用します:

customer_name
と'customer_address
は、マスクと暗号化が必要な機密カラムである。 これらのテーブルにアクセスできる(つまり、'SELECT
権限を持っている)ユーザーのうち、'ACCOUNTS
ロールを持つユーザーだけが、2つの機密カラムの閲覧を許可されている。 他のユーザーに対しては、これらの値は暗号化によってマスクされる。
これを行う標準的な方法は、基礎となるテーブルへのアクセスを制限し、ユーザーの役割に応じて値を変更するビューをテーブルの上に重ねることである。 これを行うには、まず基礎となるテーブルの名前を変更し、元のテーブル名を使用して、アクセス権を持つロールに基づいて機密カラムの暗号化された値を投影するビューを作成します。
手順
結果
alice
」が、州コード別に分類された合計「order_amount
レポートを必要としているとします:select
sum(order_amount) as total,
customer_state
from customers inner join orders using (customer_id)
group by customer_state;
合計 | CUSTOMER_STATE |
10750.01 | ニューヨーク |
2000.00 | テキサス |
99.99 | XX |
アリスは CUSTOMERS (マスクされたビュー) にアクセスできます。 customer_id
カラムは暗号化されておらず、ORDERSテーブルとの結合に使用される。 customer_state
カラムは暗号化されておらず、(州ごとの)ロールアップに使用される。 しかし、'customer_name
と'customer_address
は微妙だ。 もし彼女がそれを見ることを選択しても、暗号化されている:
select * from customers order by customer_id;
CUSTOMER_ID | 顧客名 | 顧客アドレス | CUSTOMER_STATE | カスタマー・ジップ |
10031 | &J.&#+RXV | /u/%9$,1WZJ\*?<1L3- | テキサス | 90210 |
21451 | INR0-F50_0 | 1U*"\(7H"V;3S%NH0]!= ['T | ニューヨーク | 55555 |
43918 | I_*$)VM0X0 | 0U+;!="XWV;#T&^Y#F#=8[ | ニューヨーク | 98765 |
60844 | M>6%(7Q0Y@ | -T+#!9$@9T+#T6L(5L0 | ニューヨーク | 55554 |
80008 | H>F0*F]0Y@ | 1L>B4*7<#U:WN&Z,JISI7YS< | XX | 0 |
ACCOUNTS
ロールの権限が与えられている:set role accounts;
select * from customers order by customer_id;
CUSTOMER_ID | 顧客名 | 顧客アドレス | CUSTOMER_STATE | カスタマー・ジップ |
10031 | マークF | 234 メイン・ストリート | テキサス | 90210 |
21451 | クラーク・K | 1 メトロポリス・アベニュー | ニューヨーク | 55555 |
43918 | ブルース・W | 1600 ゴッサムレーン | ニューヨーク | 98765 |
60844 | ピーター・P | 500フィフス・アヴェニュー | ニューヨーク | 55554 |
80008 | ダイアナ・P | テミスキラ島 | XX | 0 |