S3でセキュリティ事故を発生させないために欠かせない「Amazon Macie」とは?

はじめに

この記事ではAWS(Amazon Web Services)の機密データ検出サービス「Amazon Macie(メイシー)」について紹介していきます。

近年のITシステムでは顧客システム・宿泊システム・社内システムといった業務関連のものだけではなく、Webサービスやアプリでも個人情報を扱うことが多くなっています。また政府関連システムをはじめとして、企業のシステム・サービスにおいても第一の選択肢としてオンプレミスよりクラウドサービスを選ぶことを推奨する「クラウドファースト」という動きもあり、個人情報や機密情報が内部システムの中ではなくクラウドサービスを提供する他社の管理下に置かれることも珍しく無くなってきました。

以前はクラウドサービスというとセキュリティが脆弱という見方が強く、利用を敬遠される傾向にありました。しかし特にAmazon、Google、Microsoftといった大企業が立て続けにクラウドサービスの提供を開始して少し経った2011年4月に、経済産業省が「クラウドセキュリティガイドライン」を作成する等クラウドのセキュリティが注目され、かつ第三者に管理されるようになってからは各サービスで堅牢なセキュリティ性を保てるサービスや機能が充実し、クラウドで個人情報・機密情報を利用するのは心配という考えは過去のものとなりつつある状況です。

とは言っても、ユーザー側がセキュリティを考えなくてよくなったわけではありません。クラウドサービスは環境構築やメンテナンス、アップデート、保守をサービス提供側が受け持ってくれるという手軽さがありますが、セキュリティ関連の設定はユーザーが責任を持って行う必要があります。これはクラウドのサービス形態によって異なる部分もあり、SaaS(Software as a Service)に関してはすでに出来上がっているソフトウェアやアプリをその仕様の範囲内で利用するため、セキュリティに関しては提供元の設定や仕様に依存する部分が多いですが、PaaS(Platform as a Service)・IaaS(Infrastructure as a Service)といったサービス形態ではユーザー側の管理範囲が広がり、セキュリティについてもユーザーの責任の下で適切な設定を行わなければならない部分が多くなります。

個人情報や機密情報の流出といった類のニュースは大小こそあるものの近年頻繁に聞かれるようになり、特に珍しいものではなくなってきています。その中にはクラウドサービスを利用したシステムで発生したものもあります。クラウドサービスの提供元でセキュリティ関連のサービスや機能を充実させていたとしてもユーザー側がそれらを正しく理解して利用していないと、結果としてこのようなセキュリティ事故が発生してしまうという点を十分に心得ておく必要があります。

今回はAmazon Macieがどのようなサービスか、どのように利用するかという点を紹介しつつ、利用するうえで知っておかなければならない「Amazon S3」というサービスについて、また併用すると便利なサービスについて紹介します。AWSで個人情報を扱うシステム運用をするものの情報流出を防ぐためにどういったサービスを使えばいいか不明という方、Amazon Macieの性能次第でAWSを利用しようと思っている方、AWSについて総合的に学習したいと思っている方はぜひご覧ください。

Amazon S3とは?

S3は「Amazon Simple Storage Service」の略であり、一言で表すとストレージサービスです。耐久性、可用性、拡張性に優れており画像・動画、アプリデータ等様々な形式のデータが保存できます。その他のAWSサービスと連携して利用されることが多いS3ですが、一つの特徴として「バージョニング」という機能が備わっています。これを利用することで同じデータであっても過去のもの、最新のものと複数を同時に保持できるバージョン管理システムのような機能があります。なお、特に連携されることの多いAWSサービスとしてはLambdaやAPI Gateway、DynamoDBといったサーバーレス環境が挙げられます。

またコスト面においては「ライフサイクル」という機能を利用することでデータの利用状況に応じて不要と思われるデータを削除する、自動で最適な安いプランのS3へ移行するといったことを自動で実施してくれるようになります。S3はデータへのアクセスパターンによってプランが分類されているため、アクセス頻度の少ないデータを適したストレージに移行する等をして不要なコストが発生しないよう調整してくれます。

もう一つの大きな特徴としては、FTP、Webサーバーとしての利用が可能という点が挙げられます。Webサイトを公開する場合は通常データを保存するFTPサーバーと公開するための仕組みを構築するWebサーバーを別途用意する必要がありますが、S3の場合はストレージ内にHTML・CSS等のデータを保存するとHTTPやHTTPSでアクセスできるため、Webサイトの公開が可能となります。ただし静的コンテンツに限る点には注意が必要です。

