Amazon Web Services ブログ

Amazon Macie のカスタムデータ識別子を使用して機微情報を検出する方法

クラウド上により多くのデータを格納していくと、スケールする形でデータを安全に維持するためのセキュリティ自動化が必要になってきます。AWS は最近 Amazon Macie をリリースしました。これは機械学習とパターンマッチングを使って AWS クラウド上の格納データの中の機微情報を検出し、分類し、保護するためのマネージド・サービスになります。

多くのデータ侵害は、承認されていないユーザーの悪意を持った活動によるものではありません。それよりも、承認されている正規のユーザーのミスによるものが多いのです。機微なデータのセキュリティを監視して管理するには、まずデータの存在を特定する必要があります。このブログ記事では、Macie のカスタムデータ識別子をどのように使うかを紹介します。機微データの存在が分かると、次にスケールする形で、監視とリスクの自動低減を実行するためのセキュリティコントロールのデザインに着手出来ます。

Macie はいくつかのタイプの機微データを検出するためのマネージドデータ識別子を提供しています。この識別子は多くの組織で必要とされる一般的な要件に対応しています。Macie がユニークなのは、特定のデータ要件に対応していることです。Macie の新しいカスタムデータ識別子を利用することで機微データの検出を強化することが可能です。カスタムデータ識別子は組織特有のデータ、知的財産や特定のシナリオに対して使えます。

Macie のカスタムデータ識別子は組織特有の要件をベースとして機微データを見つけて特定します。このブログ記事では、自動的に特定の機微データを検出するためにどのようにカスタムデータ識別子を定義して実行するのかをステップバイステップで紹介していきます。カスタムデータ識別子の利用を開始する前に、Macie の詳細なロギングを有効化する必要があります。まだ、ご覧になられていない場合には、Macie の有効化手順についてはこちらの手順を、詳細なロギングについてはこちらの手順をご覧ください。

カスタムデータ識別子が必要なケース

まず最初に、皆さんがフランスに本社がある製造業企業の IT 管理者であるという想定にしましょう。皆さんの会社はブラジルのサンパウロに研究開発拠点を持つ企業を買収しました。その企業は AWS にマイグレーションをしようとしています。そして、マイグレーションの工程の中で登録情報、従業員情報そして製品のデータを暗号化されたストレージと暗号化されていないストレージに格納します。

ここでは以下に示す3つのシナリオで機微データを検出する必要があると仮定します。

  • SIRET-NIC : SIRET-NICはフランスにおいて企業に振られる番号です。この番号は、National Institute of Statistics (INSEE) が企業が登録されたときに割り振るものです。下記の図が SIRET-NIC の情報を含むファイルのサンプルとなります。ファイルの中の各レコードは GUID、従業員名、従業員のE-mailアドレス、企業名、発行日付、SIRET-NIC 番号を含んでいます。
図1 : SIRET-NIC データセット

図1 : SIRET-NIC データセット

  • Brazil CPF(Cadastro de Pessoas Físicas – Natural Persons Register) : CPF はブラジルの歳入省が国内で課税対象となっている人に割り振る固有の番号です。ブラジルオフィスに所属している従業員は全員CPFの番号を持っています。
  • プロトタイプに関する名前付けルール : 企業は、既にリリース済みの公開されている製品と、プロトタイピング中で機密扱いされている製品を持っています。下記の例は、ブラジルのCPF番号とプロトタイプ名を含むサンプルファイルです。
図2 : ブラジルCPF番号とプロトタイピング番号を含んだデータセット

図2 : ブラジルCPF番号とプロトタイピング番号を含んだデータセット

Macie コンソールでカスタムデータ識別子を設定する

機微情報を検出するためのカスタムデータ識別子を定義する手順の概要は以下の通りとなります。

  1. カスタムデータ識別子を作成
  2. カスタムデータ識別子で指定したデータパターンとマッチングする対象となるAmazon Simple Storage Service (Amazon S3) バケットをスキャンするジョブ定義を作成
  3. 検出結果に対応

これから、Macie で実際にカスタムデータ識別子を設定する手順を紹介していきます。

Amazon Macie で利用するカスタムデータ識別子を設定する

