現在地

Oracle Cloud 最新機能紹介:Oracle Data Safe を使ってみよう ~ Data Masking でお手軽データ匿名化 ~



サンプル

基盤ソリューション事業本部 オラクル事業部
サービス推進担当 サービス・イノベーション・グループ

U・Y

Oracle Cloud Free Tier について

2019年9月16日から19日にかけて、Oracle 社の一大イベントである「Oracle OpenWorld 2019」が開催されました。
その中で「Oracle Cloud Free Tier」という無償でOracle Cloud を利用することができるサービスが発表されました。
これまでも 30日間有効な、300ドル分の無償利用枠がありましたが、Oracle Cloud Free Tier は常時無償で利用することができるようです。(2019年9月26日時点の情報です)
詳細については、https://www.oracle.com/jp/cloud/free/ をご参照ください。

この Oracle Cloud Free Tier ですが、なんと本コラムで紹介している Autonomous Data Warehouse Cloud(ADWC) を、1 OCPU、20 GBのストレージという制限はあるものの、常時無償で使えるようです!これを機に ADWC に触れてみてはいかがでしょうか?

  • ※ ご使用になる際には、必ず利用規約をご確認ください。
  • ※ Oracle Cloud Free Tier で ADWC を利用する場合、Oracle Data Visualization Desktop(DVD)も無償で利用できるのかどうかは、現在確認中です。確認出来次第、本コラムを更新する予定です。

Oracle Data Safe について

さらに、Oracle OpenWorld 2019 開催時に Oracle Data Safe というクラウドサービスが追加されました。Oracle Cloud 上のデータベースを対象に、主に以下 5 つの機能を使用することができます。いずれの機能も Web 上のサービス・コンソールから実行できます。ざっくりとですが、概要を紹介します。

Security Assessment
データベースのセキュリティに関する評価が行われ、どのようなリスクが存在しているか、重要度別で確認することができ、かつ対処の推奨事項が提供されます。
※ Oracle Database Security Assessment Tool (DBSAT) をご存知の方はなんとなく見覚えがありますよね。

User Assessment
各データベースユーザーに付与されている権限やロールに関する評価が行われます。

Data Discovery
対象のデータベースにどのような機密データが何件格納されているか確認する機能です。

Activity Auditing
データベースにおけるアクティビティ(ログオン情報、権限変更、DDL文の発行など)が閲覧できます。

Data Masking
Data Discovery で確認した機密データをマスキングする機能です。

前置きが長くなりましたが、今回は新機能である Oracle Data Safe の Data Masking について実際に使った上で紹介したいと思います。
他の機能についても機会があれば本コラムで紹介したいと思いますが、これを機に Oracle Cloud Free Tier を使ってご自身で実際に触ってみてください。

Oracle Data Safe の Data Masking 機能について

Data Masking は、元の機密データを類似した特性を持つランダムデータに自動で置き換える機能です。
元の機密データは実際に不可逆的に置き換わるため、本番環境での利用ではなく、開発環境や検証環境で使用することが一般的です。
本番環境で実行してしまうと、、、想像するだけで怖いのでやめておきましょう。
※フラッシュバック機能やバックアップからのリストア・リカバリにて復旧することは可能ですが、誤って大切なデータに対して実行しないよう注意しましょう。

以前からオンプレでも提供されている機能ですので、Data Masking 自体は新機能という訳ではありません。
ではなぜ今回紹介するのか、といいますと、本コラムで紹介している ADWC を活用したデータ分析と相性が良いと考えているからです。
例えば、業務データを活用して本コラムで連載しているようなデータ分析を行う場合、そのデータに機密データが含まれていないことを証明することは困難です。Data Masking 機能を使用することで、機密データが含まれているか自動でチェックすることができます。
また、その抽出したデータの特性を失わずにランダムのデータに置換することができるため、安心してデータ分析が行えます。
これらはブラウザから比較的簡単に行えます。では、実際に機密データの抽出からマスキングまでどのくらい簡単に行えるか試してみましょう。

