【AWSサービス 基礎編】Amazon Macie で S3 バケット内の機密データを検出する

目次

概要

Amazon Macie は、機械学習とパターンマッチングを使用して Amazon S3 に保存された機密データを自動的に検出・分類・保護するセキュリティサービスです。個人情報(PII)、財務データ、認証情報などの機密データが意図せず S3 バケットに保存されていないかを検出できます。

クラウド環境では大量のデータが S3 に蓄積されていきますが、その中に機密データが含まれていることに気づかないケースがあります。Macie を利用することで、S3 バケット全体のセキュリティ状態を可視化し、機密データの所在を把握できるようになります。

本記事では、Macie を有効化し、S3 バケットに配置したサンプルデータに対して機密データ検出ジョブを実行する一連の流れを体験します。

Amazon Macie の構成: S3 バケットを評価・スキャンして、機密データの所在を検出結果として知らせる
Amazon Macie の構成: S3 バケットを評価・スキャンして、機密データの所在を検出結果として知らせる
クラウドおさる

猿山のバナナ倉庫にも、ときどき長老の秘密の手紙が紛れ込んでいるでござる。この記事では、S3 という倉庫に紛れた機密データを Macie で探し出すところまで、一緒に確かめるでござる。

この記事のメリット

  • Amazon Macie の基本的な仕組みとユースケースを理解できる
  • Macie の有効化手順を習得できる
  • 機密データ検出ジョブの作成・実行方法を体験できる
  • 検出結果(findings)の確認方法を把握できる
  • S3 バケットのセキュリティ評価機能を理解できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

クラウドおさる

とひさん、Amazon Macie とはどんなサービスでござるか?

土肥

Amazon Macie は、S3 に保存されたデータのセキュリティとプライバシーを管理するフルマネージドサービスだよ。機械学習とパターンマッチングを組み合わせて、機密データの検出と S3 バケットのセキュリティ評価を自動的に行ってくれるんだ。

クラウドおさる

機密データの検出…。具体的には、どんなデータを見つけてくれるのでござる?

土肥

いろいろなカテゴリの機密データを検出できるよ。こんな感じだね。

カテゴリ検出例
個人情報(PII)氏名(ラテン文字)、住所、電話番号(対応する国のみ)、パスポート番号、運転免許証番号、米国の社会保障番号(SSN)
財務データクレジットカード番号、銀行口座番号
認証情報AWS シークレットアクセスキー、OpenSSH などの秘密鍵、HTTP Basic 認証ヘッダー
クラウドおさる

クレジットカード番号やアクセスキーまで見つけてくれるのでござるな!猿山でいえば、倉庫番が箱を一つずつ開けて、バナナの間に挟まった金庫の合鍵を見つけ出すようなものでござる。

土肥

そうなんだ。こうした検出のルールは「マネージドデータ識別子」として AWS が用意していて、国やデータの種類ごとに分かれているよ。ジョブの既定は、よく使う種類をまとめた「推奨」のセットなんだ。氏名や電話番号の識別子は推奨のセットに入っていないし、電話番号は日本の番号に対応していない、という点は覚えておくといいね。組織固有のパターンは、カスタムデータ識別子を作れば検出できるよ。

クラウドおさる

Macie の主な機能を、もう少し詳しく教えてほしいでござる。

土肥

Macie には大きく 4 つの機能があるよ。

  • 機密データの検出: S3 オブジェクトをスキャンし、機密データの種類・場所・量を特定する
  • S3 バケットのセキュリティ評価: バケットのパブリックアクセス設定、暗号化設定、共有設定を自動的に評価する
  • 検出結果(findings): 検出された機密データやセキュリティ上の問題を findings として報告する
  • EventBridge 連携: 検出結果を Amazon EventBridge に送信し、自動的なアラート・修復アクションを実行できる
Macie の機能: S3 をスキャンし、機密データを検出して findings にまとめ、EventBridge で自動対応へつなぐ
Macie の機能: S3 をスキャンし、機密データを検出して findings にまとめ、EventBridge で自動対応へつなぐ
クラウドおさる

見つけて終わりではなく、EventBridge と連携して自動で対応まで回せるのでござるな。これは便利でござる!

クラウドおさる

機密データの検出は、どうやって実行するのでござるか?

土肥

機密データの検出は「ジョブ」として実行するんだ。ジョブでは以下の項目を指定するよ。

  • 対象の S3 バケット: スキャンする S3 バケットを選択
  • スケジュール: 1 回限りの実行、または定期的な実行(日次・週次・月次)
  • スコープ: バケット全体、またはプレフィックスやタグでフィルタリング
  • カスタムデータ識別子: 標準のマネージドデータ識別子に加えて使用するカスタム識別子
クラウドおさる

定期的にスキャンすることもできるのでござるな。ちなみに、料金はどのように決まるのでござる?

土肥

