データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracle Data Redactionで機密データを保護する方法

組織にとって、社会保障番号、銀行口座番号や金融機関コードといった機密データを確実に保護することは、重大な課題となっています。

はじめに

法令や規制により、組織は自社のデータおよび顧客情報が不正な手に渡らないよう保護することが求められています。データリダクション(Data Redaction)、すなわち動的データマスキング(DDM)とは、機密性の高いデータ要素を難読化または非表示にするプロセスのことです。

Oracle® Data Redactionは、機密情報の露出を低減し、アプリケーションページ上で機密データを漏えいさせる恐れのあるアプリケーションの脆弱性が悪用されるのを防ぐのに役立ちます。

データベース管理者・アプリケーション管理者・セキュリティ管理者・アプリケーションオーナーなど、セキュリティを手軽に強化しつつ、アプリケーションが表示する機密データのマスキングを義務付ける規制への準拠を実現したい方にとって、Data Redactionは有効な選択肢となります。

DDM(動的データマスキング)とは

DDMとは、本番データベースからテスト環境などの非本番データベースへデータをコピーする際に、マスキングルールに基づいて、実際のデータに近い形式を保ちながらも洗い替えされた(スクラブ済みの)データへ置き換えるプロセスです。

Oracle 12c(現在は11.2.0.8でも利用可能)では、Data Redactionという組み込みのDDM機能が提供されています。

Data Redactionの主な特徴

  • Oracle Advanced Securityの一部であり、Enterprise Editionの別ライセンスオプションとして提供されます。
  • データベースアプリケーションに表示される機密データを保護します。
  • 元のデータ型を保持し、必要に応じて書式も維持するため、アプリケーションユーザーに対して透過的に動作します。
  • バッファ・キャッシュ・ストレージ内のデータはそのまま維持され、SQLクエリの結果を呼び出し元へ返す直前にのみ変換されるため、データベースに対しても高い透過性を持ちます。

リダクションの種類

以下は、さまざまなリダクションタイプの例です。

Oracle Data Redactionで機密データを保護する方法

リダクションの例外

EXEMPT REDACTION POLICYシステム権限を持っているユーザーに対しては、データは決してリダクションされません。また、以下のような状況でもリダクションは適用されません。

  • SYSユーザーとしての接続
  • データベースレプリケーション
  • バックアップとリストア
  • エクスポートとインポート

セットアップ

ポリシーを定義するには、ポリシーの追加・変更・削除に使用するDBMS_REDACTパッケージに対する実行権限(EXECUTE権限)が必要です。

検証用として、以下の例のようにテーブルを作成し、テストデータを挿入しました。

CREATE TABLE CUSTOMERS
   (cust_id     NUMBER NOT NULL
    ,name        varchar2(20)
    ,credit_card NUMBER(16)
    ,exp_date    DATE
    ,creditlimit NUMBER(6,2)
    ,emailadr    varchar2(20)
   )
/

INSERT INTO CUSTOMERS VALUES (1982,'Vijay Garg'    ,4263982640269299,'11-FEB-2022',22.50,'Vijay.Garg@gmail.com');
INSERT INTO CUSTOMERS VALUES (5428,'Ganesh Murthy',4917484589897107,'03-APR-2022',54.00,'Ganesh@oracle.com');
INSERT INTO CUSTOMERS VALUES (6734,'Himanshu Menon' ,4001919257537193,'23-FEB-2022',66.99,'Himanshu@yahoo.com');
INSERT INTO CUSTOMERS VALUES (3285,'Dishant Mathur'    ,4007702835532454,'21-JUN-2022',233.00,'Dishant@aol.com');
INSERT INTO CUSTOMERS VALUES (4522,'Saurabh Agarwal'    ,6362970000457013,'11-JUL-2022',777.00,'Saurabh@gmail.com');
INSERT INTO CUSTOMERS VALUES (1836,'Ankita Anthony'    ,6062826786276634,'06-AUG-2022',235.00,'Ankita@net4india.com');
INSERT INTO CUSTOMERS VALUES (7494,'Varun Mehra'    ,5425233430109903,'18-SEP-2022',33.00,'Varun@outlook.com');
INSERT INTO CUSTOMERS VALUES (6548,'Aaaksh Chopra'    ,2222420000001113,'13-OCT-2022',97.00,'Aaaksh@aol.com');
Commit;

リダクションタイプごとのFUNCTION_TYPE設定

ポリシー定義内では、どの種類のリダクションを適用するかをFUNCTION_TYPEパラメータで指定します。指定できる値は以下の通りです。

  • DBMS_REDACT.NONE:リダクションなし
  • DBMS_REDACT.FULL:完全リダクション
  • DBMS_REDACT.PARTIAL:部分リダクション
  • DBMS_REDACT.RANDOM:ランダムリダクション
  • DBMS_REDACT.REGEXP:正規表現によるリダクション

データの表示

以下のセクションでは、各リダクションタイプごとのデータ表示方法を順に紹介します。

リダクションなし

リダクションを適用していない状態では、次のステートメントでデータをそのまま表示できます。

ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY';
COLUMN credit_card format 0000000000000000
COLUMN EMAILADR    format a20
SELECT * FROM CUSTOMERS
Oracle Data Redactionで機密データを保護する方法

完全リダクション(Full Redaction)

DBMS_REDACTパッケージの実行権限を持つユーザーがポリシーを定義します。この例では、条件式1=1が常に真となるため、クレジットカード番号は常にリダクションされます。

ポリシー定義:

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.FULL,
   expression          => '1=1'
 );
END;
/
Oracle Data Redactionで機密データを保護する方法

