Amazon Macie というサービスをご存じでしょうか?
今回はこのサービスを日本環境で活用する方法についてご紹介します。
なお、記載内容は個人的なものであり、所属する企業や組織、団体を代表する見解その他ではありません。また、記事の内容は2023年6月時点の状況ですので、ご承知おきください。
1.Amazon Macie とは何ですか?
Amazon Web Services (AWS) のサービスの1つです。
Amazon Macieの公式FAQの記載を引用すると、「機械学習とパターンマッチングを用いて機密データを発見し、データセキュリティリスクを可視化し、そのリスクに対する自動保護を可能にするデータセキュリティサービス」になります。
Amazon Simple Storage Service (Amazon S3) には大量のオブジェクトが格納されています。docx、xlsx、txt、pdf、csv……色々なタイプのオフジェクトがあります。その中に意図せず機密データが含まれるオブジェクトを格納してしまうと大変です。場合によっては情報漏洩事故につながる可能性もあります。
それを検出してくれるのが Amazon Macie サービスになります。
ちなみに、「Macie」(メイシー)の語源が気になって調べてみたのですが「Amazon Web Services ブログ」に記載がありました。「フランス語と英語(イギリス)の両方に基づいた起源があり、通常は女の子の名前であり、さまざまな意味があります。」とのことです。
AWS の中の人でも明確な語源が分からないようですね。
2.セキュリティのベストプラクティス
AWS におけるアーキテクチャのベストプラクティス(最善の方法や最良の事例)をまとめた AWS Well-Architected Framework というフレームワークがあります。こちらのフレームワークの中の「セキュリティの柱」の「SEC07 データ分類」において Amazon Macie の活用が推奨されています。
区分 | タイトル |
---|---|
SEC07-BP01 | ワークロード内のデータを特定する |
SEC07-BP02 | データ保護コントロールを定義する |
SEC07-BP03 | 識別および分類を自動化する |
SEC07-BP04 | データのライフサイクル管理を定義する |
ですから、サービス内容について理解した上で、利用の要否を判断することが大切になります。
3.Amazon Macie の開始方法と概要
Amazon Macie の開始方法は非常に簡単です。
Amazon Macie はリージョン単位(東京リージョン、大阪リージョン……)で有効化する必要があります。有効化の方法は簡単です。
対象の S3 バケットがあるリージョンで「ご利用開始にあたって」を選択します。
注意事項の画面が表示されるので内容を確認の上「Macie を有効化」を選択します。そうすれば、Maiceの利用を開始できます。サイトに記載がある通り30日間は無料トライアル期間として利用できます。この期間にしっかり検証することをお勧めします。
サービス利用開始時に「機密データの自動検出」がオンになっており、対象リージョンの S3 バケット内のオブジェクトに対して、機密情報の検出処理が開始されます。この設定は定期的に自動検出する設定ですが、ジョブで随時で検出処理を実行することもできます。
Amazon Macie 画面では機密データの検出結果が表示されます。
検出された結果は、バケット単位やジョブ単位、識別子タイプ単位などで一覧表示をして確認することができます。
そして、対象のオブジェクトがどれか、オブジェクト内のどこが該当箇所なのかといった情報も表示されます。問題のある機密情報があれば、素早く検出して発見することができるわけです。
「サポートされているファイル」は以下の通りです。多くのファイル形式に対応しています。
ファイルタイプ | 説明 | ファイル拡張子 |
---|---|---|
ビッグデータ | Apache Avro オブジェクトコンテナおよび Apache Parquet ファイル | .avro、.parquet |
圧縮またはアーカイブ | GNU Zip 圧縮アーカイブ、TAR アーカイブ、および ZIP 圧縮アーカイブ | .gz、.gzip、.tar、.zip |
Document | Adobe Portable Document Format ファイル、Microsoft Excel ワークブック、および Microsoft Word ドキュメント | .doc、.docx、.pdf、.xls、.xlsx |
E メールメッセージ | 内容が IETF RFC で指定された電子メールメッセージに関する要件 (RFC 2822 など) に準拠する電子メールファイル | eml |
テキスト | カンマ区切り値 (CSV) ファイル、Hypertext Markup Language (HTML) ファイル、JavaScript Object Notation (JSON) ファイル、JSON Lines ファイル、プレーンテキストドキュメント、タブ区切り値 (TSV) ファイル、Extensible Markup Language (XML) ファイルなどの非バイナリテキストファイル | .csv、.htm、.html、 .json、.jsonl、.tsv、 .txt、.xml、その他 |
今までの内容をまとめると、大まかな構造は以下の図のようになります。細かい設定は省略しているので、概要として眺めてください。
そして、この「日本の制度や日本語対応」に関してポイントとなるのが「データ識別子」です。
4.検出機能の最重要ポイント「データ識別子」
Amazon Macie によって機密データを検出するためには2つの「データ識別子」が利用できます。AWS が準備している「マネージドデータ識別子」と、ユーザが自由に設定できる「カスタムデータ識別子」です。この2つのデータ識別子を組みあわせて、ワークロードに必要な機密情報の検出機能を実装します。
種類 | 作成者 | 識別子の例 |
---|---|---|
マネージドデータ識別子 | AWS側 | 機械学習やパターンマッチングなどの基準と手法の組み合わせを使用して、S3 オブジェクト内の機密データを検出します。 |
カスタムデータ識別子 | ユーザ側 | S3 オブジェクト内で一致するテキストパターンを定義する正規表現 (regex) を指定します。 |
5.マネージドデータ識別子の日本の制度や日本語対応状況
ここからが、この記事の本題になります。
日本の制度や日本語への対応状況です。
まず AWS が準備している「マネージドデータ識別子」が、どの程度日本の制度や日本語に対応しているか記載します。
5.1.キーワード必須のマネージドデータ識別子
Amazon Macie では、キーワードが必須のマネージドデータ識別子が多くあります。例えば「生年月日」であれば「birthday」というキーワードの近くに「1999/09/09」という日付情報が検知できた場合に、機密情報として検出します。
ただ、課題としてキーワードが日本語対応していません。例えば「生年月日」は「birthday」などの英語のキーワードが必要であり、「生年月日」といった日本語のキーワードでは検出されません。
以下が例になります。
検出タイプ | 必要なキーワード |
---|---|
生年月日 | bday, b-day, birth date, birthday, date of birth, dob |
クレジットカードの有効期限 | exp d, exp m, exp y, expiration, expiry |
クレジットカードの磁気ストライプデータ | card data, iso7813, mag, magstripe, stripe, swipe |
クレジットカード認証コード | card id, card identification code, card identification number, card security code, card validation code, card validation number, card verification data, card verification value, cvc, cvc2, cvv, cvv2, elo verification code |
全地球測位システム (GPS) 座標 | coordinate, coordinates, lat long, latitude longitude, position |
5.2.キーワード不要だが日本語に対応していないマネージドデータ識別子
Amazon Macie では、キーワードが無くても検出できるマネージドデータ識別子があります。例えば「フルネーム」です。ただ、こちらはアルファベット表記のみを検出できます。そのため、漢字、平仮名、カタカナで記載されたフルネームは検出できません。例えば、「山田 太郎」「やまだ たろう」「ヤマダ タロウ」は検出不可ですが、「Taro Yamada」は検出可能です。
検出タイプ | 対応状況 |
---|---|
フルネーム | ラテン文字セットのみ対応 ※アルファベットのみ対応 ※漢字・平仮名・カタナカは未対応 |
5.3.各国の法律や規則に対応するマネージドデータ識別子
マネージドデータ識別子は各国の法律や規則に対応したものがたくさんあります。しかしながら、日本の法律や規則に対応したものが無い状況です。個人的には「マイナンバー」「銀行口座」「健康保険証番号」「運転免許証番号」「郵便番号」「パスポート番号」「車両番号」辺りが標準で日本の制度に対応してくれると嬉しいところです。
以下が例になります。
検出タイプ | 日本 対応状況 |
説明 |
---|---|---|
銀行口座番号 | × | 日本の銀行口座は未対応 |
麻薬取締局 (DEA) 登録番号 | - | 米国向けの機能 |
健康保険請求番号 (HICN) | - | 米国向けの機能 |
健康保険または医療識別番号 | × | 日本の健康保険は未対応 |
ヘルスケア共通手順コーディングシステム (HCPCS) コード |
- | 米国向けの機能 |
全米医薬品コード (NDC) | - | 米国向けの機能 |
国家プロバイダー識別子 (NPI) | - | 米国向けの機能 |
機器固有識別子 (UDI) | - | 米国向けの機能 |
運転免許証識別番号 | × | 日本の運転免許証は未対応 |
選挙人名簿番号 | - | 英国向けの機能 |
郵送先住所 | × | 日本の郵便番号は未対応 |
国民識別番号 | × | 日本のマイナンバーは未対応 |
国民保険番号 (NINO) | - | 英国向けの機能 |
パスポート番号 | × | 日本のパスポート番号は未対応 |
銀行口座番号 | × | 日本の銀行口座は未対応 |
本籍地 | × | 日本の本籍地は未対応 |
電話番号 | × | 日本の電話番号は未対応 |
社会保険番号 (SIN) | - | カナダ向けの機能 |
納税者識別番号または参照番号 | × | 日本のマイナンバーは未対応 |
車両識別番号 (VIN) | × | 日本の車両番号は未対応 |
5.4.日本の制度や日本語を意識せずに利用できるマネージドデータ識別子
ここまで見ると、日本ではマネージドデータ識別子が使えないように思うかと思いますが、日本の制度や日本語に依存しない識別子についてはもちろん利用できます。ここでは、そういった識別子を紹介します。
まずは認証情報系です。こちらは言語関係なく利用できます。
例えば AWS の アクセスキーやシークレットキーが記載されたオブジェクトを S3 上にアップロードした場合、これを検出してくれます。こういう危険な状況を防止することができるのは非常に助かりますね。
検出タイプ |
---|
AWS シークレットアクセスキー |
HTTP 基本認証ヘッダー |
JSON Web Token (JWT) |
OpenSSH プライベートキー |
PGP プライベートキー |
公開鍵暗号標準 (PKCS) プライベートキー |
PuTTY プライベートキー |
HTTP クッキー |
あとは、クレジットカード番号です。このマネージドデータ識別子はキーワード無しで検出することができるため、日本語に依存せずに活用することができます。
検出タイプ | 対応状況 |
---|---|
クレジットカード番号 | 2つのパターンがあり、「CREDIT_CARD_NUMBER」は近くに英語のキーワードが存在する必要があるが、「CREDIT_CARD_NUMBER_(NO_KEYWORD)」というキーワード無しで検出できる識別子が存在する。こちらは言語に依存しない。 |
多くはありませんが、このようなマネージドデータ識別子は活用可能です。
6.カスタムデータ識別子による日本の制度や日本語への対応
「マネージドデータ識別子」はたくさん準備されていますが、日本の制度や日本語に対応した識別子はほぼ存在しない状況です。そういった不足を補うために活用できるのが「カスタムデータ識別子」です。こちらは、正規表現でデータ検出条件を記載することで、条件に合ったデータを検出することが出来ますし、日本語表記も可能ですので、ある程度の代替利用は可能です。
ここでは参考として「和歴生年月日を検出するカスタムデータ識別子」を作成方法を紹介しつつ、ポイントの説明を実施します。
6.1.正規表現の記載
1つめのポイントは「正規表現」です。
カスマムデータ識別子では、正規表現に記載された内容に合致したデータが検出されます。
これで、和暦表記の日付を抽出できるようになりました。
なお、正規表現で記載する際に、行頭に「^」、行末に「$」を入れた方が検出しやすそうに思われるかと思いますが、その場合 PDF や docx の中の機密情報を検知できなくなります。英語であれば単語の間に空白が入っているので区切りが分かりますが、日本語の場合は「私の電話番号が000-0000-0000です。」といった形で切れ目がないので抽出できなくなるわけです。この点はご注意ください
6.2.キーワードの記載(オプション)
2つ目のポイントは「キーワード」です。
オプション機能として、複数のキーワードを記載できます。記載した場合は、結果が正規表現パターンと一致し、これらのいずれかのキーワードが距離内にある場合に検出されるようになります。オプションですが、設定しない場合はすべての和暦日付が検出されてしまいます。今回は生年月日に関する内容のみを検出したいので、「生年月日」と「誕生日」を設定します。
なお、「キーワードは3文字以上」という制限があり「生年」や「日付」といった2文字以下のキーワードは設定できないのでご注意ください。英語だと2文字の単語は少ないと思いますが、日本語は漢字2文字でも意味を持つものが多いので、この制限は結構厳しい制限に感じます。
この「キーワード」を利用する場合は、「最大一致距離」を設定する必要があります。テキストが正規表現パターンと一致し、少なくとも 1 つのキーワードの後に出現し、かつキーワードから指定された距離内にある場合、Macie はそのテキストを結果に含めます。それ以外の場合、Macie はそれを結果から除外します。1~300 文字の距離を指定できます。デフォルトの距離は 50 文字です。
なお、キーワード設定ありの場合となしの場合の違いは以下の通りです。
正規表現だけだと絞り込みが難しいため、キーワードをうまく活用する必要があります。
6.3.重要度設定
3つ目のポイントは「重要度」です。
対象データが検知されたときに、どのレベルの重要度にするかは非常に重要なポイントです。標準では「1回以上条件に合致したら Midiam で検知」となっています。
オブジェクトの中での検知件数により重要度を変更設定も可能です。例えば以下の設定の場合は「1回以上条件に合致したら Low 、50回以上条件に合致したら Midium 、100回以上条件に合致したら high 」といったように設定できます。こうすればある程度まとまった個人情報が記載されている情報が検出された場合のみ high で通知するといった対応が可能になります。
6.4.評価機能
設定を作成して登録する前に機能の評価を実施することができます。これは実際にサンプルデータ欄にデータを記載して、検出できるかをテストすることができます。その為、正規表現やキーワードを色々試しながら、認識通りの検知が可能か確認することができます。こちらは非常に便利な機能です。
6.5.実際の検出結果の確認
設定完了後に実際にジョブを実行すると、カスタムデータ識別子の条件に合うデータがで検出されます。今回作成した「和歴生年月日(日本)2」で検知されたのは以下の4つのオブジェクトになります。
docx、xlsx、pdfといったファイルが検知されているのが分かります。
検知されたファイルについては、それぞれファイル内のどこで検知されたかが分かります。PDFはページ数、xlsxファイルなら行列情報まで分かります。なお、docxファイルは該当箇所のページ数や情報が表示されていないように、ファイル種類によって通知される内容には違いがあります。詳細は「Amazon Macie の調査結果を用いて機密データを見つける」をご確認ください。
オブジェクトの内容 | オブジェクトの内容 | 検知結果 |
---|---|---|
xlsxファイル | 対象データの行列情報が表示されます。 |
|
pdfファイル | 対象の情報が記載されているページ数が表示されます。 |
|
docxファイル | 該当箇所の情報等は表示されません。 |
ここまでが和暦生年月日のカスタムデータ識別子の説明でした。
7.その他のカスタムデータ識別子による日本の制度や日本語への対応
これと同じ発想で日本の制度や日本語に対応していないマネージドデータ識別子の代替となるカスタムデータ識別子を何点か検討してみました。
対象は現在日本の制度や日本語に対応していない以下の項目について検討しています。
検出タイプ | 日本 対応状況 |
説明 |
---|---|---|
生年月日 | × | キーワードが日本語に対応していない。 |
銀行口座番号 | × | 日本の銀行口座は未対応 |
国民識別番号 | × | 日本のマイナンバーは未対応 |
パスポート番号 | × | 日本のパスポート番号は未対応 |
電話番号 | × | 日本の電話番号は未対応 |
郵送先住所 | × | 日本の郵便番号は未対応 |
本籍地 | × | 日本の本籍地は未対応 |
そして、対応結果が以下の通りです。条件が明確なほど正規表現で絞り込みができるので、想定通り検出されやすくなります。銀行口座番号やマイナンバーは採番ルールが明確ではないので、一旦文字数のみでのチェックとしています。逆に記号と数字の組み合わせで桁数も明確なパスポート番号は絞り込みやすい対象です。
検出内容 | 正規表現 | キーワード | 検出例 | 補足 |
---|---|---|---|---|
和暦生年月日 | [明治|大正|昭和|平成|令和|m|t|s|h|r|M|T|S|H|R][0-9|0-9|元]{1,2}[年|.|/][0-9|0-9]{1,2}[月|.|/][0-9|0-9]{1,2}[日]? | 生年月日, 誕生日 | 令和元年12月21日 | 元号はルールが明確なため。明治、大正、昭和、平成、令和を対象とする。 |
銀行口座番号 | [0-9]{7} | 銀行口座, 口座番号 | 1234567 | 日本の銀行口座は基本的に7桁のため。 |
マイナンバー | [0-9]{12} | マイナンバー, 個人番号, my Number | 123456789012 | マイナンバーは12桁のため。 |
パスポート番号 | [a-z|A-Z]{2}[0-9]{7} | 旅券番号, パスポート, パスポート番号, passport number | XX1234567 | 日本の旅券番号は2桁のアルファベットと7桁の数字のため。 |
携帯番号 | 0[7|8|9]{1}0[-]?[0-9]{4}[-]?[0-9]{4} | 携帯番号, 電話番号, 連絡先 | 080-1234-5678 | 携帯番号は070、080、090から始まるため。 |
郵送先住所 | 〒[0-9|0-9]{3}-[0-9|0-9]{4} | 郵便番号, 郵送先 | 〒540-0002 | 日本の郵便番号は数字3桁-数字4桁のため。 |
本籍地 | 〒[0-9|0-9]{3}-[0-9|0-9]{4} | 本籍地 | 〒540-0002 | 日本の郵便番号は数字3桁-数字4桁のため。 |
このように、カスタムデータ識別子を活用することで、日本環境でも利用することができます。少し試行錯誤が必要ですが、AWS Macie の活用を検討してみる価値はあるのではないでしょうか。
8.まとめ
今回の記事では Amazon Macie の日本の制度や日本語への対応状況をまとめました。記事にもある通り、AWS が準備したマネージドデータ識別子は、まだまだ日本の制度や日本語への対応ができていない状況です。ただ、、その不足はカスタムデータ識別子を活用することで、ある程度は補うことが可能です。Amazon Macie 自体は AWS Well-Architected Framework のセキュリティの柱の中でも利用を推奨されているサービスですので、その機能を理解した上で要否の検討を実施してください。
# | ポイント |
---|---|
1 | Amazon Macie はS3バケットから機密データを検出できるサービスです。 |
2 | 「データ分類」のベストプラクティスとして活用を推奨されています。 |
3 | Amazon Macie はリージョン単位で有効化することで簡単に利用開始できます。 |
4 | 機密データの検出は2つの「データ識別子」で実施されます。 |
5 | AWSが準備している「マネージドデータ識別子」は日本の制度や日本語への対応がほとんどされていません。 |
6 | 不足分はユーザが独自に設定可能な「カスタムデータ識別子」で対応しましょう。 |
とはいっても、やはり機械学習などに対応しているマネージドデータ識別子にも日本の制度や日本語に対応してほしいところです。近い将来に少しづつでもよいので対応されることを期待したいです。
今回の記事は以上です。
ご一読いただき、誠にありがとうございました。