Macie の料金は大きく 3 つの要素で構成されているよ。

  • S3 バケットの評価とモニタリング: Macie が評価するバケットの数に応じて、日割りで課金
  • 自動機密データ検出のためのオブジェクト監視: アカウントのバケットにあるオブジェクトの数に応じて、日割りで課金
  • データの分析: 機密データ検出ジョブや自動機密データ検出で分析したデータ量に応じて課金。毎月 1 GB までの分析は無料
土肥

自動機密データ検出は、アカウント内のバケットからオブジェクトをサンプリングして毎日少しずつ分析する機能だよ。対象は既定ですべての汎用バケットなんだ。今回のハンズオンでも、Macie を有効にした数分後にこの機能が有効になっていたよ。それと、Macie を初めて有効にすると 30 日間の無料トライアルが始まって、その間はバケットの評価とモニタリングに料金がかからないんだ。ただし、機密データ検出ジョブはトライアルの対象外だよ。

クラウドおさる

トライアルが終われば、ジョブを動かさなくても、有効にしている間はバケットの評価やオブジェクトの監視で課金されるのでござるな。使わぬときにつけっぱなしだと、バナナが少しずつ飛んでいくでござるぞ。

土肥

そうだね。ハンズオンで試した後は無効化しておくといいよ。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド8 ステップ画面 7 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

前提条件

  • リージョン: ap-northeast-1(東京)
  • S3 バケットを作成できる IAM 権限があること
  • Amazon Macie を操作できる IAM 権限があること

作成するリソース一覧

リソース種別リソース名用途
S3 バケットmacie-handson-data-<アカウントID>機密データ検出の対象バケット
Macie 検出ジョブhandson-macie-job機密データ検出ジョブ

S3 バケット名はグローバルで一意にする必要があるため、<アカウントID> の部分をご自身の AWS アカウント ID に置き換えてください。

ステップ1: サンプルデータの準備と S3 へのアップロード

まず、機密データを含むサンプルファイルを作成し、S3 にアップロードします。

ローカルマシンで以下の内容のファイルを sample_data.csv として保存します。

employee_id,name,email,phone,credit_card,ssn
001,Taro Yamada,taro.yamada@example.com,090-1234-5678,4111-1111-1111-1111,123-45-6789
002,Hanako Suzuki,hanako.suzuki@example.com,080-2345-6789,5500-0000-0000-0004,987-65-4321
003,Jiro Tanaka,jiro.tanaka@example.com,070-3456-7890,3400-000000-00009,456-78-9012

このファイルには、メールアドレス、電話番号、クレジットカード番号、社会保障番号(SSN)といった機密データが含まれています。

上部の検索バーに S3 と入力し、表示された「S3」を選択します。

「バケットを作成」をクリックし、以下を入力します。

  • バケット名: macie-handson-data-<アカウントID>
  • リージョン: アジアパシフィック(東京)ap-northeast-1
  • その他の項目はデフォルトのままにします

「バケットを作成」をクリックします。

作成したバケットを開き、「アップロード」をクリックして sample_data.csv をアップロードします。

sample_data.csv がアップロードされた S3 バケットの画面
sample_data.csv がアップロードされた S3 バケットの画面

ステップ2: Amazon Macie を有効化する

上部の検索バーに Macie と入力し、表示された「Macie」を選択します。

Macie を初めて使用する場合、「Macie を有効にする」画面が表示されます。「Macie を有効化」をクリックします。

Macie の有効化画面
Macie の有効化画面

有効化が完了すると、Macie の概要画面が表示されます。Macie が S3 バケットのメタデータの収集を始めますが、バケットが一覧に出るまで 5〜10 分ほどかかることがあります。

ステップ3: S3 バケットのセキュリティ状態を確認する

左側ナビゲーションの「S3 バケット」を選択します。

Macie がアカウント内の S3 バケットを評価した結果が一覧表示されます。一覧には機密性スコア、分類可能なオブジェクトの数とサイズ、ジョブによるモニタリングの有無などが並びます。

上部の検索欄で「バケット名」を選び、macie-handson-data-<アカウントID> で絞り込みます。バケットの行をクリックすると、右側のパネルで以下を確認できます。

  • 機密性スコア
  • 共有アクセスの状態
  • デフォルトの暗号化の設定
S3 バケット一覧で作成したバケットを選び、右側のパネルにセキュリティ評価が表示された状態
S3 バケット一覧で作成したバケットを選び、右側のパネルにセキュリティ評価が表示された状態

バケットのメタデータは毎日更新されるため、アップロードした直後は「分類可能なオブジェクト」が 0 のままのことがあります。この場合でも、次のジョブはオブジェクトを分析できます。

クラウドおさる

まだジョブを作っていないのに、バケットのパブリックアクセスや暗号化の状態はもう評価されているでござるな。技術解説で見た「S3 バケットのセキュリティ評価」は、有効化しただけで動くのでござる。

ステップ4: 機密データ検出ジョブを作成する

左側ナビゲーションの「ジョブ」を選択します。

「ジョブを作成」をクリックします。「ジョブを作成してよろしいですか?」という確認が表示されます。機密データ検出ジョブは自動機密データ検出の無料トライアルの対象外である旨が書かれていますが、毎月 1 GB までの分析は無料のため、今回のサンプルファイル(数百バイト)では料金は発生しません。「はい」をクリックします。