部分リダクション(Partial Redaction)

次の例では、クレジットカード番号の1桁目から12桁目までを「0」でマスキングしています。

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.PARTIAL,
   function_parameters => '0,1,12',
   expression          => '1=1'
 );
END;
/

既存のポリシーを削除するには、次のコマンドを実行します。

execute DBMS_REDACT.drop_policy ('SAGARG','CUSTOMERS','REDACT_POLICY_CARD');
Oracle Data Redactionで機密データを保護する方法

必要に応じて、他の列に対しても部分リダクションを適用できます。

ランダムリダクション(Random Redaction)

ランダムリダクションでは、元の情報がランダムな別のデータに置き換えられます。以下はその設定例です。

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.RANDOM,
   expression          => '1=1'
 );
END;
/
Oracle Data Redactionで機密データを保護する方法

正規表現を使ったリダクション

正規表現を利用すると、パターンマッチングに基づいてデータをリダクションできます。メールアドレスやIPアドレスなど、よく使われるケース向けの事前定義パターンも用意されています。次の例では、メールアドレスのローカル部(先頭部分)を非表示にしています。

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema          => 'SAGARG',
   object_name            => 'CUSTOMERS',
   column_name            => 'EMAILADR',
   policy_name            => 'REDACT_POLICY_CARD',
   function_type          => DBMS_REDACT.REGEXP,
   regexp_pattern         => DBMS_REDACT.RE_PATTERN_EMAIL_ADDRESS,
   regexp_replace_string  => DBMS_REDACT.RE_REDACT_EMAIL_NAME,
   regexp_position        => DBMS_REDACT.RE_BEGINNING,
   regexp_occurrence      => DBMS_REDACT.RE_ALL,
   expression             => '1=1'
 );
END;
/
Oracle Data Redactionで機密データを保護する方法

expressionパラメータの値は常に「1=1」であるため、この設定ではデータが常時リダクションされます。

特定ユーザーに対するリダクション

特定のユーザーに対してのみデータをリダクションしたい場合は、ポリシーのexpressionに次のような条件式を追加します。

'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SAGARG'''

設定例:

BEGIN
 DBMS_REDACT.ADD_POLICY(
  object_schema => 'SAGARG',
  object_name => 'CUSTOMERS',
  column_name => 'CREDIT_CARD',
  policy_name => 'REDACT_POLICY_CARD',
  function_type => DBMS_REDACT.RANDOM,
  expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SAGARG''');
END;
/
Oracle Data Redactionで機密データを保護する方法

まとめ

Oracle Data Redactionを使用してアプリケーション表示データをリダクションすることで、本来閲覧を許可されていないアプリケーションユーザーへ機密データが露出するリスクを最小限に抑えられます。

さらに、機密情報を見る必要のないデータベースユーザーが業務中にうっかり機密データを目にしてしまう、といった意図しない情報開示の防止にも役立ちます。

コメントやご質問がある場合は、フィードバックタブからお気軽にお寄せください。

専門家による管理・運用で環境を最適化

Rackspace Application Services(RAS)のエキスパートは、幅広いアプリケーションポートフォリオにわたり、以下のようなプロフェッショナルサービスおよびマネージドサービスを提供しています。

  • eコマースおよびデジタルエクスペリエンスプラットフォーム
  • ERP(企業資源計画)
  • ビジネスインテリジェンス(BI)
  • Salesforce CRM(顧客関係管理)
  • データベース
  • メールホスティングおよび生産性向上ソリューション

私たちが提供する価値:

  • 中立的な専門知識:モダナイゼーションの道のりを簡素化し、即座に価値をもたらす機能に焦点を当ててご支援します。
  • Fanatical Experience™:「Process first. Technology second.®」のアプローチと専任の技術サポートを組み合わせ、包括的なソリューションを提供します。
  • 比類ないポートフォリオ:豊富なクラウド経験を活かし、適切なテクノロジーを適切なクラウド上に選定・展開するお手伝いをします。
  • アジャイルなデリバリー:お客様の現在のフェーズに合わせて伴走し、私たちの成功をお客様の成功と一致させます。

まずはチャットでご相談ください。

  1. PCの大切なデータを守る方法|Googleドライブへのバックアップ作成ガイド

    近年猛威を振るっているランサムウェアの脅威については、多くの方がご存じでしょう。ランサムウェアは主にメールに添付された悪意のあるファイルを開いたことをきっかけにPCへ侵入し、保存されているすべてのデータを暗号化してロックしてしまいます。データを取り戻す唯一の方法は攻撃者に身代金を支払うことですが、実際にお金を払ったとしても、データが復元される保証は一切ありません。 つまり、一度ランサムウェアに感染すれば、PC内の全データが失われる危機にさらされるのです。しかし、データを脅かすのはランサムウェアだけではありません。ハードディスクのクラッシュやPC本体の盗難・紛失なども、データを二度と取り戻せなく

  2. Windows PCで個人データを整理・保護する方法|Advanced Identity Protectorの使い方

    インターネットを利用する際、自分の痕跡を一切残さずに閲覧することは事実上不可能です。ブラウザ、拡張機能、Cookie、キャッシュ、アドウェアなど、ユーザーの個人情報を収集しようとする仕組みはネット上に数多く存在します。収集されたデータは、おすすめ検索の表示といった無害な用途に使われることもあれば、なりすまし(ID盗難)などの悪質な犯罪に悪用される可能性もあります。本記事では、Advanced Identity Protectorを使ってWindows PC上の個人データを整理し、安全に保護する方法を詳しく解説します。 Advanced Identity Protectorとは? Advanc