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

    AWSでEC2インスタンスを安全に使うための3つの注意点

    今回はAWSでEC2インスタンスを起動した際に、安全に使うために行った…

  2. AWS

    AWSでCloudFrontを使った方が良い理由

    今回はAWSでCloudFrontを使用する際に、設定しておいた方が良…

  3. AWS

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

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

  4. Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    AWS

    Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    改ざん検知はPCI DSSなどセキュリティを強化する際には、必ず必要に…

  5. PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント

    AWS

    PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント

    AWSでセキュリティグループはEC2やRDS(リレーショナルデータベー…

  6. AWS

    AWSでコンプライアンスのための監査ログを取得する方法

    PCI DSSやIT内部統制などのコンプライアンスの観点でAWS上で監…

最近の記事

  1. webサイトをhttps化するメリットと注意点

    PCI DSS

    webサイトをhttps化するメリットと注意点
  2. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

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

    PCI DSSでデータを暗号化して保存する際の4つのポイント
  4. AWS

    AWSでCloudFrontを使った方が良い理由
  5. AWSコンソール用の安全なユーザーの作成方法

    AWS

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