こんにちは。インサイトテクノロジーの松尾です!
2021年の夏は、札幌も本当に暑いです。自宅にはエアコンがないのですが、購入も考えなくはないのですがなんとかまだ扇風機で頑張っています。
本ブログでは Insight Data Masking で Amazon S3 上に配置した CSV ファイルをマスキングする方法を紹介します。
Insight Data Masking の新バージョン 2.0 が先日リリースされたのですが、本バージョンでは S3 上に配置したファイルをマスキングするための設定を簡単に行えるようになりました ( 以前のバージョンでも手順により実施することはできました ) 。なお、S3 バケットと EC2 インスタンスは同じ AWS アカウント内に存在することを前提としています。
Insight Data Masking で S3 に配置した CSV ファイルをマスキングするための準備
まず、準備として、Insight Data Masking と S3 バケットの設定を以下の流れで行います。
- Insight Data Masking を EC2 インスタンスとして起動
- 使用する S3 バケットを用意
- Insight Data Masking でバケットの情報を入力
- IAM 設定で S3 バケットへのアクセスを許可
- Insight Data Masking から指定された S3 バケットへ接続
Insight Data Masking を EC2 インスタンスとして起動
Insight Data Masking は起動するための AMI を用意しており、その AMI から EC2 インスタンスとして簡単に起動することができます。現在は AWS Marketplace での提供には対応されておりませんので、EC2 インスタンスとして起動したい場合は起動するための AMI をご案内いたしますので、弊社サポートまでお問い合わせください。

EC2 として起動するための AMI 情報を入力したら、その AMI から、通常の手順で EC2 を起動します。小さなファイルのマスキングであれば t3.medium 程度を指定します。Web コンソール画面へのアクセスにポート番号 80 番を使用するので、起動時には 80 と ssh 接続用の 22 番を許可するようにしてください。

並列処理が必要になる場合など、大量のマスキング処理が必要になってくる場合は、より大きなインスタンスサイズの利用もご検討ください。
使用する S3 バケットを用意
次に S3 バケットを用意します。ここでは、以下の二つを用意します。
- 入力データ配置用バケット:
my-masking-input
- マスキング結果出力用バケット:
my-masking-output
S3 バケットと EC2 インスタンスは同じ AWS アカウント内に存在することを前提としていますので、「このバケットのブロックパブリックアクセス設定」 の 「パブリックアクセスをすべて ブロック」 は有効のままで問題ありません。

Insight Data Masking でバケットの情報を入力
バケット情報の設定を入力するため Insight Data Masking の設定画面を開きます。
- Insight Data Masking の管理者画面で「オプション」を選択し、「構成」で「Amazon S3」を選択します。
- 「異なるバケット間でマスキング」を選択し、「ソースバケット名」と「出力バケット名」にそれぞれ用意したバケットを指定します。

- 「ソースパス設定」や「出力パス設定」を設定することで、S3 バケット内のフォルダを指定することも可能です。
IAM 設定で S3 バケットへのアクセスを許可
IAM 設定で Insight Data Masking に対して S3 バケットへのアクセスを許可します。
- 先の手順で S3 バケット情報を入力した後、「IAM ポリシーの作成」をクリックすると、必要な IAM 設定を行うための json ファイルがダウンロードされます。ダウンロードされるファイルの中身は以下のようなものです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-masking-input",
"arn:aws:s3:::my-masking-output"
]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": [
"arn:aws:s3:::my-masking-input/*",
"arn:aws:s3:::my-masking-output/*"
]
}
]
}
- AWS コンソールで「Identity and Access Management (IAM)」の「ポリシー」を選択し、「ポリシーを作成」を選択します。
- 「JSON」タブを選択し、先ほどダウンロードしたファイルの中身を貼り付けます。

- IAM ポリシーを適当な名前で保存します。
- 「Identity and Access Management (IAM)」の「ロール」を選択し、「ロールを作成」を選択します。
- 「ユースケースの選択」で「EC2」を選択します。

- 「Attach アクセス権限ポリシー」で自分が作成したポリシーを選択します。

- IAM ロールを適当な名前で保存します。
- 「EC2」の「インスタンス」を選択し、自分が起動したインスタンスを選択します。
- 右クリックで「セキュリティ」を選択し「IAM ロールを変更」を選択します。
- 作成した IAM ロールを選択して保存します。

Insight Data Masking から指定された S3 バケットへ接続
Insight Data Masking から S3 バケットへ接続します。
- Insight Data Masking の管理者画面で S3 バケットの情報を入力した状態で「適用する」を選択します。
- 接続に成功すると、緑色のチェックマークがつきます。

- 接続が成功するまでに何回か再試行が必要な場合もあります。
- 初回の接続に失敗した場合は、何回か実行してみてください。
S3 上のファイルをマスキングするための準備ができました。
マスキングの実行
CSV ファイルを S3 バケットに配置してマスキングを行います。
マスキングの実行にあたっては、マスキングしたい任意の CSV ファイルを用意ください。
今回のブログ記事では、サンプルのデータとして、以下の国勢調査のページからダウンロードした CSV ファイルを使用しました。
この中の、3番目の CSV ファイルをダウンロードし、最後の行のみ削除して使用しています。

入力ファイルの S3 へ配置
入力データ配置用バケットに CSV ファイルを配置します。

マスキングの設定
Insight Data Masking にてマスキングの設定を行います。
- 一般ユーザーでログインします。
- Insight Data Masking では、マスキングの処理は一般ユーザーで行います。一般ユーザーを作成していない場合、ログイン画面から「登録」により作成してください。
- 「新規プロジェクト名」と「コメント」を入力してプロジェクトを作成します。

- 「基本設定」で「CSV」タブが選択されている状態で「追加」を選択します。
- S3 バケットへ配置した CSV ファイルが表示されるので、選択して「OK」を選択し、プロジェクトへ追加します。

- 「マスキング設定」で追加したファイルを選択し ( リストのチェックボックスを有効にし )、リストの上にある「有効」を選択します。「状態」が有効となります。

- ファイルの一覧から、対象ファイル一覧の右に表示されている「カラム設定」を選択します。
- ファイルに含まれるカラムの一覧が表示されるので、マスキングしたカラムを選択し、リストの上にある「有効」を選択します。「状態」が有効となります。

- 「設定保存」で「設定を反映したら自動的にマスキングを開始する」をチェックし、「設定を反映」を選択します。このタイミングでマスキング処理が実行されます。

- 「レポート」を選択し、マスキングが実行されたログが表示されることを確認します。

マスキング結果の確認
- マスキング結果出力用バケットに CSV ファイルが出力されていることを確認します。CSV ファイルは、プロジェクト ID のフォルダの中に作成されます。プロジェクト ID は、Insight Data Masking の「基本設定」から確認することができます。

- CSV ファイルをダウンロードし、選択した項目がマスキングされていることを確認します。

ファイルの中身がマスキングされていることを確認することができました!
今回のブログで使用したファイルは個人名などが含まれているファイルではありませんでしたが、機微な情報が入っているデータを取り扱う必要がある場合でも、とても簡単にマスキング処理を行えることが確認できました。
おわりに
本ブログでは Insight Data Masking で Amazon S3 上に配置した CSV ファイルをマスキングする方法を紹介しました。
Insight Data Masking をまだご利用いただいていない方で実際に試されたい場合は、製品の説明やデモ、トライアルなどについてInsight Data Maskingに関するお問い合わせ よりお問い合わせいただければと思います。
次回もどうぞお楽しみに!