前のセクションでは、SIRET-NIC, ブラジル CPF, プロトタイプ名の保護のための 3 つのシナリオについて見ていきました。次に、この 3つのシナリオに対応する正規表現を作成していきます。正規表現にはいくつかの異なる表記法があります。Amazon Macie はPerl Compatible Regular Expressions (PCRE) ライブラリのサブセットをサポートしており、カスタムデータ識別子における正規表現のサポートのセクションでさらに情報を得ることが出来ます。検知するパターンが既に分かっているのであれば、カスタムデータ識別子は以下の手順で作成出来ます。

Amazon Macie でカスタムデータ識別子を作成する

  1. AWS マネージメントコンソール にサインインします
  2. AWS サービスの検索画面で Amazon Macie と入力します
  3. Amazon Macie を選択します
  4. 左側のナビゲーションペインで、設定の下のカスタムデータ識別子を下記の図のように選択します。
図3 カスタムデータ識別子コンソール

図3 カスタムデータ識別子コンソール

カスタムデータ識別子の作成

  1. コンソールで作成を選択します
  2. 名前 : カスタムデータ識別子の名前を入力します。後で目的が識別出来る名前をつけてください。例えば、SIRET-NICとします。
  3. 説明 : カスタムデータ識別子の説明を入力します
  4. 正規表現(Regex): 検出したいパターンを定義します。定義には正規表現(Regex)を使用します。例えば、SIRET-NIC番号は9桁の数値とハイフン、そのあとに5桁の数値が続く14桁の数値で表現されます。最初の9桁は連続している場合もあれば、3桁づつスペースで区切られている場合もあります。このパターンにマッチするRegexパターンは、\b(\d{3}\s?){2}\d{3}\-\d{5}\b となります。
  5. キーワード : テキストとしてマッチするものを特定する定義を作成します。SIRET-NICの番号自体は、公開情報です。しかし、今回のケースでは買収のタイミング(2020年4月という前提です)で登録する企業名を暗号化することが要件となります、これは競合他社に情報が漏れることを防ぎたいからです。そのため、このケースでは4月の日付をすべてキーワードとして指定する必要があります。
  6. (オプション設定)単語を無視 : 無視したい単語、キーワードを指定するために使います。このケースではセキュリティトレーニングの文書で123456789-12345と00000000-00000をSIRET-NICの番号として使っています。この値を単語を無視に指定することで、セキュリティトレーニング文書をスキャンしてもSIRET-NICを含んだ機微情報として検出されることがなくなります。
  7. 最大一致距離 : 検出対象のデータとキーワードの近さを設定します。例えば20と設定した場合、Macie は設定されたキーワードから 20 文字の間にあるパターンに一致するデータを探します

注意 : この時点で完了を押さないでください。設定値を入力後、完了を押す前にサンプルデータを入力してカスタムデータ識別子が意図したとおりに動作するか確認することが可能です。

設定をすべて行うと、下記のような画面になるはずです。

図4 SIRET-NIC カスタムデータ識別子の作成

図4 SIRET-NIC カスタムデータ識別子の作成

SIRET-NIC 用カスタムデータ識別子のテスト

Macie コンソール右側のペインにある評価セクションを利用して カスタムデータ識別子の regex パターンとその他の設定を確認することが出来ます。

以下に示すステップで、評価セクションを利用出来ます。

  1. サンプルデータボックスにテストデータを入力します
  2. 送信ボタンを押します。設定が正しく出来ていれば、いくつかマッチするレコードが表示されるはずです。下記の図は、評価セクションのテストデータの例を示しています。3件のレコードがこのデータには含まれています。それぞれのレコードは、5つの列、GUID、従業員名、Eメールアドレス、会社名、SIRET-NICの発行日、SIRET-NICの番号を含んでいます。

    図5 確認用のサンプルデータ

    図5 確認用のサンプルデータ

  3. 評価セクションでの、カスタムデータ識別子の動作確認が終わったあとに、完了を押してカスタムデータ識別子の作成を終了します。

Brazil CPF 用のカスタムデータ識別子の作成

1つ目のカスタムデータ識別子が完成しました。次に、同様のステップで Brazil CPC とプロトタイプ製品の命名規則に関するカスタムデータ識別子を作成し、テストしていきます。Brazil CPF 番号は、000.000.000-00のようなフォーマットで表記されます。