1. マスキングするデータの準備

機密データの抽出を行う前に、サンプルデータを用意します。今回は ADWC を作成すると自動で作られている SH スキーマのデータを使用します。
ただし、SH スキーマのデータをそのままマスキング対象にすることはできません。Oracleが保持するスキーマでのデータ検出は許可されていないとして、ポリシーの定義時にエラーとなります。そのため、別のユーザーを作成し、SHスキーマと同じデータのテーブルを作成します。

1-1.

ADMIN ユーザーで ADWC へ接続します。(今回はクライアント環境から SQL*Plus で接続します。)

$ sqlplus admin/XXXXXXXXXXXX@free_high

※free_high の部分はお使いの ADWC の tnsnames.ora をご確認ください。
 余談ですが、Oracle Cloud Free Tier で作成した free という名の ADWC データベースを使用しています!

1-2.

接続後、PDB_DBA 権限、および全ての表領域への無制限に割当可能な unlimited tablespace 権限を持つ sh2 というユーザーを作成します。

SQL> grant pdb_dba, unlimited tablespace to sh2 identified by XXXXXXXXXXXX;

1-3.

sh スキーマの customers テーブルから Abel という名前の方の情報のみを抽出し、sh2 ユーザーのテーブルに複製します。名前は同じく customers とします。

SQL> create table sh2.customers as select * from sh.customers where CUST_FIRST_NAME='Abel';

1-4.

格納したデータを見ておきます。
重複行を省くため、distinct を使用しています。※重複行ありだと 63 行返ってきます。

SQL> select distinct CUST_FIRST_NAME, CUST_LAST_NAME, CUST_EMAIL from sh2.customers;

CUST_FIRST_NAME CUST_LAST_NAME  CUST_EMAIL
--------------- --------------- -----------------------------------
Abel            Vance           Vance@company.example.com
Abel            Aaron           Aaron@company.example.com
Abel            Embrey          Embrey@company.example.com
Abel            Walsh           Walsh@company.example.com
Abel            Forster         abel.forster@company2.example.com

以上でデータの準備は完了です。

2. データマスキングの実行

データのマスキングは WEB のコンソールにて行います。
OCI コンソールにログインし、データ・セーフをクリックします。

まずはじめに、ADWC のデータベースを Data Safe に登録する必要があります。
サービス・コンソールをクリックします。

Targets をクリックします。淡々と進めていきましょう。

Register をクリックします。

淡々と進めたいところですが、ここで色々と入力が必要な画面が出てきます。
少し複雑かもしれませんが、Data Safe に登録するためにADWC データベースへの接続情報を入力する必要があります。

Target Name自由に決められますが、分かりやすさという意味でデータベース名としておくと良いと思います。
Target TypeOracle Database のままとしてください。
Target Descriptionターゲットとなるデータベースの説明を入力します。入力は任意です。今回は未入力としました。
Resource GroupDafault Resource Group のままとします。説明は割愛しますが、気になる方はhttps://docs.oracle.com/en/cloud/paas/data-safe/udscs/resource-groups.htmlをご参照ください。
OCIDADWC のOCID を入力します。暗記している方はいないと思うので、ブラウザの別のタブから OCI コンソールにログインし ADWC の起動/停止が行える画面から確認してください。
Connection TypeTLS を選択します。
Hostname/IP Addressクレデンシャル・ウォレットhttp://www.intellilink.co.jp/article/column/oracle-autonomous02.htmlの項番7参照)の tnsnames.ora に記載されている host= の部分を入力します。
Port Numbertnsnames.ora に記載の port= に記載の番号を入力します。
Database Service Nametnsnames.ora に記載の service_name= の部分を入力します。
Target Distinguished Nametnsnames.ora に記載の CN= から C=XX までをすべて入力します。長いです。
Certificate/Wallet TypeJKS Wallet を選択します。
Certificate/Walletクレデンシャル・ウォレットの zip ファイルに入っている truststore.jks を選択します。
Keystore Walletクレデンシャル・ウォレットの zip ファイルに入っている keystore.jks を選択します。
Wallet Passwordウォレットのパスワードを入力します。
Database User Name今回は ADMIN を使用します。(大文字小文字の判定ありなのでご注意を)
Database PasswordADMIN のパスワードを入力します。

