そのコストパフォーマンスの高さ・業務効率の高さから、新しいシステムの構築場所として、クラウドを採用する企業は非常に多いです。また、既にオンプレ環境に持っているシステムを、クラウド環境に移行した企業も、多いことでしょう。
クラウドの恩恵を受けたいものの、システムやデータをクラウド上に配置することに、「漠然とした」不安を感じている方も、多いのではないでしょうか。
そこで、AWS(Amazon Web Services)認定 ソリューションアーキテクト である筆者が、本記事から数回に渡って、AWSのセキュリティについて紹介していきます。AWSの強力なセキュリティ機能を知ることで、クラウドに対する「漠然とした」不安を解消していきましょう。
一回目である今回は、Amazon S3 (Amazon Simple Storage Service) における、アクセス制御、暗号化、モニタリングについて紹介します。
Amazon S3とは「AWSが提供するストレージサービス」
Amazon S3の3つの特徴
S3の特徴 「高耐久性/高可用性」
S3にデータを保存すると、保存されたデータは複数のデータセンタに、自動的にレプリケーションされます。それにより、99.999999999% という非常に高い耐久性を実現しています。耐久性が高いとは「保存されたデータが損失しにくい」ということを表します。つまり、この数値は「S3に保存したデータが破損することは、ほぼ起こりえない」ということを表しています。
また、可用性も99.99%と非常に高く、いつでも安定してデータにアクセスすることができます。
※上記の数値は、クラスとしてS3標準を指定した場合。
S3の特徴 「スケーラブル」
利用できるS3の容量は実質無制限であり、大量のデータを格納することができます。もちろん、利用した分だけお金がかかります。
容量が無制限である一方で、1つのオブジェクトのサイズは最大5TBまで、1度にアップロードできるデータのサイズが最は5GBまで、のような制約があります。大容量のオブジェクトをアップロートする場合は、データを分割してアップロードする Multipart Upload 機能を利用する必要があります。
S3の特徴 「複数のクラスオプション」
上記の 高耐久性/高可用性 を満たす「S3標準」クラスに加えて、性能や利便性を落とす代わりに、低コストで利用できるクラスが存在します。
例えば、アクセス頻度が低いデータ向けの「低頻度アクセス」クラスや、耐久性を落とした「1ゾーン」クラス、などがあります。
格納するデータの性質やデータライフサイクルに応じて、クラスを使い分けることで、コストを最適化することができます。
S3に関するおさらいは以上です。ここからは、S3で利用できるセキュリティ機能(アクセス制御・暗号化・モニタリング)について、見ていきましょう。
(S3についてもっと詳しく知りたい方は、AWS公式サイトを確認してみてください)
アクセス制御
バケットやオブジェクトへのアクセスは「いつでも」「どこからでも」できます。従って、保存するデータ毎に、アクセスを許可するユーザを定義し、そのユーザだけがアクセスできるように制御することが、セキュリティ上とても大切になります。
S3では、下記の3種類のアクセス制御方法を利用することができます。
各制御方法は、何に対してアクセス権を設定するのか、アクセスする主体の単位は何か、という点で異なります。
セキュリティ要件に応じたアクセス制御方法を採用する
3つアクセス制御方法にはそれぞれ、実現できること・実現できないことがあります。従って、求められる要件に応じて、使い分ける・組合わせる等の対応が必要になります。
例えば、バケットの所有者とオブジェクトの所有者が異なり、オブジェクト毎にアクセス権限を定義したい場合は、オブジェクトACLを利用します。他のAWSアカウントに所属するIAMユーザに、バケットを公開したい場合は、バケットポリシーとIAMを利用します。
要件に応じた使い方については、AWS公式サイトにまとめられているので、一度確認してみてください。
Amazon S3の4つの暗号化オプション
オンプレ環境/クラウド環境に関わらず、大切なデータを暗号化することはセキュリティの基本です。S3でも暗号化が機能が提供されており、ユーザは下記のオプションを利用することができます。
(※ SSE: Server Side Encryption, KMS: Key Management Service, CSE: Customer Side Encryption )
各オプションは、データを暗号化する場所はどこか、暗号鍵を提供するのは誰か、暗号鍵を管理するのは誰か、という点で異なります。
セキュリティ要件を満たした運用が簡単な暗号化オプシ
ョンを採用する
暗号化や鍵管理について、自社のルールにあったオプションを選ぶ必要があります。特に制約がないのであれば、SSE-S3を利用することが一番簡単です。一方で、セキュリティの要件が非常に厳しく、アプリケーション側でデータを暗号化する必要がある場合は、CSEを利用することになります。
自社のセキュリティ要件を満たし、かつ、その中でも運用が簡単なオプションを選択するようにしましょう。
Amazon S3の2つのモニタリングサービス
クラウドを利用する上で、リソースやリソースに対するアクセスをモニタリングすることは、非常に大切です。セキュリティ面で重要なのはもちろんのこと、「余剰なリソースはないか」「レスポンスが遅くれていないか」等、しっかりとモニタリングし、適切に対応することで、パフォーマンスの向上やコストの最適化につながります。
ここではS3のモニタリングに利用するサービスについて紹介します。
CloudTrail
CloudTrail は、AWSの各サービスに対するAPIコールを追跡するサービスです。CloudTrailを利用することで、オブジェクトの取得や削除といったS3のイベントをキャプチャすることができます。また、キャプチャしたイベントログはS3バケットに保存することができます。S3バケットに保存することで、ログの長期保存や、ログを活用する他のサービスとの連携を実現できます。
CloudWatchLogs
CloudWatchLogs は、AWSサービスに限らず、様々なサービスのログファイルを監視するサービスです。上記のCloudTrailと組合わせることで、S3に対するイベントログを監視することができます。
また、このサービスには特定のログを検知できるフィルター機能が備わっています。フィルター機能を利用することで、S3オブジェクトの取得イベントのログを検知し、さらにその検知をトリガーとして別のサービスを起動する(メール通知する等)、のようなことができます。
終わりに
S3に限らず、AWSサービスが提供するセキュリティ機能は、強力なものが多いです。この機会に、クラウドのセキュリティ対策を知り、クラウドに対する不安を解消しましょう。
次回はKMS(Key Management Service)について、記事を書く予定です。