下記の図で示すように、Brazil CPFの場合は、以下の値を指定します。

  • 名前 : Brazil CPF
  • 説明 : The format for Brazil CPF in our sample data is 000.000.000-00
  • 正規表現 : \b(\d{3}\.){2}\d{3}\-\d{2}\b
図6 Brazil CPF カスタムデータ識別子

図6 Brazil CPF カスタムデータ識別子

プロトタイプ名用のカスタムデータ識別子

ここではプロトタイプパーツ番号の命名規則が厳密で、規則性があるという想定にします。Pで始まり、ハイフン、2文字の英字、4桁の数字というルールです。例えば、P-AB1234です。Amazo S3バケット上のオブジェクトでこのパーツ番号を含んでいるものを特定することになります。このケースはパターンが単純なので、Macie が誤ってパーツ番号以外のもので誤検知する可能性に注意する必要があります。そこで、\b を正規表現の始まりと終わりに追加することをおすすめします。\b は単語境界を意味しています。単語境界とは一般的には空白(スペース)や句読点のことを指します。\b を指定することで、単語全体が一致している場合のみに限定することが出来ます。例えば、P-AB1234 はマッチしますが、STEP-AB123456 や P-XY123 は指定したパターンにマッチしなくなります。この方法は、より詳細な制御や、誤検知の軽減に役立ちます。

下記の設定をプロトタイプ名のシナリオに使います。下の図も合わせてご覧ください。

  • 名前 : Prototyping Naming
  • 説明 : Any prototype name start with P means it’s private. The format for private prototype name is P-two capital letters and 4 numbers
  • 正規表現 : \bP\-[A-Z]{2}\d{4}\b
    図7 プロトタイプ名 カスタムデータ識別子

    図7 プロトタイプ名 カスタムデータ識別子

     

これで、下の図のような状態になるはずです。SIRET-NIC, Brazil CPF, Prototyping Naming が設定されました。

図8 カスタムデータ識別子の設定が完了

図8 カスタムデータ識別子の設定が完了

Macie をデモンストレーションするためのテストバケットを設定する

Macie を運用する前に、バケットを作成してテストデータを置いてみます。ダウンロード可能なサンプルデータを提供しています。以下の手順でテスト用のバケットを作成して、テスト用のデータをアップロードすることが可能です。

  1. サンプルデータをダウンロードして unzip します。
  2. AWS マネージメントコンソールにサインインして、https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。
  3. バケットの作成を選択します。バケット作成ウィザードが表示されます
  4. バケットの名前に、DNS に適合した名前を指定します。バケットの名前は以下を満たす必要があります。
    • Amazon S3 全体でユニークである必要があります
    • 3文字から63文字の間の長さである必要があります
    • 大文字を含まない
    • 小文字か数字で始まるこの説明では、bucketformacieuse というバケットを使用します。皆さんはこれとは違う名前を使う必要があります。既に私達が使用しているからです
  5. リージョンでは、バケットを保管したいAWS リージョンを指定します
  6. 作成ボタンを押して、バケットの作成を完了します
  7. 今作成したバケットを開いて、ステップ 1 でダウンロードした2つのExcelファイルをアップロードします。

データをスキャンするためのジョブを作成する

ここまでの手順で、SIRET-NICとBrazil CPF、それからプロトタイプ名を検出するカスタムデータ識別子を使って Amazon S3 バケットをスキャンする準備が出来ました。

ジョブの作成

  1. ナビゲーションペインで、ジョブを選択して、右上のジョブを作成を押します
  2. S3 バケットを選択 : 分析したい S3 バケットを選択します。この例では、先程作成した bucketformacieuse を選択します
  3. S3 バケットを確認 : ジョブでスキャン、分析対象とする S3 バケットを確認します
  4. スコープ : ジョブのスコープを選択します。例えば、ワンタイムジョブを選択することが可能です。スケジュールされたジョブを選択する場合には、Amazon S3 バケットをどれくらいの頻度でスキャンするか設定可能です
  5. カスタムデータ識別子 : 前のステップで設定した3つのカスタムデータ識別子を選択します。次へを押すと下記のような画面になるはずです。

    図9 カスタムデータ識別子の選択

    図9 カスタムデータ識別子の選択

  6. 名前と説明 : ジョブの名前と説明を入力します
  7. 確認と作成 : 全ての設定を確認して、作成を押します

