AWS公式資料で挑むSCS認定(17)-Macie

##### [前回] [AWS公式資料で挑むSCS認定(16)-Inspector](https://qiita.com/mingchun_zhao/items/847a7a4e8e6f3615d9f3)

## はじめに

今回も「Security, Identity & Compliance」サービス群に含まれる、Amazon Macieです。
Amazon S3バケットの大量データに意図しない機微情報が含まれていないか効率的に検出。

## 教材を選ぶ

[AWS Black Belt Online Seminar [Amazon Macie]](https://d1.awsstatic.com/webinars/jp/pdf/services/20200812_AWS-BlackBelt-Macie.pdf) 資料を使用します。

Macieの設定方法が、スクリーンショット付きで詳細に説明されていました。

## 機微情報

### 機微情報とは

- 個人情報、クレジットカード、銀行口座番号など保護が必要な情報
- 特許情報、設計技術など競合他社に知られてはいけない情報

### 機微情報管理の重要性と難しさ

- 機微情報は、認証、アクセス制御、暗号化、ログ管理などで保護すべき
- 機微情報の存在に気づかない場合がある
    - データレイク上の保管データの中に機微情報が紛れてしまった
    - ログデータの中に意図せず個人情報が入ってしまった

## Macie が解決する課題

- アカウント内のS3バケットの利用状況の可視化、格納されている大量オブジェクトの可視化
- 設定に基づき、指定されたバケット内の機微情報の評価・検出を効率的に実行
- 評価・検出結果の参照、他のサービスへの連携

## Macie の機能

- Amazon S3 バケットの使用状況の可視化と評価
    - バケットの使用状況とバケットポリシーの可視化

- 機微情報の検出
    - 検出ジョブによる検出
    - 柔軟な検出範囲と条件の設定
    - AWS マネージド定義とカスタム定義の両方を利用可能

- スケーラビリティと集中管理の両立
    - AWS Organizations 対応

- 検出結果に対する対応の実行と自動化
    - 詳細な結果（Findings）の出力とイベントによるAWS サービスとの連携
    - 管理 API の提供

## S3バケットとオブジェクトの使用状況の可視化

### Macieの利用ステップ

- 管理者がS3バケットの状態をAWSマネジメントコンソールで確認
    - S3 バケットの設定変更は Findings として検出する
- スキャンが必要であるバケットを指定
- スキャンジョブを作成する
    - ジョブはスキャン対象バケットの設定とスケジュールのセット
    - 指定したスケジュールで自動でジョブが実行される

### S3バケットのフィルタ表示

- バケットのフィルタで指定出来る条件
    - アカウントID
    - オブジェクト数
    - ストレージサイズ
    - タグキー
    - バージョニング有無
    - パブリック・アクセス許可の有無
        - 書き込み
        - 読み込み
    - レプリケートの有無
    - 暗号化方式別のオブジェクト数
        - SSE-KMS(AWS)
        - SSE-KMS(Customer)
        - SSE-S3
        - 暗号化無し
    - バケットの暗号化設定

- フィルタ表示のユースケース
    - オブジェクト数が多いバケットを選択する
    - 暗号化されていないオブジェクトがあるバケットを選択する
    - リスクの高いバケットを優先的にスキャンすることが可能

## 機微情報の検出・評価

### Macie のスキャンはジョブを作成して定義

ジョブ定義の構成要素

- ジョブ名
- 対象 S3 バケット（複数指定可能）
- 機密データの検出オプション
    - 実行スケジュール
    - サンプリング深度
    - オブジェクト条件
- カスタムデータ識別子オプション

###  S3 バケット以外のデータをスキャンしたい場合

- Macieは現在S3バケットのスキャンのみをサポート
- ワークアラウンド
    - Amazon RDS
        - Parquet形式でS3バケットにエクスポートしスキャン
    - CSVでエクスポート出来るAWSサービスやデータストア
        - CSVをS3バケットにエクスポートしスキャンする

### Macie の機微情報検出方法

Macie は機械学習とパターンマッチングを組み合わせて機微情報を検出する

1. 機微なキーワードが存在するかチェック
    - 例: credit card
    - ※ キーワード不要なケースあり
2. キーワードから近い位置（距離が短い）に機微情報があるかをチェック
3. 機微情報に該当する文字列があるかチェック

### スキャンスコープの設定

- ワンタイムの実行とスケジュール実行の選択が可能
- スケジュールされたジョブ
    - どこまでスキャンをしたかを保存しておくことで、差分スキャンを行わせることが可能
    - 設定可能なスケジュール
        - 毎日、毎週、毎月を選択可能
        - ジョブが実行される時間帯や日付を指定することは出来ない
    - サンプリング深度とは
        - 100（＝デフォルト）を指定すると、全てのオブジェクトをスキャンする
        - 100 未満を指定すると、ランダムに指定された比率のオブジェクトをスキャン
            - 100オブジェクト存在した場合に、90を指定すると90オブジェクトをランダムに選択してスキャン
- スキャン対象を絞り込む設定が可能
    - スキャン対象にする条件
    - 除外する条件を設定
    - 条件には、タグ、最終改訂日、ファイル拡張子、オブジェクトサイズを利用可能
    - 除外条件は対象にする条件を上書きする（両方マッチした場合は除外される）

### Macie のデータ識別子

#### AWS マネージド識別子

- AWSがマネージして提供する機微情報検出用の定義
- お客様によるカスタマイズは出来ない
- Macie のジョブを実行すると自動で検出が行われる

##### AWS マネージド識別子の対象情報

カテゴリ毎のデータタイプ

- 個人特定情報（PII）
    - 生年月日(birth dateなど)
    - 姓名
    - 住所
    - パスポート番号
        - https://docs.aws.amazon.com/macie/latest/user/managed-dataidentifiers.html#managed-data-identifierspii-passport-keywords
    - 電話番号(cell)
- 金融関連情報
    - 銀行口座番号
        - https://docs.aws.amazon.com/macie/latest/user/managed-dataidentifiers.html#managed-dataidentifiers-financial-bankacct-keywords
    - クレジットカード失効日(expiration)
    - クレジットカードの磁気ストライプデータ(ard data)
    - クレジットカード番号
- 認証情報
    - AWS シークレットキー(aws_secret_access_key)
    - OpenSSH秘密鍵
    - PGP秘密鍵
    - PKCS秘密鍵
    - PuTTY秘密鍵

#### カスタマーマネージド識別子

- お客様が検出定義を作成して独自の検出を行うことが可能
- キーワードと正規表現のパターンマッチング定義を作成する必要がある
- ジョブ単位に指定を行う必要がある（作成した識別子定義は再利用可能）

##### カスタムデータ識別子

- 正規表現によるパターンマッチングを利用
    - お客様のユースケースに応じたカスタム検出をサポート
    - 正規表現は、PCRE（Perl Compatible Regular Expressions）を使用
- カスタムデータ識別子で指定可能なパターン
    - キーワード
    - 除外キーワード
    - 最大一致距離
    - 正規表現パターン

### 暗号化された S3 バケットのスキャン

- SSE-S3, AWS-KMS, SSE-KMS による暗号化が行われている場合
    - Macieはバケットをスキャンすることが可能
    - SSE-S3, AWS-KMS の場合
        - 追加設定不要でスキャン可能
    - SSE-KMS の場合
        - Macie のサービスリンクロール AWSServiceRoleForAmazonMacie にKMSキーへのアクセス権限の付与が必要
- クライアントサイド暗号化
- カスタマー提供型のサーバーサイド暗号化（SSE-C）の場合
    - 復号する手段が無いため、Macie はスキャンが出来ない
    - バケットの使用状況の可視化は実行可能
        - S3のメタデータを使っているので暗号化の影響受けない

#### サポートされるファイル/ストレージタイプ

- ビッグデータ
    - Apache Avro オブジェクトコンテナ
    - Apache Parquet ファイル
- 圧縮・アーカイブ
    - GNU Zip 圧縮アーカイブ
    - Tar アーカイブ
    - ZIP 圧縮アーカイブ
- 文書 Adobe PDF ファイル
    - Microsoft エクセルワークブック
    - Microsoft Word 文書
- テキスト
    - CSV ファイル
    - HTMLファイル
    - JSONファイル
    - プレーンテキスト
    - 文書、タブ区切りファイル（TSV）
    - XMLファイル

※ Macie は画像、オーディオ、ビデオなどのメディアファイルは分析しない

## 評価・検出結果の参照、他のサービスとの連携

### マネジメントコンソール上での検出結果の確認

検出ジョブの実行が完了すると、マネジメントコンソール上で検出結果の確認可能。

### 検出結果の非表示化

- 検出結果をフィルター表示する画面で設定
- 指定した条件の Findings を自動アーカイブする Suppression Rule を作成して適用
- 不要な表示を減らすことで、管理を容易にする

### アクションの実行

- 検出結果を選択して、アクションメニューからJSON へのエクスポート可能
- ブラウザ経由でローカルにダウンロードされる
- 同じ内容を S3 に自動保存する設定をすることが可能
    - Macie の検出結果は、30日間のみ保管される
    - 長期間保管したい場合には、S3 に保存することを推奨する

### イベントの生成と AWS サービスとの連携

Macieは機微情報を検出するとイベントを生成する(更新間隔はデフォルト15分)
検出結果の出力先:

- AWS Security Hub
- Amazon EventBridge
- Amazon CloudWatch
    - イベント
        - トリガー
            - AWS Lambda
                - SIEM製品サービス
                - Amazon SNS
- Amazon S3
    - JSONフォーマットの検出結果（アーカイブ）

## Macieの管理、運用

### マルチアカウント環境における Macie の管理

- マスター/メンバー構成をとることが可能
- マスターアカウントの Macie でジョブを作成して、メンバーアカウントで実行出来る
- 手動によるメンバーアカウント追加の場合 1000 アカウントまでサポート
- AWS Organizations 構成の場合は 5000 アカウントまでサポート

### Macie API コールのロギング

CloudTrail への API コール記録をサポート。

### API, AWS CLI からの呼び出し

新しい Macie はサービスとして macie2 を指定し、
API や AWS CLI から呼び出しが可能。

## Macie のセキュリティ

- Macieのスキャンにより、S3のデータやスキャン結果が勝手に利用されないか?
    - Macieによるスキャンデータは解析のためにメモリー上で一時的に保持されるが、他のストレージにコピーされることはない
    - スキャン以外の目的でMacieサービスが、お客様のS3のデータにアクセスしたり、スキャン結果を利用することはない
    - Macieによるスキャン、分類結果は、暗号化されたストレージに保管される
- Amazon S3 と Macie の間の通信は暗号化される

## Macieのまとめ

Amazon Macie を利用することで

- S3バケット上の大量の機微情報の検出を効率的に実行可能
- 容易な設定と管理が実現可能
- AWSマネージド識別子とカスタム識別子の両方を活用することで効率よく検出が可能
- スケジュールし定期的スキャンを行うことで、S3バケット上に意図しない機微情報が含まれていないか可視化可能

## おわりに

ログ出力されたクレジットカード番号に気付かず、そのままS3に保存してしまった場合、
Amazon Macieが検出し、知らせてくれそうです。
次回は、~~AWS Certificate Manager~~ 模擬テストです。お楽しみに。

[次回] [AWS公式資料で挑むSCS認定(18)-模擬テスト](https://qiita.com/mingchun_zhao/items/54406ec28b3fda554977)