- 公開日
- 最終更新日
Amazon Macie 使ってみた
この記事を共有する
目次
こんにちは、パーソル&サーバーワークスの高橋です。
今回は、Amazon S3 に保存されたデータの中から機密データ(個人情報など)を自動で見つけ出してくれるサービス、Amazon Macie(メイシー)を使ってみたいと思います。
はじめに、Amazon Macie とは、機械学習とパターンマッチングを使って Amazon S3 内の機密データを検出・分類するデータセキュリティサービスです。 氏名・メールアドレス・クレジットカード番号などの個人情報(PII)や、AWS のシークレットキーといった認証情報を自動で検出できます。 さらに、バケットが公開設定になっていないか、暗号化されているかといった S3 の設定リスクも評価してくれます。
※ Macie は機密データの「検出・可視化」を行うサービスです。検出した機密データそのものを自動で削除・マスキングする機能はありません。見つけたリスクにどう対処するかは、EventBridge などと組み合わせて別途仕組みを作る形になります(本記事の番外編で紹介します)。
やってみた
1. Macie を有効にする
「ご利用開始にあたって」を押下します。

「Macie を有効化」を押下します。

このような画面になります。
Macie を有効化すると、「自動検出(automated sensitive data discovery)」が始まり、アカウント内の S3 バケットのメタデータ評価と、代表的なオブジェクトのサンプリング分析が自動で行われます。
※ バケット全体を一度にフルスキャンするわけではなく、あくまで概況を把握するための自動分析です。ファイル単位で網羅的に調べたい場合は、後述の「ジョブ」を作成します

2. スキャン対象の S3 バケットとファイルを用意する
S3 バケットを新規に作成し、機密情報を含んだダミーファイルを配置します。
今回は検証用に、以下のような架空の個人情報を含むファイルを用意しました(すべてダミーデータです)。
incident-report.txt... インシデント報告書。クレジットカード番号、AWS アクセスキー/シークレットキーを含むemployee-records.csv... 従業員名簿。クレジットカード番号、メールアドレスを含むcustomers.csv... 顧客リスト。氏名・住所・電話番号・クレジットカード番号・マイナンバーを含むsupport-ticket.txt... 問い合わせ文。マイナンバー・クレジットカード番号・メールを含む

3. Amazon Macie でスキャンしてみる
「ジョブを作成」を押下します。
Macie では、特定のバケットを対象に機密データを検出する「検出ジョブ(sensitive data discovery job)」を作成できます。

スキャンしたいバケットにチェックを入れ、「次へ」を押下します。

「次へ」を押下します。

スケジュールタイプを選びます。
今回は検証なので「ワンタイムジョブ(1回限り)」を選ぶのがおすすめです。ワンタイムジョブにすると、作成後に一度だけ実行されます。
(「スケジュールされたジョブ」で「毎日」などを選ぶと定期的に実行され続け、その分課金も継続するため、検証用途では注意してください)

マネージドデータ識別子は「推奨」を選択し「次へ」を押下します。
「推奨」を選ぶと、AWS が用意した各種の識別子(クレジットカード番号、各国の身分証番号、認証情報など)が自動で使われます。

カスタムデータ識別子の選択画面です。ここは一旦「次へ」を押下します。
※ 後ほど、ここで使う識別子を自分で作成します。

許可リストの選択画面も「次へ」を押下します。
(許可リストは、検知対象から除外したいテキストを定義する機能です。今回は使いません)

ジョブ名をつけて「次へ」を押下します。

内容に問題がなければ、「送信」を押下します。

しばらくすると、ステータスが「完了」になるので「結果を表示」から結果を確認します。

incident-report.txt と employee-records.csv が「High(重要度:高)」で検出されました。
AWS キー・クレジットカード番号・メールアドレスがしっかり検知されています。
ただし、 customers.csv や support-ticket.txt に含まれるマイナンバーは検知されませんでした。
そこで、マイナンバーを検知するための「カスタムデータ識別子」を自分で作成します。

4. カスタムデータ識別子を作成する
左のタブから「カスタムデータ識別子」を選択し、「作成」を押下します。

画像のように入力し、「送信」を押下します。
今回はマイナンバー(12桁)を検出するため、以下のように設定しました。
- 正規表現:
[0-9]{4}[- ]?[0-9]{4}[- ]?[0-9]{4} - キーワード:
マイナンバー,個人番号 - 最大一致距離: 50

5. もう一度ジョブを作成する
先ほど作成したカスタムデータ識別子にチェックを入れて、ステップ8まで進みジョブを作成します。

6. 結果の確認
マイナンバーが書かれたファイル customers.csv と support-ticket.txt が、新たに検知されていることが分かります。
これで、マイナンバーはカスタム識別子で検出できることが確認できました。

番外編: 検知をメールで通知する
Amazon Macie の検知を EventBridge・SNS と組み合わせることで、機密データを検知したときにメールで通知できることも確認しました。
Macie が機密データを検出すると EventBridge に Finding が送られ、それをトリガーに SNS 経由でメールが届く、という流れです。構成図は以下になります。

実際に届いたメール文がこちらです。重要度・検出タイプ・バケット名・オブジェクト名が記載されており、どのファイルで何が見つかったのかがひと目で分かります。

感想
実際に触ってみて、カスタムデータ識別子で検知する条件を柔軟に変えられるのは便利だと感じました。
EventBridge・SNS と組み合わせれば「検知したら即通知」まで自動化できるので、S3 に機密情報が紛れ込んでいないかを継続的に見張る仕組みとして、十分実用的だと感じました。
誰かのお役に立てば幸いです。
この記事は私が書きました
高橋 憲太
記事一覧パーソル&サーバーワークスの高橋です。 猫も犬も好きです。