さらに通常のストレージであればしばらくシステムを運用していると容量について気になってくるのが当然ですが、S3の場合は1データ当たりの容量が5TBという上限はあるものの全体容量については無制限となっています。そのためメンテナンスでデータの整理・削除を行うといった作業が発生しなくなります。他にもS3のストレージに保存したデータは自動的にバックアップを取って冗長化してくれるという特徴があります。S3はこれまでオンプレミスでの運用をしてきたエンジニアにとって、かつてはストレージに対して抱いた夢のようなことの多くが実現できたサービスと言えるでしょう。

S3で起きやすいセキュリティ事故

ここまで紹介してきたようにストレージサービスとして優れた面が目立つS3ですが、使い方によっては危険なものにもなり得るため、S3に潜むセキュリティリスクについても見ていきます。よりAmazon Macieの重要性がわかっていただけることでしょう。

S3でセキュリティの事故が発生する原因の多くはユーザーによる設定ミスです。セキュリティの啓発や教育を行っている非営利団体「OWASP(Open Web Application Security Project)」にはWebアプリケーションにおけるセキュリティリスクをTOP10形式で公表していますが、このランキングにおいてS3のセキュリティ設定のミスが上位にランクインしている他、クラウドコンピューティングのセキュリティに関する教育を行っている非営利団体「クラウドセキュリティアライアンス(CSA)」の「サーバーレスアプリケーションのための最も重大な12のリスク」でもセキュアになっていないS3が上位に、さらにはセキュリティ関連サービスで有名な「トレンドマイクロ株式会社」の「クラウド環境の設定不備ランキング」でもS3は2位となっている状況です。以上のランキングは2018〜2021年までと2023年の現在から数年前のものではありますが、設定ミスに関しては時間が経てば改善するものではないので、ユーザー側でどのようなことが発生し得るかをあらかじめ心得ておくと共にS3の仕組みへの理解を深める必要があります。

なおS3の設定ミスによって情報流出が想定される情報は、PII (Personally Identifiable Information)、PHI (Protected Health Information)、ログ、クレデンシャル、バックアップ情報、アプリケーションに含まれる情報等が挙げられます。PIIは名前・住所・電話番号・クレジットカード情報等の個人情報、PHI保険関連の情報、ログはアプリケーション等のログ、クレデンシャルは秘密鍵等の認証情報が該当します。

S3の設定ミスによる事例はインターネット上で検索するとたくさん出てきますが、直接の原因となっているのはS3の「バケット」にあります。バケットについて公式サイト内には「オブジェクトのコンテナ」と記載されていますが、もう少し詳しく説明するとバケットはデータを保存する場所のことであり「データ=オブジェクト」と捉えることもできますが、厳密にはバケットに格納されたデータ本体のことをオブジェクトと言います。もちろんデータには個人情報が含まれていることもありますが、そのデータを格納しているバケットにおいてアクセス設定や操作権限の設定を誤ったり、脆弱なソースコードが存在していたりという状況がある場合にセキュリティ事故が発生する可能性があります。このバケットの設定ミスによるセキュリティ事故の事例としては、Twitterで発生した第三者によるバケットの乗っ取りが可能な状態、Zomatoで発生したチャットにアップロードされた画像の閲覧可能状態、Shopifyで発生したiOSアプリでアップロードした画像の閲覧可能状態、Starbucksでのサブドメインの乗っ取り等があります。

AWSはAWSとユーザー間の「責任共有モデル」を公表しており、S3はこのモデルに則ったサービスとなっています。そのため仮に設定不備や漏れがあって事故に繋がったとしても、その責任はユーザー(開発者)側となること、またフルマネージドという概念はセキュリティに関しては及ばないことを事前に頭に入れておく必要があります。

以上に紹介したセキュリティ事故を防ぐ対策としては適切なアクセスポリシーの設定、IAMロールによる適切な設定はもちろん、運用しているアプリケーション側でも事故が発生しないようコーディング等による脆弱性対策を行うことが重要です。またパブリックアクセスブロック、バージョニング、オブジェクトロック、バージョニングのオプション機能「MFA Delete」、暗号化といった機能も有用です。そしてモニタリング・監査を行うサービスとして提供されているのが今回取り上げる「Macie」です。他にも「Amazon CloudWatch」「AWS CloudTrail」「AWS Config」といったサービスもあります。

