今回は、AWSを使ってクレジットカード業界のセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)を満たすためにどのようなサービスを使用していけばよいかお話しします。
PCI DSSとは
PCI DSS(Payment Card Industry Data Security Standard)とは、カード会員情報の保護を目的として、国際ペイメントブランド5社(アメリカンエキスプレス、Discover、JCB、マスターカード、VISA)が共同で策定したカード情報セキュリティの国際統一基準です。
2018年6月から施行された割賦販売法改正によりEC事業者は1件でもクレジットカードを保持する場合にはPCI DSSへの準拠が求められます。
PCI DSSは12の要件から成り立っており、その要件を満たすことで、安全なシステムを構築する必要があります。
また、クレジットカード情報を扱うシステムに限らず、個人情報を保持したり金融関係のシステムなど高いセキュリティを保つ必要があるシステムにおいて、PCI DSSの枠組みに従うことで安全なシステムを構築できると思います。
各PCI DSS要件とAWSにおける対応サービス
PCI DSSの要件の一覧と対応するそれに対応するAWSサービスは下記の通りです。
要件番号 | 要件名 | 対応するAWSサービス |
1 | カード会員データを保護するために、ファイアウォールをインストールして構成を維持する | セキュリティグループ |
2 | システムパスワードおよび他のセキュリティパラメータにベンダ提供のデフォルト値を使用しない | なし |
3 | 保存されるカード会員データを保護する | Key Management System |
4 | オープンな公共ネットワーク経由でカード会員データを伝送する場合、暗号化する | AWS Certificate Manager |
5 | すべてのシステムをマルウェアから保護し、ウイルス対策ソフトウェアまたはプログラムを定期的に更新する | なし |
6 | 安全性の高いシステムとアプリケーションを開発し、保守する | AWS WAF |
7 | カード会員データへのアクセスを、業務上必要な範囲内に制限する | AWS IAM |
8 | システムコンポーネントへのアクセスを識別・認証する | AWS IAM |
9 | カード会員データへの物理アクセスを制限する | AWSの責任範囲のため対応不要 |
10 | ネットワークリソースおよびカード会員データへのすべてのアクセスを追跡および監視する | VPCフローログ |
11 | セキュリティシステムおよびプロセスを定期的にテストする。 | AWS Inspector |
12 | すべての担当者の情報セキュリティに対応するポリシーを維持する。 | なし |
以下に具体的な各要件ごとの対応方法を簡単に述べていきます。
各PCI DSS要件ごとの対応方法
それでは一つ一つの要件の対応方法を実際に見ていきましょう。
要件1. カード会員データを保護するために、ファイアウォールをインストールして構成を維持する
AWSではセキュリティグループという通信を制限する機能がありますので、それを使いシステムをセグメントに分けます。
環境 | 説明 | セキュリテイレベル |
カード会員環境 | クレジットカード情報を保持する最も厳しく管理しなくてはならない環境 | 高 |
カード会員環境と何らかの通信をする環境 | クレジットカード情報は扱わないが、カード会員環境と何らかの通信を行う環境 | 中 |
対象外の環境 | クレジットカード会員環境と一切通信を行わない環境 | 低 |
カード会員環境が広ければ広いほど要求される事項は多くなり、対応すべき項目は多くなります。
そのため、セキュリティグループを使って、最低限必要な通信のみを許可し、カード会員環境をできる限り狭くすることが重要になってきます。
要件2. システムパスワードおよび他のセキュリティパラメータにベンダ提供のデフォルト値を使用しない
こちらはEC2インスタンスに置いて、標準で作成されているユーザー(ec2-userなど)を使用不可能にするなどの対応を個別にしていく必要があります。
要件3. 保存されるカード会員データを保護する
AWSの場合には、S3(クラウドストレージ)やRDS(リレーショナルデータベース)がデータの保存場所として使われる場合が多いと思います。
その場合は、Key Management Systemにより、保存されるデータの暗号化を行います。
要件4. オープンな公共ネットワーク経由でカード会員データを伝送する場合、暗号化する
AWSでWebサービスをインターネットを介して公開する場合には、ELBやCloudFrontのHTTPS機能を使って暗号化を行う必要があります。
その際にも使用するプロトコル(SSL/TLSのバージョン)や暗号化方式についても注意が必要で、デフォルトの設定では弱い暗号化方式になってしまう場合がありますので安全なものを使用します。
要件5. すべてのシステムをマルウェアから保護し、ウイルス対策ソフトウェアまたはプログラムを定期的に更新する
こちらはEC2上で動いているプログラムを最新の状態に保ち脆弱性が無いように利用者の責任で運用する必要があります。
要件6. 安全性の高いシステムとアプリケーションを開発し、保守する
AWSのサービスではAWS WAFというWebアプリケーションファイアウォールの機能がありますので、CloudFrontやアプリケーションロードバランサーに導入して利用できます。
要件7. カード会員データへのアクセスを、業務上必要な範囲内に制限する
IAMユーザー、グループ、ロールのポリシーを使って、必要なサーバやユーザーには必要な権限のみを与えるようにします。
要件8. システムコンポーネントへのアクセスを識別・認証する
要件7と同様IAMを使い制限を行います
要件9. カード会員データへの物理アクセスを制限する
物理環境のセキュリティについてはAWSの責任範囲であり、AWSのサービスを利用している限りではユーザー側での対応は不要です。
要件10. ネットワークリソースおよびカード会員データへのすべてのアクセスを追跡および監視する
まずネットワークの通信ログについてはVPCフローログが利用できます。
次に、AWSのリソースに対する設定変更であればCloudTrailにより追跡が行えます。
その他、Linuxサーバ内のユーザー認証の履歴など保持しなければならないログについてはKinesisエージェントを使い、S3に送ることができます。
CloudFrontやELBのアクセスログについてもS3に保存する機能がありそちらを利用します。
要件11. セキュリティシステムおよびプロセスを定期的にテストする。
こちらはAWSのサービスの場合はAWS Inspectorというものが利用できるようですが、エージェントのインストールが必要なようなので、特にそれにこだわる必要はないかなと思います。
要件12. すべての担当者の情報セキュリティに対応するポリシーを維持する。
こちらの要件についてはAWSということに限らず、ポリシーの文書化を進めていく必要があります。
以上、PCI DSSの要件の一覧とAWSにおける対応方法について説明しました。
一つ一つの要件についての具体的な説明はまた別の記事で説明したいと思います。