← ハンズオン一覧に戻る

AWS Hands-on / Security

S3に潜む個人情報を、自動で見つける

S3バケットに保存されたファイルの中から、氏名・メールアドレス・クレジットカード番号といった機密データを自動的に見つけ出す Amazon Macie を使います。ダミーの個人情報を含むテストファイルを用意し、発見ジョブを実行して検出結果を確認します。

● Lv.3 複数のサービスを組み合わせられる人 ⏱ 所要 40〜60 分 コンソールのみで完結
01 — Prerequisites

はじめる前に

  • 必須AWS アカウントを持っていること
  • 必須マネジメントコンソールにサインインできること
  • 必須S3バケットの作成・ファイルのアップロードをしたことがある
  • あると良いCSVファイルを手元で編集した経験

※ このハンズオンは すべてコンソールだけで完結します。テストファイルはローカルのテキストエディタなどで作成し、S3にアップロードします。

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

S3バケットには、業務で使ったログやエクスポートしたCSVなど、さまざまなファイルが置かれます。その中に、氏名・メールアドレス・クレジットカード番号といった機密データがうっかり混ざっていても、ファイルの数が多くなると、人の目だけで見つけるのは大変です。

Amazon Macie は、機械学習とパターンマッチングを使って、S3に保存されたデータの中から機密データを自動的に見つけ出すサービスです。今回は、架空の人物のダミーデータを含むテストファイルをS3に置き、Macieの「機密データの発見ジョブ」を実行して、どんな種類の機密データがどこにあるかを検出結果から確認します。

Macieは本当に「人の名前」や「メールアドレス」を理解しているの?

Macieは、あらかじめ用意された管理対象の識別子(氏名・メールアドレス・クレジットカード番号など、よくある機密データのパターン)を使って判定しています。意味を完全に理解しているわけではなく、パターンと機械学習による分類に基づいて検出している、という理解で十分です。

一度ジョブを実行すれば、新しくアップロードしたファイルも自動的にチェックされるの?

今回作成する「1回限り」のジョブでは、実行時点にあるファイルだけが対象です。継続的に新しいファイルもチェックしたい場合は、ジョブのスケジュールを「定期実行」に設定するか、自動的な機密データ発見の機能を使う必要があります。

重要 — 実在する個人の情報は使わない

このハンズオンでは、実際に存在する人物の氏名・メールアドレス・クレジットカード番号などは絶対に使わないでください。架空の氏名(例:「山田太郎」のような明らかに作成例だと分かる名前)、test@example.com のようなテスト用ドメインのメールアドレス、クレジットカード会社が検証用に公開しているテスト番号など、実在しないダミーデータだけを使用します。

Goal

ダミーの個人情報を含むCSVファイルをS3に配置し、Macieの機密データ発見ジョブを実行して、検出結果(Finding)にどの種類の機密データがどのオブジェクトで見つかったかが報告されることを確認する。

04 — Architecture

つくる構成

S3に置いたテストファイルを、Macieの発見ジョブがスキャンし、機密データの種類ごとに検出結果として報告する、という流れを作ります。

🪣 S3バケット ダミーの個人情報を含むCSV
🔍 Macie 発見ジョブ 1回限りのスキャン
📋 検出結果(Finding) 機密データの種類と件数

Macieが標準で検出できる機密データの例(一部)です。

🙍氏名NAME
✉️メールアドレスEMAIL_ADDRESS
💳クレジットカード番号CREDIT_CARD_NUMBER
📞電話番号PHONE_NUMBER
05 — Requirements

要件

以下の要件を満たし、「ダミーデータを置く」→「ジョブを実行する」→「検出結果を確認する」という流れを体験してください。

No要件
1リージョンは「東京(ap-northeast-1)」を使用する。
2Amazon Macie を有効化する。
3テスト用のS3バケットを1つ作成する(名前は一意に、例:macie-demo-yourname)。
4架空の人物のダミーデータ(氏名・メールアドレス・クレジットカード番号など、実在しない情報)を含むCSVファイルを1つ作成し、そのバケットにアップロードする。
5そのバケットを対象にした「機密データの発見ジョブ」を、1回限りの実行で作成する。
6ジョブの実行が完了し、検出結果に機密データの種類と件数が報告されることを確認する。
06 — Steps

構築の進め方

