AWS入門ブログリレー2024〜Amazon Macie編〜
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の17日目のエントリです。
このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。今回のテーマは『Amazon Macie』です。
Amazon Macieとは
Amazon Macieとは、機械学習やパターンマッチングにより、S3バケット内のオブジェクトに含まれる機密情報を検出することが出来るサービスです。
ここでの機密情報とは、例えばAWSのシークレットアクセスキーやクレジットカード番号、住所や電話番号等の個人情報(PII)のことを指します。機密情報の詳細については後述します。
例えば自分が内容を把握出来ていないファイルに機密情報が!どうします?
例えば、下記のようなCSVファイルがあったとします。あなたの組織のとあるシステムで利用されているCSVファイルらしいのですが、組織全体のセキュリティを管理しているあなたはファイルの内容をあまり把握していません。
username,department,department_id,access_key_id,favorite_color,hobbies,pet_name,movie_genre,music_genre,book_genre,vacation_spot,employee_id,birthday,interests,salary,secret_key,car_make,car_model,dietary_preference,created_at,updated_at becominn,aws,1,AKIAIOSFODNN7EXAMPLE,blue,sake,tsubaki,anime,jpop,mystery,oita,123456,1985-06-15,photography,50000,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY,toyota,camry,vegetarian,2023-04-01,2024-04-10 nanachi,fuwafuwa,2,AKIAIOSFODNN7EXAMPLE,brown,fishing,mitty,anime,jazz,mystery,abyss,654321,1990-11-30,gardening,45000,HONMONO/******/KEY,toyota,aqua,vegetarian,2023-04-01,2024-04-10 kikori,accounting,3,AKIAIOSFODNN7EXAMPLE,green,hiking,momo,sci-fi,rock,fantasy,yosemite,789012,1992-03-22,reading,55000,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY,honda,civic,omnivore,2024-04-01,2024-04-10 kuromu,marketing,4,AKIAIOSFODNN7EXAMPLE,purple,reading,coco,drama,classical,historical,tuscany,345678,1987-09-08,cooking,60000,je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY,nissan,leaf,vegan,2024-04-01,2024-04-10 tanpopo,hr,5,AKIAIOSFODNN7EXAMPLE,yellow,cooking,popo,comedy,edm,biography,bali,901234,1993-12-05,hiking,52000,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY,subaru,impreza,gluten-free,2024-04-01,2024-04-10
さて、この中にAWSのシークレットアクセスキー HONMONO/******/KEY
が含まれています。見つけられましたか?
実際に上記のcsvファイルをS3バケットに入れ、Amazon Macieの検出ジョブを実行してみました。(※もちろん HONMONO/******/KEY
の代わりに実際のシークレットアクセスキーを入れました。)
検出されていますね。また、詳細な機密データの位置も下記のようにjson形式で出力されます。
{ "count": 1, "occurrences": { "cells": [ { "cellReference": null, "column": 16, "columnName": "secret_key", "row": 3 } ] }, "type": "AWS_CREDENTIALS" }
このように、Amazon Macieは大量のオブジェクトの中から機密データを発見し、詳細な位置(行や列など)も教えてくれる素敵なサービスです。今回はCSVファイルでしたが、様々な形式のフォーマットにも対応しています。
それでは、もう少し深くAmazon Macieのことを知っていきましょう。
主な機能
Amazon Macieの主な機能は以下の通りです。
- 機密データ検出
- 基本的には自動検出
- 検出ジョブを作成して手動で検出を行うことも可能
- S3バケットのセキュリティ体制評価
シンプルですね。副次的にスキャン対象S3バケットのセキュリティ体制も評価してくれます。
それぞれの機能を見ていきます。
機密データ検出
「機密データの検出」はAmazon Macieの主機能です。
この機密データの検出ですが、以下2つの方法があります。
- 自動検出
- 検出ジョブを利用した検出
自動検出
自動検出は、2022年のre:Invent期間中、Amazon Macieに追加された機能です。
当時の記事はこちら
元々Amazon Macieには、機密データ検出の方法として後述する「検出ジョブを利用した検出」しかありませんでした。しかし、この自動検出のおかげでAmazon Macieが使いやすくなりました。
自動検出はオプション扱いではありますが、基本的にはこの機能を有効化し、より対象を細かく絞ったスキャンを行いたい場合は後述の検出ジョブを利用した検出を行うと良さそうです。
自動検出は基本的に有効化するだけで利用可能です。また、以下の項目を任意で設定可能です。
- ステータス
- 現在の有効/無効が確認可能。有効化/無効化もここから行う
- 除外するS3バケット
- スキャン対象から除外したいS3バケットを選択可能
- マネージドデータ識別子
- 利用するマネージドデータ識別子を追加/除外可能
- デフォルトでいくつかのマネージドデータ識別子が設定されている
- カスタムデータ識別子
- 利用するカスタムデータ識別子を選択可能
- 許可リスト
- 利用する許可リストを選択可能
各識別子、許可リストの詳細については後述します。
自動検出を有効化すると、アカウント内のS3バケットに含まれる機密データの状況を下図のようなヒートマップで教えてくれます。
引用元: https://docs.aws.amazon.com/ja_jp/macie/latest/user/discovery-asdd.html
各マップがそれぞれアカウント単位で、その中の1つの四角形が各S3バケットを表しています。
赤色になっているバケットは機密データが含まれているもの、青色は機密データが含まれていないもの、などの定義は下図の通りです。
もちろん、本記事の冒頭でも例示したように、このマップから各S3バケットの情報を参照し、詳細な検出情報を確認することも可能です。
また、スキャン可能なファイルタイプは以下の通りです。
- ビッグデータ
.avro
、.parquet
- 圧縮またはアーカイブ
.gz
、.gzip
、.tar
、.zip
- ドキュメント
.doc
、.docx
、.pdf
、.xls
、.xlsx
- Eメールメッセージ
.eml
- テキスト
.csv
、.htm
、.html
、.json
、.jsonl
、.tsv
、.txt
、.xml
など
その他、より詳細な自動検出の仕様については下記ガイドをご参照ください。
検出ジョブを利用した検出
自動検出オプションより前から存在するのが、この「検出ジョブを利用した検出」です。
検出ジョブという機密データ検出のルールを作成し、手動 or スケジュール で検出を実行します。
検出ジョブで設定可能な主な項目は以下の通り。
- スキャン対象のS3バケット
- 複数選択可能、アカウントIDやバケット名などの条件での指定も可能
- 検出オプション
- 定期実行、ワンタイム実行
- 定期実行は毎日、毎週、毎月から選択可能
- サンプリング深度
- 検出実行時にAmazon Macieがサンプリングするオブジェクトの割合
- 対象オブジェクトの条件
- ファイル拡張子や最終改訂日、プレフィックスなど
- 定期実行、ワンタイム実行
- マネージド識別子
- カスタム識別子
- 許可リスト
自動検出は基本的に周期が1日ごとなので、即時検出を行いたい場合や検出対象をより細かく指定したい場合には検出ジョブを利用しましょう。
より詳細な検出ジョブを利用した検出については、下記ガイドをご参照ください。
S3バケットのセキュリティ体制評価
また、副次的な機能ですが、Amazon MacieではS3バケットのセキュリティチェックも行ってくれます。
全てのS3バケットについて、以下の項目を下図のように可視化してくれます。
- 自動検出
- 機密データが含まれるS3バケットの数
- カバレッジ問題
- Macieによってアクセス拒否などされたS3バケットの数
- データのセキュリティ
- パブリックアクセス、共有設定、暗号化
- S3バケットにおいて上記設定の現状
もちろんSecurity HubやS3のコンソールでも確認は可能ですが、こちらの方がパッと見て分かりやすいと思います。
S3バケットのセキュリティ体制評価についての詳細は、下記ガイドをご参照ください。
機密データ検出のコンポーネント
機密データ検出にはスキャン対象のS3バケット選択などいくつか設定項目があります。そんな中でも特殊なコンポーネントが 識別子
と 許可リスト
です。
機密データの識別子
Amazon Macieでは機密データの検出に機械学習とパターンマッチングを利用しています。そのデータパターン定義に利用されるものが 識別子
です。
識別子は主に以下の2つがあります。
- マネージドデータ識別子
- カスタムデータ識別子
マネージドデータ識別子
マネージドデータ識別子は、その名の通りAWSが用意しているマネージドな識別子です。ただのマッチングパターンというわけではなく、データを特定するための手法も含まれているようです。
マネージドデータ識別子にはAWSシークレットアクセスキーを始め、認証情報、財務情報、個人健康情報(PHI)、個人情報(PII)などが存在します。
このように多くのデータに対応する識別子が存在するのですが、残念ながら国ごとに形式が異なるデータ(住所や郵便番号など)は多くが日本未対応なことにはご注意ください。
マネージドデータ識別子の詳細については下記ガイドをご参照ください。
ちなみに、日本でも有用だと私が思う識別子は以下の通りです。
- AWS シークレットアクセスキー
- 生年月日
- クレジットカードの有効期限
- クレジットカードの磁気ストライプデータ
- クレジットカード番号
- クレジットカード認証コード
- Google Cloud API キー
- HTTP 基本認証ヘッダー
- HTTP クッキー
- JSON ウェブトークン (JWT)
- OpenSSH プライベートキー
- PGP プライベートキー
- 公開鍵暗号標準 (PKCS) プライベートキー
- PuTTY プライベートキー
- STRIPE API キー
カスタムデータ識別子
一方、カスタムデータ識別子は、ユーザーが任意に作成出来る識別子です。
基本的には正規表現で定義します。オプションとして、特定の例外単語を設定することや、特定したい単語の近くにある単語を設定することが可能です。
また、作成コンソール上でそのまま評価(テスト)することが出来るので便利です。
カスタムデータ識別子の詳細については下記ガイドをご参照ください。
許可リスト
許可リストとは、機密データ検出の例外を定義するホワイトリストです。
許可リストの作成方法としては主に以下の2パターンがあります。
- 正規表現
- カスタムデータ識別子と同様の方法。作成コンソール上で評価することも可能
- 事前定義されたテキスト
- リストに定義した単語を例外対象とする方法
- 単語を行ごとに記載したtxtなどのプレーンテキストファイルを用意する
- そのファイルをS3バケットに配置し、そのS3バケットを指定する形で設定
許可リストの詳細については下記ガイドをご参照ください。
料金
Amazon Macieの料金ですが、大きく3つの構造からなります。
- 予防的統制モニタリング
- 機密データ検出ジョブ
- 機密データ自動検出
- オブジェクト分析
- オブジェクトのモニタリング
コンソール上では下図のように直近1ヶ月の推定コストを確認することも出来ます。
詳細な料金については下記サイトをご参照ください。
簡単に各項目について説明します。
予防的統制モニタリング
先ほど機能としてご紹介したS3バケットのセキュリティ体制評価にかかる料金です。
東京リージョンの場合、毎月1バケットにつき 0.10 USD かかります。
機密データ検出ジョブ
検出ジョブを利用した検出にかかる料金です。
東京リージョンの場合、毎月最初の50TBまで、スキャン対象のオブジェクトサイズ 1 GB につき 1.25 USD かかります。
毎月最初の1GBは無料です。
機密データ自動検出
ここからは自動検出においてかかる料金です。自動検出にはオブジェクトの分析
オブジェクト分析
自動検出における機密データ検出にかかる料金です。
検出ジョブを利用した検出と同じく、
東京リージョンの場合、毎月最初の50TBまで、スキャン対象のオブジェクトサイズ 1 GB につき 1.25 USD かかります。
オブジェクトのモニタリング
自動検出機能において、分析対象のオブジェクトを決定するためのモニタリングにかかる料金です。
東京リージョンの場合、毎月10万オブジェクトにつき 0.012 USD かかります。
機密データ検出ジョブ料金と枠は同じですが、毎月最初の1GBは無料です。
終わりに
Amazon Macieは現時点でもかなり高精度で使いやすいサービスですが、マネージドデータ識別子の多くが日本の情報に対応してくれたり、もう少し料金が下がってくれるとかなり使いやすくなりそうですね。
30日間は無料で利用可能なので、是非実際に触ってみて下さい。個人的には、自動検出を無効化してS3バケットのセキュリティ体制をチェックするだけでも利用価値はあるんじゃないかと思います。
以上、『AWS 入門ブログリレー 2024』の17日目のエントリ『Amazon Macie』編でした。 次回、4/11は弊社たぬき による「Amazon Rekognition編」の予定です!