Amazon Macieを試してみた

# 背景・目的
Amazon Macieについて、概要は知っていましたが詳細な仕様や機能を把握していなかったため知識を整理します。

# まとめ
下記の特徴があります。

|特徴|説明|
|:--|:--|
|概要|機械学習とパターンマッチングを使用して、下記が可能になる<BR>・機密データを検出<BR>・データセキュリティリスクを可視化<BR>・リスクに対する自動保護|
|統合|下記と統合が可能。<BR>・Amazon EventBridge<BR>・AWS Security Hub|
|検出の自動化|・機密データの検出とレポートを自動化する<BR>・データセキュリティリスクを可視化<BR>・リスクに対する自動保護<BR>・分析の幅、深さのカスタム基準を定義|
|機密データタイプ|下記のタイプがある。<BR>・マネージドデータ識別子<BR>カスタムデータ識別子<BR>許可リスト|
|アカウント| Oraganizationや、メンバーシップを招待し複数アカウントを管理できる|
|対象のストレージクラス|・Reduced Redundancy (RRS)<BR>・S3 Glacier Instant Retrieval<BR>・S3 Intelligent‐Tiering<BR>・S3 One Zone‐Infrequent Access (S3 One Zone‐IA)<BR>・S3 Standard<BR>・S3 Standard‐Infrequent Access (S3 Standard‐IA)|
|ファイルフォーマット|・Avro、Parquet<BR>・EMailメッセージ（.eml）<BR>・テキスト<BR>　・csv<BR>　・html<BR>　・html<BR>　・json<BR>　・jsonl<BR>　・tsv<BR>　・txt<BR>　・xml<BR>　・その他非バイナリテキストファイル|
|圧縮形式|・gz<BR>・gzip<BR>・tar<BR>・zip|
|料金|下記で料金がかかる。<BR>・バケットのインベントリとモニタリング	<BR>・月ごとにデータを検査し、対象自動機密データ検出<BR>・自動データ検出オブジェクトモニタリング|


