AWS

AWSでS3を安全に使うための2つのポイント

今回は、AWSのS3(ストレージサービス)を安全に使うためのポイントについてお話ししたいと思います。

前回の記事では、AWSのデータベースのサービスであるRDSに安全にデータを保存する方法についてお話ししました。S3はファイルの置き場として気軽に使えますし、AWSの中でも非常によく使われているサービスだと思います。AWSで何かデータを配置したいと考えた場合に、まだAWSを使いはじめて間もない人がまず考えるのが以下のような方法だと思います。

  • S3で新しいバケットを作ってその中に入れる
  • EC2インスタンスを起動してSFTPのツールを使って配置する

ただ、クレジットカード情報や個人情報など重要な情報を安全に保存するためにはもう少し注意しなければいけない点があります。

特にクレジットカード情報を保存する場合には、クレジットカード業界のセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)に従う必要があり、そこでもデータの暗号化など、安全にカード情報を保存するための要件が求められます。

3.6.1.a 鍵管理手順に、強力な鍵の生成方法が指定されているこ
とを確認する。

PCIデータセキュリティ基準

今回は、S3に限定して安全に使うためのポイントについてお話ししたいと思います。

  • S3の暗号化を設定する
  • S3へのアクセス権限を設定する

S3の暗号化を設定する

S3の暗号化方法は下記の2種類があります。

  • サーバサイド暗号化
  • クライアントサイド暗号化

サーバーサイド暗号化は、ファイルを配置する際にS3が自動的に暗号化してAWSのデータセンター内のディスクに書き込んでくれ、ファイルを取り出すときに複合してくれます。クライアント暗号化は暗号化、複合化を自分で行う必要があるため、そちらの方が大変です。今回はサーバサイドの暗号化について説明します。サーバサイド暗号化の方法にもさらに下記の3つがあります。

  • S3管理のキーによる暗号化 (SSE-S3)
  • AWS KMS管理のキーによる暗号化(SSE-KMS)
  • 自分で用意した鍵で暗号化(SSE-C)

サーバー側の暗号化を使用したデータの保護

まず、SSE-Cは鍵管理を自分で行わないといけないため、これを選択するメリットはあまりない場合が多いのではないかと思います。PCI DSSでも要求されていますが暗号化に使用する鍵管理は厳重に行う必要があり、そこをAWSにお任せできるというメリットが受けられなくなるからです。

次に、SSE-S3かSSE-KMSを選ぶかですが、SSE-S3の方がお手軽に導入できます。しかし、その場合は、鍵に対するアクセス制御やPCI DSSでも求められる鍵に対するアクセスの記録の保存やレビューができないので、PCI DSS要件を満たすためには、SSE-KMSになると思います。

SSE-KMSはAWS KMS(Key Management Service)というデータの暗号化や複合化の機能を提供してくれ、他の多くのAWSサービスで連携できるサービスです。

AWS Key Management Service とは

データを暗号化する際に、非常に重要なのが、いかに安全に暗号化にしようした鍵を管理するかということです。以下に強力な暗号方式を使用しても暗号化にしようした鍵の管理がずさんであればデータ漏えいに繋がってしまうからです。

PCI DSSにおいても鍵の管理方法について多くの記載があり、これはすごく重要なことです。

AWS KMSを使用するメリットとしてはその鍵の管理をAWS上で簡単に行うことができるということです。KMSはAES256という暗号方式を使用しており、PCI DSSでも暗号方式の選定の際に参考にすべきものとして記載されているNIST SP 800-57 Part1で2030年以降も使用可能とされているものですので、現時点では安全な暗号方式で暗号してくれます。

強力な暗号化記述

本書の発行時点で業界で認められているテスト済の暗号化の標準およびアルゴリズムの例として、AES(128 ビット以上)、TDES/TDEA(3倍長キー)、RSA(2048 ビット以上)、ECC(224 ビット以上)、およびDSA/DH(2048/224 ビット以上)が挙げられます。

PCI DSS用語集

SSE-KMSを選んだ場合、下記の点を注意する必要があります。

  • KMSのキー管理者、キーユーザーを必要最低限に設定する
  • KMSのキーローテーションを設定する

S3のアクセス権限を設定する

いかにファイルがサーバサイドで暗号化をしたとしてもそのバケットが外部からアクセス可能になっていたら結局生のデータが取得可能になってしまいます。また、サーバサイドの暗号化をしたとしても暗号化しない状態でファイルを配置することも可能になっているので、バケットポリシーを設定して暗号化しない状態でファイルを置くことを禁止する設定を入れる必要もあります。

まず、暗号化されていないファイル配置を禁止する方法は下記に記載されています。

AWS KMS で管理されたキー (SSE-KMS) によるサーバー側の暗号化を使用してデータを保護する

S3へのアクセスをバケットポリシーを使って必要なサーバのみアクセスを許可する方法は下記のステップで行うことができます。

  • IAMロールを作成し、S3へのアクセスを許可する
  • EC2インスタンス作成時にInstance Profileを設定し作成したIAMロールを割り当てる
  • S3バケットポリシーを設定し作成したIAMロールからのアクセスを許可する

具体的な設定方法

上記の設定を行うことでS3に安全に使用することができます。具体的な設定方法については別の記事でご紹介したいと思います。

関連記事

  1. AWSでCloudFrontを導入する際に注意する点

    AWS

    AWSでCloudFrontを導入する際に注意する点

    前回の記事でAWSでシステムを構築する際にはCloudFrontを利用…

  2. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWSでファイルや画像などを配置する場所として利用する場所はS3ですが…

  3. AWS

    AWSでLinuxサーバ上のログを自動的にS3に保存する方法

    AWSでLinuxサーバ上のApacheのアクセスログやアプリケーショ…

  4. AWSで安全なネットワーク設計を行うポイント

    AWS

    AWSで安全なネットワーク設計を行うポイント

    今回は、AWSにおいて安全なネットワーク設計を行いポイントについて…

  5. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法

    AWSに最初にアカウントを作るとルートユーザーというものが作られます。…

  6. AWS

    AWSを利用してPCI DSS準拠のシステムを構築する3つのメリット

    今回はAWSを利用してPCI DSS準拠のシステムを構築す…

最近の記事

  1. AWSで安全なネットワーク設計を行うポイント

    AWS

    AWSで安全なネットワーク設計を行うポイント
  2. AWS

    AWSで大規模障害発生時に被害を最小限にする方法
  3. AWS

    AWSでEC2インスタンスを安全に使うための3つの注意点
  4. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと
  5. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法
PAGE TOP