なおAmazon CloudWatchはS3に限らずAWSの様々なサービスのリソース状況を監視できるサービスで、S3においてはストレージデータ、リクエストメトリクス、レプリケーション等の情報を収集したうえで監視が行われます。AWS CloudTrailはユーザーアクティビティ、API 使用状況をログとして記録できるサービス、AWS ConfigはAWSリソースの設定状態を評価・監査・審査できるサービスです。

Amazon Macieの特徴について

主にS3のデータを対象とし、個人情報・機密情報が含まれていることを検知したうえで必要に応じて自動的に確認・修正をしてくれるデータセキュリティサービスであり、その手法には機械学習とパターンマッチングを利用しています。検出を始めるには「ジョブ定義」を設定する必要があります。ジョブ定義ではジョブ名、対象のS3バケット(複数設定可)、実行スケジュール、サンプリング深度、オブジェクト条件といった検出オプション、カスタムデータ識別子オプションを設定します。

Macieで検出できるデータには、S3の設定ミスによって情報流出が想定されるものとして挙げたPIIやPHI、クレデンシャル、クレジットカード番号・銀行口座番号等の財務情報のが含まれます。具体的なデータ項目としては名前・住所・生年月日・電話番号・メールアドレス・運転免許証番号・クレジットカード情報・銀行口座番号が挙げられます。

Macieにおけるデータの識別方法としては2種類あり、一つはあらかじめAWSで定義されている「AWSマネージド識別子」、二つ目はユーザー側で自由にカスタマイズ定義できる「カスタマーマネージド識別子」です。カスタマーマネージドでは正規表現(regex)等であらかじめ一致するテキストパターンを定義して検出に利用します。日本の利用者がほとんどというシステムであればデータが日本語ということもあると思いますがEUC、Shift_JISといった文字コードは検出できません(UTF-8は検出可能)。そのため日本語を検出したい場合、カスタマーマネージド識別子の方でキーワードに日本語を指定することで可能となります。他にも例えばAWSマネージドの検知対象とはならないものの知的財産等の特別に機密データとしたいデータであっても検出することが可能になります。

なお、Macieの具体的な機能としてはデータセキュリティの自動化、監視、可視性、調査・レポートが挙げられます。データを分析して過去パターンやデータのアクセス場所、アクセス時間を把握したり、ログから異常を検知したり、Amazon CloudWatch EventsやAWS Lambdaから集めたレポートに存在する問題を自動解決したり、管理者向けにデータを可視化したりということができます。

また、機密情報を検知した際のアラートや自動修復はAmazon EventBridgeやAWS Step Functionsといったサービスと連携して行います。さらにMacieを利用するとAWSの管理コンソール内の「Amazon Macie」を選択することでS3バケットの概要が確認できるようになります。バケット数、ストレージ利用料、オブジェクト数、バケット公開状況、バケット暗号化状況、バケット共有状況を把握したい場合には便利なので覚えておきましょう。「S3 バケット」をクリックすることで個々のバケットにおけるオブジェクト数、暗号化の有無、暗号化方式、パブリックアクセスの有無、レプリケーション設定有無も確認できます。

Macieを利用する際の注意点が2つあります。一つは、対象となるS3のバケットに条件があるということです。対象となるバケットは暗号化されていないもの、パブリックアクセス可能なもの、アカウント管理サービス「AWS Organizations」で定義されていないAWSアカウントと共有されているものとなります。二つ目はリージョンごとのサービスとなる点です。Macieを利用する際はリージョンごとに有効化する必要があります。

Macieの開始は簡単にできます。「Amazon Macie」で検索してAWS内のページにアクセスすると「Amazon Macieの使用を開始する」をクリックして Macieの有効化を行います。サービスにリンクされたロールが自動作成されますが、ここで追加されたロールを確認したい場合は画面内にある「ロールのアクセス許可を表示」をクリックしてください。最後に「Macieを有効化」をクリックすることで準備完了となります。有効化直後のMacieの概要画面ではデータ取得中であることが表示されますが、しばらく待つと取得結果が表示される状態となります。

2022年に追加された新機能「自動検出」について