「Macieを有効化する」→「テストデータを用意する」→「ジョブを実行して結果を見る」という順番で進めます。

  1. フェーズ1 — Macieを有効化する
  2. マネジメントコンソールにサインインし、リージョンを合わせる

    ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。

  3. Amazon Macieを有効化する

    Macieコンソールを開き、「Macieを有効にする」を選びます。有効化すると、アカウント内のS3バケットの自動的な可視化(バケットの一覧や暗号化状況の確認)が始まります。

  4. フェーズ2 — テストデータを用意する
  5. ダミーの個人情報を含むCSVファイルを作る

    ローカルのテキストエディタで、次のような架空のデータだけを含むCSVファイルを作成します(実在する人物の情報は使わないでください)。

    customers_sample.csv(例)
    # 架空の人物のみ。実在の情報は使用しない
    name,email,phone
    Taro Yamada,taro.yamada@example.com,090-0000-0001
    Hanako Suzuki,hanako.suzuki@example.com,090-0000-0002
    Jiro Tanaka,jiro.tanaka@example.com,090-0000-0003
  6. テスト用のS3バケットを作成し、ファイルをアップロードする

    S3コンソールでバケットを1つ作成します(名前は一意に、例:macie-demo-yourname)。作成したCSVファイルをアップロードします。

  7. フェーズ3 — ジョブを実行して結果を見る
  8. 機密データの発見ジョブを作成する

    Macieコンソールの「発見ジョブ」から「ジョブを作成」を選び、対象に手順5で作成したバケットを指定します。スケジュールは「1回限り」を選び、識別子はデフォルト(管理対象の識別子をすべて使用)のまま進めます。

    スキャン対象を絞る

    本番運用では、すべてのバケットを毎回スキャンすると料金がかさみます。今回のように対象バケットを絞って実行することで、無駄なスキャンを避けられます。

  9. ジョブの完了を待つ

    ジョブの一覧で、ステータスが「実行中」→「完了」に変わるのを待ちます。テストファイル1つであれば、通常は数分程度で完了します。

  10. 検出結果を確認する

    Macieコンソールの「検出結果」を開きます。アップロードしたファイルに対して、機密データの種類(氏名・メールアドレス・電話番号など)と件数が報告されていることを確認します。検出結果の詳細から、どのオブジェクトのどのあたりに、どの種類のデータが見つかったかも確認できます。

    これがゴール

    アップロードしたファイルに対して、機密データの種類と件数が報告される——この結果を確認できたら、このハンズオンの目的は達成です。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。

Pitfall 01 — ジョブが完了しても検出結果が0件

「ジョブは完了したのに、何も見つからない」

ジョブの対象に正しいバケット・正しいファイルが含まれているか、ファイルの拡張子や形式がMacieのサポート対象(CSV、JSON、テキストなど)になっているかを見直しましょう。また、ファイルの中身が本当にパターンに合うデータになっているかも確認しましょう。

Pitfall 02 — ジョブの一覧に作成したジョブが出てこない

「ジョブを作成したはずなのに見当たらない」

Macieが有効化されているリージョンと、バケットを作成したリージョンが一致しているか見直しましょう。Macieはリージョンごとに個別に有効化・管理されるサービスです。

08 — Checklist

完了チェック

要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。

  • Macieコンソールの概要画面で、Macieが「有効」な状態になっている。
  • 「発見ジョブ」一覧で、作成したジョブのステータスが「完了」になっている。
  • 「検出結果」一覧に、対象バケット・オブジェクトに対する機密データのFindingが表示されている。
  • 検出結果の詳細で、機密データの種類(氏名・メールアドレスなど)と件数が確認できる。
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. このハンズオンで、実在する個人の情報を使ってはいけないのはなぜでしょうか。
    ヒント
    学習・検証目的であっても、実在する個人の情報をクラウド上に置くことには、プライバシーや法令上のリスクが伴います。「目的が学習だから問題ない」とは言えない理由を考えてみましょう。
  2. 1回限りの発見ジョブと、自動的な機密データ発見(継続的な仕組み)は、どのような場面で使い分けるとよいでしょうか。
    ヒント
    1回限りのジョブは「今あるデータを一度確認したい」場合に向いています。継続的な仕組みは「日々アップロードされる新しいデータも見落としたくない」場合に向いています。運用の頻度という観点で考えてみましょう。
  3. 機密データが見つかった場合、次にどのような対応を検討するべきでしょうか。
    ヒント
    見つかったファイルへのアクセス権を見直す、暗号化の設定を確認する、不要であれば削除する、など複数の対応が考えられます。「検出すること」と「対応すること」は別の作業である、という点がヒントです。
10 — Clean up

後片づけ

Macieは有効化したままにすると料金が発生し続けるため、検証が終わったら必ず後片づけをしましょう。

  1. S3バケットを空にして削除する:アップロードしたテストファイルを削除してから、バケット本体を削除します。
  2. 発見ジョブを確認する:1回限りのジョブは自動的に再実行されません。削除しなくても追加料金は発生しませんが、不要であれば一覧から削除して構いません。
  3. Macieを無効化する:これ以上使わない場合は、Macieコンソールの設定から「Macieを無効にする」を選びます。
Caution — 無効化を忘れると料金がかかり続ける

Macieは有効化している間、自動的な分析が継続する

Macieを有効化した状態のままにしておくと、アカウント内のS3バケットの自動的な可視化が継続し、料金が発生し続ける場合があります。検証目的で有効化した場合は、後片づけのタイミングで忘れずに無効化しましょう。

コストに関する注意: Amazon Macie は、評価したS3バケットの数や、スキャンしたデータ量(GB)に応じて課金されます。初めて有効化してから一定期間は無料トライアルの対象になる場合がありますが、トライアル期間や対象範囲は変更される可能性があるため、有効化前にコンソールで表示される見積もりを確認してください。今回のように少量のテストファイル1つ程度であれば料金はごく小さく済みますが、有効化したままにすると継続して料金が発生する点に注意してください。S3の保存容量・リクエストにも別途料金がかかります。検証が終わったら、上の「後片づけ」に沿ってMacieを無効化し、バケットを削除しましょう。最新の料金は AWS の公式料金ページで確認してください。