作成ウィザードは 8 つのステップで進みます。

ステップ1: S3 バケットを選択

  • 「特定のバケットを選択」が選ばれていることを確認します
  • 検索欄で macie-handson-data-<アカウントID> に絞り込み、バケットにチェックを入れます

「次へ」をクリックします。

ジョブ作成画面 — S3 バケットの選択
ジョブ作成画面 — S3 バケットの選択

ステップ2: S3 バケットを確認

選択したバケットと推定コストが表示されます。「次へ」をクリックします。

ステップ3: 範囲を絞り込む

  • スケジュール: 「ワンタイムジョブ」を選択します
  • サンプリング深度: 100 のままにします(バケット内の全オブジェクトを対象)
  • その他の項目はデフォルトのままにします

「次へ」をクリックします。

ステップ4: マネージドデータ識別子

  • 「推奨」を選択します(デフォルト)

「次へ」をクリックします。

ステップ5: カスタムデータ識別子

今回はカスタムデータ識別子を使用しないため、そのまま「次へ」をクリックします。

ステップ6: 許可リスト

許可リストも使用しないため、そのまま「次へ」をクリックします。

ステップ7: 一般設定

  • ジョブ名: handson-macie-job
  • ジョブの説明 – オプション: ハンズオン用の機密データ検出ジョブ

「次へ」をクリックします。

ステップ8: 確認して作成

設定内容を確認し、「送信」をクリックします。確認画面とジョブ一覧には、機密データ検出結果を保存するリポジトリの設定を促す案内が表示されますが、今回は設定しません。

ジョブが作成され、ステータスが「アクティブ (実行中)」になります。

作成されたジョブの一覧画面(ステータスが「アクティブ (実行中)」の状態)
作成されたジョブの一覧画面(ステータスが「アクティブ (実行中)」の状態)

ステップ5: 検出結果を確認する

ジョブの完了には十数分かかることがあります。ジョブ一覧でステータスが「完了」になるのを待ちます。

左側ナビゲーションの「検出結果」を選択します。Macie が検出した機密データの検出結果が一覧表示されます。今回のサンプルでは、検出結果が 1 件作成されます。検出結果をクリックすると、右側に詳細が表示されます。

検出結果の詳細画面(検出された機密データの種類と件数が表示されている状態)
検出結果の詳細画面(検出された機密データの種類と件数が表示されている状態)

詳細では以下の情報が確認できます。

  • 検出結果のタイプ: SensitiveData:S3Object/Multiple(複数のカテゴリの機密データが見つかったことを表す)
  • 重要度: High
  • 機密データ: クレジットカード番号(Credit card number)が 2 件、米国の社会保障番号(Usa social security number)が 2 件
  • 影響を受けるリソース: 対象の S3 バケットとオブジェクト、パブリックアクセスや暗号化の状態

サンプルにはメールアドレス・電話番号・氏名も入っていますが、検出されていません。メールアドレスを検出するマネージドデータ識別子は無く、氏名と電話番号の識別子はジョブの既定の「推奨」セットに含まれていないためです(電話番号は日本の番号にも対応していません)。また、カード番号と SSN も 3 件ずつ入れていますが、検出されたのは 2 件ずつでした。

クラウドおさる

検出結果のタイプは、カテゴリが 1 種類なら SensitiveData:S3Object/Financial や .../Personal、複数なら .../Multiple になるでござる。そして「入れたものが全部見つかる」とは限らないのでござるな。どの識別子でジョブを回したかを、結果と一緒に確かめるのが大事でござる。

ステップ6: ジョブの実行結果の統計を確認する

左側ナビゲーションの「ジョブ」を選択し、handson-macie-job をクリックします。

右側のパネルで、ステータスが「完了」になっていることと、「統計」の「処理するオブジェクトの概数」と「実行回数」を確認します。処理するオブジェクトの概数は、ジョブ作成時点のバケットのメタデータから見積もった値のため、アップロード直後のバケットでは 0 と表示されることがあります。実際に分析した結果は「結果を表示」メニューから検出結果に移って確認します。

ジョブの詳細画面(ステータスが「完了」、統計が表示された状態)
ジョブの詳細画面(ステータスが「完了」、統計が表示された状態)

まとめ

  • Amazon Macie は S3 に保存された機密データを自動的に検出・分類するセキュリティサービスである
  • マネージドデータ識別子により、PII、財務データ、認証情報などを検出できる。ジョブの既定は「推奨」セットで、氏名や電話番号は含まれない
  • 機密データの検出はジョブとして実行し、1 回限りまたは定期的なスケジュールで設定できる
  • S3 バケットのセキュリティ状態(パブリックアクセス、暗号化、共有設定)を自動的に評価する
  • 検出結果は findings として報告され、EventBridge と連携して自動通知・修復アクションを実行できる
  • カスタムデータ識別子を作成することで、組織固有のデータパターンにも対応できる

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次