入力が終わったら、Test Connection をクリックします。

成功すると下記のようになります。
続いて Register Target をクリックします。

これでData Safe へのターゲットの登録が完了しました。
次は機密データの抽出を行っていきます。この画面から、Home をクリックします。

Continue をクリックします。

今回は何も気にせずにデフォルトの状態で Continue をクリックします。

Continue をクリックします。どんどん進みましょう。

SH2 にチェックを入れて、Continueをクリックします。

Identification Information を展開し、さらに Public Identifiers を展開します。
First Name、Last Name、Email Address にチェックを入れて、右下の Continue をクリックします。(見えにくくすみません。)

少し待つと下記の状態になります。この状態になったら Continue をクリックします。

機密データの抽出結果が表示されます。1 カラムにつき 63 個の対象があるようです。
Save and Continue をクリックします。

この画面では、マスキングのフォーマットを選択することができます。特に問題なさそうなので今回はデフォルトのままで進めます。
Confirm Policy をクリックします。

今すぐ実行したいので、Right Now を選択した状態で、Review をクリックします。

Submit をクリック…する前に、マスキングするターゲットが正しいこと、実行タイミングが問題ないことを確認します。
問題ないことを確認したら、Submit をクリックします。
※先述のとおりフラッシュバック機能やバックアップからのリストア・リカバリにて復旧することは可能ですが、ターゲットが正しいかどうか十分に確認してください。

マスキング処理が完了するまでしばらく待ちます。完了すると、下記の状態になります。
Report をクリックします。

マスキングに関するレポートが表示されます。
今回は 63 個のデータが 3 カラム分で 189 個のデータがマスキングされました。

3. マスキング結果の確認

Web のコンソールは閉じてしまって構いません。
再度、ADWC に SQL*Plus で接続してマスキングされたか確認してみましょう。

SQL> select distinct CUST_FIRST_NAME, CUST_LAST_NAME, CUST_EMAIL from sh2.customers;

CUST_FIRST_NAME      CUST_LAST_NAME     CUST_EMAIL
-------------------- ------------------ --------------------------------------
Amopccbcdwravolhiavc Ltretizjphiyeupqt  Mtwqfjk@qrzntwyexni.fptznqf.jp
Amopccbcdwravolhiavc Fpbqnwcaxga        Cdlzkjyc@zruvdjirm.zoduvlz.int
Amopccbcdwravolhiavc Wcymvzk            ojiaevzd.zjeqxiea@ujnnotm4d.iwonnai.us
Amopccbcdwravolhiavc Islyia             Rfsqrgwwoy@mbfszagdrdk.rkzfsrr.edu
Amopccbcdwravolhiavc Xsifnbgylflfqbkrf  Lltgffn@kgoelfsunfe.coloerc.cn

1-4 と比較して Abel がすべて「Amopccbcdwravolhiavc」に置換されています。また、CUST_LAST_NAME、CUST_EMAIL も置換されています。
EMAIL はアットマーク+ドメインの形は残るようですね。

まとめ

今回は Oracle Data Safe の Data Masking 機能について紹介しました。
Data Safe へのデータベースの登録がちょっと複雑と思われた方もいるかもしれませんが、登録後のデータ抽出やマスキングについては簡単に行えることがおわかりいただけたかと思います。

今回紹介した名前やメールアドレス以外にも、下記マニュアルに記載されているように様々な機密データを抽出することができますので、ぜひ一度お試しください。
https://docs.cloud.oracle.com/iaas/Content/DataSafe/sensitive-types.html