# 概要
[Amazon Macie とは](https://docs.aws.amazon.com/ja_jp/macie/latest/user/what-is-macie.html)を元に整理します。

> Amazon Macie は、機械学習とパターンマッチングを使用して機密データを検出し、データセキュリティリスクを可視化し、それらのリスクに対する自動保護を可能にするデータセキュリティサービスです。

- 機械学習とパターンマッチングを使用して、下記が可能になる
    - 機密データを検出
    - データセキュリティリスクを可視化
    - リスクに対する自動保護

> 組織の Amazon Simple Storage Service (Amazon S3) データ資産のセキュリティ体制管理に役立つように、Macie は S3 バケットのインベントリを提供し、セキュリティとアクセスコントロールのためにバケットを自動的に評価および監視します。Macie は、バケットがパブリックアクセス可能になっているなど、データのセキュリティまたはプライバシーに関する潜在的な問題を検出した場合、必要に応じて確認および修正するための検出結果を生成します。

- S3バケットのインベントリを提供
- セキュリティとアクセスコントロールのためにバケットを自動的に評価および監視する
    - Macieは、バケットがパブリックアクセス可能になっているなどデータのセキュリティまたはプライバシーに関する潜在的な問題を検出した場合、必要に応じて確認及び修正するための検出結果を生成する

> Macieはまた機密データの検出とレポートを自動化するので、組織が Amazon S3 に保存しているデータをより詳細に把握できるようになります。機密データを検出するには、Macie が提供する組み込み型の基準と手法、ユーザーが定義するカスタム基準、またはこの 2 つの組み合わせを使用できます。S3 オブジェクト内の機密データを検出すると、Macie は検出結果を生成して検出した機密データを通知します。

- 機密データの検出とレポートを自動化する
- S3に保存しているデータをより詳細に把握できるようにする
- 機密データを検出するには、下記が使用できる
    - Macieが提供する組み込み型の基準と手法
    - ユーザが定義するカスタム基準
- 機密データを検出すると、Macieは検出結果を生成し、検出した機密データを通知する


> 検出結果に加え、Macie は Amazon S3 データのセキュリティ体制やデータ資産内に機密データが存在する可能性がある場所に対するインサイトとなる統計やその他データを提供します。この統計とデータは、特定の S3 バケットやオブジェクトについてより詳細の調査を行う際の判断指針となります。Amazon Macie コンソールまたは Amazon Macie API を使用して、検出結果、統計およびその他データを確認および分析できます。また、Macie と Amazon EventBridge や AWS Security Hub の統合を活かし、他のサービス、アプリケーション、システムの使用により、検出結果を監視、処理、修正することもできます。

- S3データのセキュリティ体制
- 機密データが存在する可能性のあるデータ資産に関するインサイトや統計、その他のデータを提供する
- MacieコンソールまたはMacie APIを使用して検出結果、統計およびその他データを確認および分析できる
- Macie と Amazon EventBridge や AWS Security Hub が統合可能である

## Amazon Macie の機能
### 機密データの検出を自動化する
> Macie を使って、以下 2 つの方法で機密データの検出とレポートを自動化できます。機密データ検出を自動化するよう Macie を設定する方法と、機密データ検出ジョブを作成し実行する方法です。S3 オブジェクト内の機密データを検出すると、Macie は機密データの検出結果を作成します。この調査結果では、Macie で検出された機密データの詳細なレポートが提供されます。

- 下記の2つで機密データの検出とレポートを自動化できる
    - 機密データ検出を自動化するよう Macie を設定
    - 機密データ検出ジョブを作成し実行する方法

> 機密データの自動検出により、Amazon S3 データエステート内の機密データがどこに存在するかに幅広い可視性を提供しています。このオプションでは、Macie は S3 バケットインベントリを継続的に評価し、サンプリング技術によりバケットから代表的な S3 オブジェクトを識別して選択します。その後、Macie は選択したオブジェクトを取得して分析し、機密データがないか検査します。

- S3データ内のどこに存在するか幅広い可視性を提供している
- S３バケットインベントリを継続的に評価する
- サンプリング技術により、バケットから代表的なS3オブジェクトを識別して選択できる

> 機密データ検出ジョブでは、より詳細で対象を絞った分析が可能になります。このオプションを使用し、分析の幅と深さ、つまり、分析する S3 バケット、サンプリング深度、S3 オブジェクトのプロパティから派生するカスタム基準を定義します。ジョブは、オンデマンドの分析と評価用には 1 回のみ、定期的な分析、評価、監視用には継続的に実行するよう設定できます。

- 機密データ検出ジョブでは、より詳細で対象を絞った分析が可能
    - 分析の幅、深さのカスタム基準を定義する
- スケジュールの設定が可能

> どちらのオプションでも、組織が Amazon S3 に保存するデータと、そのデータのセキュリティやコンプライアンスリスクに関する包括的なビューを構築して維持できます。

- ビューを構築し維持する

### さまざまな機密データタイプを発見する
> Macie で機密データ検出を検出するために、S3 バケット内のオブジェクトを分析するよう組み込まれた基準と手法 (機械学習やパターンマッチングなど) を使用することができます。これらの基準と手法は、マネージドデータ識別子と呼ばれ、複数タイプの個人を特定できる情報 (PII)、財務情報、認証情報データなど、多くの国や地域で増加している大規模な機密データタイプのリストを検出できます。

- マネージドデータ識別子
    - S3バケット内のオブジェクトを分析するように組み込まれた基準と手法を使用できる
    - PIIや財務情報、認証情報データなど、多くの国や地域で増加している大規模な機密データタイプのリストを検出できる

> また、カスタムデータ識別子を使用することもできます。カスタムデータ識別子は、機密データを検出するために定義する基準のセットです。これらの基準は、一致するテキストパターンを定義し、オプションで文字シーケンス、結果を絞り込む近接ルールを定義する正規表現 (正規表現) で設定されます。このタイプの識別子を使用すれば、お客様の特定のシナリオ、知的財産、または専有データを反映する機密データを検出できます。Macie が提供するマネージドデータ識別子を補足できます。

- カスタムデータ識別子
    - 機密データを検出するために定義する基準のセット
    - テキストパターンを定義し、オプションで文字シーケンス、結果を絞り込む近接ルールを定義する正規表現で設定する
    - 特定のシナリオ
    - 知財
    - 専有データを反映する機密データを検出できる

> 分析を微調整するのに許可リストも使えます。許可リストは、Macie に S3 オブジェクトで無視させたい特定のテキストやテキストパターンを定義します。これらは通常、特定のシナリオや環境における機密データの例外です。例えば、組織の代表者氏名、組織の代表電話番号、組織がテストに使用するサンプルデータなどです。

- 許可リスト
    - MacieにS３オブジェクトで無視させたい特定のテキストやテキストパターンを定義
    - 特定のシナリオや環境における機密データの例外
    - 組織の代表者氏名、組織の代表電話番号、組織がテストに使用するサンプルデータ

### セキュリティとアクセスコントロールについてデータを評価してモニタリングする
> Amazon Macie を有効化したときに、Macie は S3 バケットの完全なインベントリを自動的に生成し、それ以降維持します。また、Macie はセキュリティとアクセスコントロールのためバケットの評価と監視を開始します。Macie がバケットのセキュリティまたはプライバシーに関する潜在的な問題を検出すると、ユーザー用に ポリシーの調査結果を作成します。

- MacieはS3バケとの完全なインベントリを自動的に生成
- セキュリティとACLのためバケット評価と監視
- 潜在的な問題を検出した際に、調査結果を作成する

> 特定の検出結果に加えて、ダッシュボードでは Amazon S3 データの集約統計スナップショットを提供します。これには、パブリックアクセス可能で、他の AWS アカウント と共有されているバケットの数など、主要な指標の統計が含まれています。各統計をドリルダウンして、そのサポートデータを確認できます

- データの集約統計スナップショットを提供
    - パブリックアクセス可能＆他のAWSアカウントと共有されているバケットの数
    - 各統計をドリルダウンし、サポートデータを確認できる

> Macie はインベントリ内の個別のバケット詳細情報と統計も提供します。データには、バケットのパブリックアクセスと暗号化設定の内訳、およびバケット内の機密データを検出するために Macie が分析できるオブジェクトのサイズと数が含まれます。特定のフィールドで インベントリの参照、またはインベントリの並べ替えおよびフィルタリングを行うことができます。バケットを選択すると、パネルにバケットの詳細が表示されます。

- インベントリ内の個別のバケット詳細情報と統計を提供
    - バケットのパブリックアクセスと暗号化設定の内訳、機密データを検出するため描きを提供する
    - 分析できるオブジェクトのサイズと数が含まれる

### 調査結果を確認して分析する
> Macie において検出結果とは、Macie が S3 オブジェクト内で検出した機密データ、または S3 バケットのセキュリティまたはプライバシーに関する潜在的な問題の詳細なレポートのことです。各調査結果では、重要度評価、影響を受けたリソースに関する情報、およびMacie が問題を見つけたタイミングと方法などの追加の詳細が示されます。

- 調査結果では、詳細なレポートが出力される
    - 重要度評価
    - 影響を受けたリソースに関する情報
    - Macieが問題を見つけたと方法

> 調査結果の確認、分析、管理を行うには、Amazon Macie コンソールの 調査結果ページを使用できます。これらのページでは、調査結果をリスト化し、個別の調査結果の詳細を提供します。また、調査結果のグループ化、フィルタリング、並べ替え、および抑制のための複数のオプションも提供します。また、Amazon Macie API を使用して、調査結果をクエリ、取得、および抑制することもできます。API を使用する場合、データを別のアプリケーション、サービス、またはシステムに渡して、より詳細な分析、長期保存、またはレポートの作成を行うことができます。

- 調査結果をリスト化し、個別の調査結果の詳細を提供
    - 調査結果のグループ化
    - フィルタリング
    - ソート
- APIを提供


### 他のサービスおよびシステムを用いた調査結果のモニタリングと処理
> 他のサービスやシステムとの統合をサポートするために、Macie は調査結果イベントとして Amazon EventBridge に調査結果を発行します。EventBridge は、AWS Lambda 関数や Amazon Simple Notification Service (Amazon SNS) トピックなどのターゲットに調査結果データをルーティングできるサーバーレスイベントバスサービスです。EventBridge を使用すると、既存のセキュリティやコンプライアンスワークフローの一部として、ほぼリアルタイムで検出結果を監視、処理できます。


- EventoBridgeと統合している。これにより下記と連携が可能
    - Lambda
    - SNS

> 調査結果を AWS Security Hub に発行するように Macie を設定することもできます。Security Hub は、AWS 環境全体のセキュリティ体制を包括的に把握し、セキュリティ業界標準およびベストプラクティスに照らして環境をチェックするのに役立つサービスです。Security Hub を使用すると、AWS 内の組織のセキュリティ体制の広範な分析の一部として、調査結果をより簡単にモニタリングおよび処理できます。また、複数の AWS リージョン からの検出結果を集約したり、1 つのリージョンから集計した検出結果データを監視、処理することもできます。

- Security Hubに発行するように、Macieを設定することもできる
    - Security HubはAWS環境全体のセキュリティ業界標準、ベストプラクティスに照らして環境をチェックするのに役立つサービス

### 複数の Macie アカウントを集中管理する
> AWS 環境に複数のアカウントがある場合、環境内のアカウントについて Macie を集中管理することができます。Macie と AWS Organizations を統合するか、または Macie でメンバーシップの招待を送信しアクセプトする 2 つの方法で、これを行うことができます。

- 複数のAWSアカウントがある場合、環境内のアカウントについてMacieを集中管理できる。方法は下記の通り。
    - MacieとOrganizationを統合
    - Macieでメンバーシップの招待を送信しAcceptする


> 複数アカウント設定では、指定された Macie 管理者が特定のタスクを実行し、同じ組織のメンバーであるアカウントの特定の Macie 設定、データ、およびリソースにアクセスできます。タスクには、メンバーアカウントが所有する S3 バケットに関する情報の確認、それらのバケットのポリシー検出結果の確認、機密データのためのバケット検査が含まれます。アカウントが AWS Organizations を通じて関連付けられている場合、Macie 管理者は、組織内のメンバーアカウントに対して Macie を有効化することもできます。

- 複数アカウント設定では、指定されたMacie管理者が特定のタスクを実行し、同じ組織のメンバーであるアカウントの特定のMacie設定、データ、リソースにアクセスできる
- 下記が含まれる
    - タスクには、メンバーアカウントが所有するS3バケットに関する情報の確認
    - バケットポリシーの検出結果の確認
    - 機密データのためのバケット検査
- Oraganization の場合は、組織内メンバーアカウントに対してMacieを有効化することも可能

### リソースをプログラムで開発して管理する
- Macieコンソールに加えて、APIを使用してMacieを操作する事が可能

## Amazon Macie でサポートされているストレージのクラスと形式
### S3
下記をサポートしている
- Reduced Redundancy (RRS)
- S3 Glacier Instant Retrieval
- S3 Intelligent‐Tiering
- S3 One Zone‐Infrequent Access (S3 One Zone‐IA)
- S3 Standard
- S3 Standard‐Infrequent Access (S3 Standard‐IA)

下記はサポートしてない。Macie はジョブの実行時にそれらのオブジェクトをスキップする。
- S3 Glacier Deep Archive
- S3 Express One Zone
- Amazon S3ディレクトリバケット

### ファイル、ストレージ形式
> 最大 1,000,000 個までのファイルに対して、最大 10 レベルのネストされた深さまでこれを行うことができます。
- 100万ファイルに対して、最大で10レベルのネストまで

> Macie は、画像または音声、動画、その他のマルチメディアコンテンツのデータを分析しません。

- 画像、音声、動画など非構造データはサポートしない

下記をサポートしている

- Avro、Parquet
- gz、gzip、tar、zip等の圧縮形式
- EMailメッセージ（.eml）
- テキスト
    - csv
    - html
    - html
    - json
    - jsonl
    - tsv
    - txt
    - xml
    - その他非バイナリテキストファイル


## Amazon Macie の料金
2024/2/9時点の東京リージョンの[Amazon Macie の料金](https://aws.amazon.com/jp/macie/pricing/)を元に整理します。

- バケットのインベントリとモニタリング	
    - バケット/月ごとに 0.10 USD
- 月ごとにデータを検査し、対象自動機密データ検出
    - 最初の 50 TB/月  GB あたり 1.25USD
    - 追加の 450 TB/月	GB あたり 0.63USD
    - 500 TB 以上/月	GB あたり 0.31USD
- 自動データ検出オブジェクトモニタリング
    - オブジェクト/月 100 K オブジェクトあたり 0.012USD

# 実践
## はじめに
1. AWSにサインインし、Macieのトップページに移動します
1. トップページで「ご利用開始にあたって」をクリックします。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/ebd2ca35-0a65-bfdd-eab4-098ecbeb3c51.png" width=300 />

1. 「Macieを有効化」をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/593f7c1e-b3c0-eeb0-d44d-762ea7eca1cf.png)

## Amazon Macie での機密データ検出結果の保存と保持
[Amazon Macie での機密データ検出結果の保存と保持](https://docs.aws.amazon.com/ja_jp/macie/latest/user/discovery-results-repository-s3.html)を元に試します。


> Macie は機密データの検出結果を 90 日間だけ保存します。機密データの検出結果にアクセスし、それらの長期保存と保持を有効化するには、結果を S3 バケットに保存し、AWS Key Management ServiceAWS KMS キーを用いて暗号化するように Macie を設定します。バケットは、機密データの検出結果のすべての最終的で長期的なリポジトリとして機能します。次に、オプションで、そのリポジトリ内の結果にアクセスしてクエリを実行できます。

- 機密データの検出結果の長期的なリポジトリを設定します


1. ナビゲーションペインから、「検出結果」をクリックします。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/ee13b413-8fe8-7f86-f80c-8c27bd4735ca.png" width=200 />

1. 「今すぐ設定」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/8c66456f-a300-d3b2-c6dd-5ac6765df483.png)

1. 下記を入力し、「保存」をクリックします
    - バケットを作成を選択
    - バケット名を入力
    - 専用のプレフィックスがあれば指定
    - AWSキーを指定
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/c6e8f9f3-7f1a-fecf-d0c2-a9e75380a72b.png)

1. 当該バケット配下に、ファイルができていました。(0バイト)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/23b55578-53fa-350c-1ada-e6bcdf46c736.png)

## 概要を確認
1. ナビゲーションペインで「概要」をクリックします
    - 合計バケット数が2になっています。東京リージョンで作成済みのS3バケットを検査したようです。下記がわかりました
        - パブリックアクセス：全て非公開
        - 暗号化：全てSSE-S3
        - 共有：全て共有されてない
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/df673568-003a-1516-cedd-23678cd83981.png)

## リソースカバレッジを確認
1. ナビゲーションペインで「リソースカバレッジ」をクリックします
1. 検出したバケットの状況が確認できます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/ad991b3c-a0e8-ee3e-0257-f07e4cb46604.png)

## 使用状況を確認
1. ナビゲーションペインで「使用状況」をクリックします
1. コストに関して一元的にわかるようです。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7298bfe3-db76-6013-333d-cc83f7af6750.png)


# 考察
Macieでは、個人情報など機密情報を検出できるサービスです。定型化されているマネージド識別子と任意のカスタム識別子を定義できます。次回以降、実際に機微データを作成し、検出を試してみたいと思います。

# 参考
https://docs.aws.amazon.com/ja_jp/macie/latest/user/what-is-macie.html