AWSではユーザーが主体的に参加できるセッション、展示ブース、ブートキャンプ、ゲーム演習等が行われる「re:Invent」というイベントを開催しており、2022年のイベントではMacieの新機能に関する発表がありました。新機能として紹介されたのは機密データの自動検知機能です。

Macieでは機密情報が検出できるといっても、ある程度ユーザー側で仕組みを推測したうえでMacieスキャンジョブを手動で作成することも少なくありませんでした。そのためバケット数やAWSアカウントが多ければ多い程、エンジニアによるルール定義や実際に検出可能かのチェック作業も多く発生します。しかし新機能が追加されたことで、S3バケット全体のオブジェクトを対象として自動的にサンプリングや分析が行われ機密情報の有無がチェックできるようになった他、機密データを引き続き検出するためにスキャンが持続できるようになりました。修復においても優先順位を付けての実施が可能となっていたり、除外設定をすることでバケットや特定の項目を検出しないようにしたりもできます。またUIも改善されており、機密データが含まれるバケット数、含まれていないバケット数、機密スコアの程度をそれぞれ可視化することもできます。

設定方法も非常に簡単で、Macieの「設定」項目内「自動検出」においてステータス箇所にある「有効化」ボタンをクリックし、確認画面が表示されるため再度「有効化」をクリックするのみで完了となります。

Amazon Macieの料金

Macieはその他ほとんどのAWSのサービスと同様に従量課金制ですが、課金対象はS3バケット数、機密データ検出処理に使用したデータ量となります。なお30日間は無料トライアル(自動データ検出、機密データ検出のために検査されたデータ、S3ストレージのモニタリングオブジェクトを含む)期間となるため、それ以降に料金が発生します。課金単位は月ですが無料トライアルの終了が月の途中であった場合、次月までの料金は日割計算されます。

日本のリージョンには東京・大阪があり、アジア圏は全部で8リージョン用意されています。他のリージョンとしては米国、欧州、中東、南米、カナダがあり、バケットのインベントリとモニタリングの料金は共通してバケットあたり0.10USD/月であるものの、データ検出・自動データ検出に使ったデータ量はリージョンごとに異なるので注意が必要です。2023年時点の東京・大阪の料金は最初の50TB/月までが1.25USD/1GB、499TB/月までが0.63USD/1GB、500TB/月以上が0.31USD/1GBと、利用するごとに料金が割安になる仕組みとなっていました。

Amazon Macieとの併用がおすすめのサービス

AWSのMacieのページには、AWS Security HubやAmazon GuardDutyといったサービスの併用を推奨する旨が紹介されていました。AWS Security HubはAWSの各サービスにおけるセキュリティアラート等を一元管理できるサービスで、整理や優先順位付けも可能です。AWSで大規模なシステムを構築する際はいくつものサービスを併用して運用することも珍しくないので、そのような場合に自動的にアラートを管理してくれるAWS Security Hubのようなサービスは便利と言えます。なおMacieはAWS Security Hubで一元管理できるサービスの一つとして含まれています。

もう一つのGuardDutyはAWS環境あるいはAWSアカウントに対してアタックがあった場合にそれを検知できるサービスで、GuardDutyを有効にするだけでセキュリティ状況のモニタリングや通知を行い、さらに機械学習によって分析を行ってログの中からアタックと判断できるものを検知します。Macieと併用して以上のようなサービスを利用することでより万全なセキュリティ体制をとれることがわかっていただけたことでしょう。

まとめ

システムのセキュリティを強化しようとするとそれだけ別にコストが発生し、MacieにおいてもS3とは別に料金がかかります。しかし万が一情報流出のようなセキュリティ事故が発生してしまった場合の損害は計り知れないものがあり、企業の信用までもを失くしかねないのでそれによって二次的な損害が発生する可能性もございます。

またオンプレミスのサービスやソフトウェアであると、セキュリティシステムを構築して運用・保守をするための専門的な知識を持ったエンジニアの存在が欠かせないため敷居が高い部分がありますが、Macieのようなクラウドサービスであれば特に難しい設定等を必要とせずすぐに利用を開始できます。

幸いなことに近年の一般的な企業においてセキュリティにコストをかけないということはまずないので、S3を社内システムで利用する場合は合わせてMacieの導入を検討してみてはいかがでしょうか。またすでにS3を利用している場合も、今後のリスクに備えてすぐにでもMacieを導入してみてはいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

HerokuとAWS

次の記事

検索サービスAmazon Kendraとは