ブログ|NRIセキュア

Amazon S3とは?特徴や暗号化などの機能を解説

作成者: 名部井 康博|2019/04/17

 そのコストパフォーマンスの高さ・業務効率の高さから、新しいシステムの構築場所として、クラウドを採用する企業は非常に多いです。また、既にオンプレ環境に持っているシステムを、クラウド環境に移行した企業も、多いことでしょう。

 

 クラウドの恩恵を受けたいものの、システムやデータをクラウド上に配置することに、「漠然とした」不安を感じている方も、多いのではないでしょうか。

 

 そこで、AWS(Amazon Web Services)認定 ソリューションアーキテクト である筆者が、本記事から数回に渡って、AWSのセキュリティについて紹介していきます。AWSの強力なセキュリティ機能を知ることで、クラウドに対する「漠然とした」不安を解消していきましょう。

 

 一回目である今回は、Amazon S3 (Amazon Simple Storage Service) における、アクセス制御、暗号化、モニタリングについて紹介します。

 

 

Amazon S3とは「AWSが提供するストレージサービス」

 まずは、S3について簡単におさらいしましょう。S3とは、AWSが提供するストレージサービスの1つであり、オブジェクト型のストレージサービスに分類されます。S3の利用者は、バケットと呼ばれる入れ物を作成し、その中にオブジェクト(データ)を格納します。バケット/オブジェクトには、インターネット上のどこからでもアクセスでき、格納するデータの形式を問いません。
 その汎用性の高さから、バックアップの保存先、ログの保存先、コンテンツ配信、オンプレのストレージとのハイブリット利用、など様々な用途で利用されます。
 

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)について、記事を書く予定です。