これで、作成した3個のカスタムデータ識別子を使って、選択した Amazon S3 バケットをスキャンする Macie のジョブが出来ました。さらに詳しい Macie のジョブの作成については Running sensitive data discovery jobs in Amazon Macie をご覧ください。

生成された結果に対応する

Macie は生成した検出結果に対応する際に効果を発揮します。今回の例では、生成された検出結果を確認して手動で対応する手順を紹介します。Macie が生成した検出結果はバケット単位、ジョブ単位、もしくは全ての結果を見ることも可能です。今回は全ての結果を見ていきます。

全ての検出結果の確認方法

  1. 左側にあるナビゲーションペインで検出結果を選択します。検出結果は、重大度、タイプ、影響を受けるリソース、更新日を含んでいます
  2. 下記の図は、検出結果のページにおける表示例を示しています。2つの検出結果が選択されたジョブについて表示されています。compagnie_français.csv と empresa_brasileira.csv という2つのファイルがカスタムデータ識別子によって検出されています。

    図10 検出結果

    図10 検出結果

  3. さらに詳細を見て、結果を確認していきましょう。検出結果の表示ページ上で、Brazil CPF 番号を含んでいるファイル empresa_brasileira.csv を選択します。すると、ドキュメントに中にいくつかのカスタムデータ識別子が検出されたことが、下記のように右側の結果セクションに表示されます。

    図11 Brazil CPF 番号のカスタムデータ識別子の検出結果の詳細

    図11 Brazil CPF 番号のカスタムデータ識別子の検出結果の詳細

  4. 次に、 compagnie_français.csv の詳細を確認してみます。3. のステップと同様にいくつかのカスタムデータ識別子がファイルに含まれていることが分かります。このケースでは下記のように Macie は 13個の SIRET-NIC 番号を検出しています。

    図12 フランス企業のファイルの検出結果を表示しているページ

    図12 フランス企業のファイルの検出結果を表示しているページ

  5. 機密データ検出結果のリポジトリ を構成している場合、検出結果は指定された Amazon S3 バケットに保存されます。保存されている場所は、上記の図にある 詳細 セクションの詳細な結果の場所に表示されます。

これで、Macie と カスタムデータ識別子を使って検出結果を得ることが出来ました。AWSにマイグレーションした際に暗号化されたストレージや暗号化されていないストレージのどこに機微情報が入っているかを特定することが出来ます。Macie とカスタムデータ識別子は、データの検出と分類を行うことをサポートして機微情報に対して追加の保護を行える自動化ツールです。

Macie をスケールするように使用する

カスタムデータ識別子は、Macie が機微情報を見つけ出すのに効果があります。クラウド上により多くのデータを載せていくと、新しいカスタムデータ識別子と新しいルールが必要になるでしょう。識別子とルールが増えるに従って、検出結果に対する自動化が必要になってくると思います。例えば、Lambda 関数を使って暗号化されていない機微情報が入ったバケットを暗号化することがあげられます。もしくは、機微情報が見つかったバケットに自動的にタグをつけてバケットの所有者が監査やコンプライアンスのレポートを作るのに役立てるということも考えられます。データ量が小規模なうちにこのような自動化対応を構築しておくと、大規模になったときの対応が容易になるはずです。

まとめ

新しく拡張された Macie において新しいカスタムデータ識別子を利用することで、組織に特有の機微情報タイプを検知し、分類し、保護することが可能になります。このポストではAmazon S3 に格納されている機微情報を自動的に見つけるカスタムデータ識別子の機能と使い方に着目して紹介しました。標準機能として提供している個人識別情報を検知するためのマネージドデータ識別子についても確認してみてください。より詳しく知りたい方は、Amazon Macie とは?にもアクセスしてみてください。

このブログポストにコメントがある方は、下記のコメントセクションからコメントを送ることが出来ます。また、このブログポストに質問がある場合には、Amazon Macie フォーラムで新しいスレッドを作成するか、AWSサポートにコンタクトしてください。

AWS セキュリティに関するコンテンツ、ニュース、新機能アナウンス等についてフォローしたい方は、Twitter で私達をフォローしてください。

このブログポストの翻訳はソリューションアーキテクト高橋が実施しました。原文のブログポストはこちらです。