年々被害が深刻化するサイバー攻撃からクラウド基盤を守るためにできることは何だろうか――Amazon Web Service(AWS)をめぐるコミュニティはいろいろあるが、セキュアにAWSを活用していくためのノウハウを交換することを目的としたコミュニティ「Security-JAWS」が、第6回の勉強会を開催した。2017年8月24日にラックにて行なわれたその模様を紹介しよう。
知っておこう、「Amazon Macie」ができることとできないこと
プログラムの中でも、「AWS Summit 2017 New York」で8月14日に発表されたばかりの新機能「Amazon Macie」について取り上げた「ざっくりわかるAmazon Macie」は、やはり注目の的だったようだ。クラスメソッドの佐々木大輔さんが「機械学習を使って、AWSに保存されている機密データを自動的に発見、分類、通知してくれる」というAmazon Macieの基本機能と、実際に触ってみた感想を紹介した。
Amazon Macieは、S3バケットの中のファイル、オブジェクトの中身を読み込み、そこに含まれる情報のリスクを判別、分類してくれる機能だ。「複雑で深い分析が必要な場合、例えば大きなZIPファイルについては、いったんMacie側に完全なコピーをダウンロードしてから分析し、メタデータをMacie側で保存する。従って、会社のポリシーとしてS3以外にデータを置くことを制限している場合は注意が必要だ」(佐々木さん)
また、特定のアカウントのCloudTrailを監視し、そのファイルに対し、どのユーザーからどんなAPIアクセスがあったかを分析することもできる。もし、多くの個人情報が含まれるファイル、リスクの高いファイルが見つかった際にはアラートを上げ、Cloud Watch Eventsと連携することが可能だ。
「Cloud Watch Eventsからは、設定次第で何でもできる。メールで通知することもできるし、Lambdaファンクションも取れる。例えば、そのファイルにアクセスしているユーザーを削除したり、ポリシーを変更してそのユーザーからはアクセスできなくしたり、パスワードリセットをかけるといった具合に、Lambda経由で自由に制御できるのがいいところ」(佐々木さん)
逆に、現状ではS3とCloudTrail以外は監視ができない。また、「Macieは異常を検知して通知してはくれるが、それ自体が保護をしてくれるわけではなく、あくまで発見、分類、通知を行うことになる」(同氏)。また、機能が提供されているのはバージニアとオレゴンの2つのリージョンのみで、サポートされている言語も英語のみだ。EC2、DynamoDB、EFS、RDBなどは今年後半にサポートされる予定となっている。
6つの基準でファイルの機密性・リスクを分析
続けて佐々木さんは設定方法や使い方を解説した。Amazon Macieを利用するには、IAMロールとCloudTrailが有効になっている必要がある。同氏の場合は、用意されたCloud Formationのテンプレートを用いて有効化したそうだ。あとは管理コンソールでリージョンとメタデータの保存期間、監視対象となるS3バケットなどを選択していけばいい。
すると、Macie側が監視対象となるS3バケットのファイルを読み込み、分析してくれる。「リリース日にはみんなが一気に使ったためか、ファイルのスキャンに半日くらいかかったけれど、ついこの間自分がやったときは10分くらいで終わった。かなり早い時間でできるようになっていると思う」(佐々木さん)。分析が終わると、GUI上に結果一覧がグラフィカルに表示される。
さて、Amazon Macieではどんな基準に沿って、ファイルのリスクや機密性を分析しているのだろうか。その基準は大きく分けて6つあるという。「ファイルのコンテンツタイプ」「拡張子」のほか、キーワードの集合体である「テーマ」、「正規表現」、それに「PII(個人情報)」と「サポートベクターマシンベースド分類(SVM)」だ。基本的に、AWS Macie側で用意されたものを使うか、使わないかの選択のみで、追加や変更はできない。
このうち「テーマ」はいくつか用意されており、「たとえば『クレジットカードキーワード』というテーマでは、ファイルの中に『Check Card』『Debit Card』『Card Holder』といったキーワードが含まれている場合、『クレジットカード情報が含まれている可能性がある』と判断し、リスクレベルを上げていく」(同氏)という仕組みだ。
PIIは、NIST-80-122やFIPS 199で定義された個人情報、個人識別情報を認識する仕組みだ。氏名や住所、生年月日、メールアドレス、クレジットカード番号、運転免許証のIDなどが該当し、「含まれている要素ごとに、『ハイ』『ミドル』『ロー』のリスクに振り分ける。例えば1つ以上のフルネームとクレジットカード番号が含まれていればリスクは『ハイ』と認識するし、名前やメールアドレス以外の情報が含まれているならば『ロー』という感じでファイルのリスクを判断していく」(佐々木さん)
最後のSVM分類が、いわゆる「機械学習」と呼ばれている部分だ。ファイルのメタデータと中身をnグラム分析し、「電子書籍のファイル」「電子メールのファイル」、あるいは「データベースのダンプファイル」であろうという具合に仕分けしていく。
分析は意外と高速、今後の日本語対応に期待
Amazon Macieではこれら6種類の手法を組み合わせてファイルを分析していく。佐々木氏が試しにGitHub上のソースコードを含むファイルを分析してみたところ、Pythonのコードが一番多く、それ以外にログファイルやJSONファイルが含まれる、といった内訳がきちんとグラフィカルに表示されたそうだ。個人情報の有無も表示され、「今回試したケースでは『None』が87%でほとんどは問題がないが、『ロー』リスクが46件、『ハイ』リスクが1件あることが分かった。ドリルダウンしていくと、誕生日の情報を含むファイルが一件あることが分かる」(佐々木さん)という結果になった。
Amazon Macieは前述の通り、S3に含まれるファイルの中身と同時に、CloudTrailのイベントも解析してくれる。S3の各オブジェクトに対しどんなイベントがあったか、どのISPから通信があったか、どのユーザーIDからアクセスがあったかが分かる仕組みだ。さらに、アカウントごとのリスクも判断する。「管理上の問題で一部rootで見ているものがあるが、それがきちんと検出され、ハイリスクとして報告されている。ユーザーごとにイベント数がどのくらいあり、エラーはどのくらいあったか、一番最後のアクティビティやログインはいつだったかも見てくれる」(佐々木さん)。
挙動を確認するに当たって、サンプル用の個人データを追加したCSVファイルをアップロードしたところ、それもきちんと検出してくれた。「PIIデータの欄には、なぜこのファイルがアラートとして検出されたかが表示され、ここでは『生年月日とメールアドレス』の2つが挙がっている。サンプルデータでは住所と氏名は日本語で入れていたため、そこは検出されなかった。だが、電子メールと生年月日は数値とアルファベットで表記されるため、Amazon Macie側で検出してアラートを上げている。日本語対応されれば、名前や住所もおそらく引っかかってくるだろう」(佐々木さん)
佐々木さんは、今のところ最初の数GB、最初の何件かは無料枠が用意されており、ちょっと試すだけならば特に費用は発生しないことにも触れ、「リスク分析の観点からいうと、全ユーザーが利用したほうがいいくらい重要なサービス。今後、他リージョン、他言語対応には大いに期待したいし、Cloud Watch EventsからLambdaファンクションへの連携についても、皆で触ってノウハウを貯め、アウトプットしていきましょう」と呼び掛けた。