AWSでセキュリティグループはEC2やRDS(リレーショナルデータベースサービス)へのアクセスを制御するために使われます。クレジットカード業界のセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)に準拠するための環境をAWSを使う場合でもセキュリティグループは非常に重要です。
まず、PCI DSSの要件1では下記のようにファイアウォールの構成維持が求められています。
1.2 信頼できないネットワークとカード会員データ環境内のすべてのシステムコンポーネントの接続を制限する、ファイアウォール構成を構築する。
1.2.1 着信および発信トラフィックを、カード会員データ環境に必要なトラフィックにし、それ以外のすべてのトラフィックを特定的に拒否する
つまりファイアウォールを使い、カード会員データ環境(Cardholder Data Environment、CDE)とそうでない環境を分け、クレジットカードを扱う環境への通信を特定し、必要最低限にする必要があります。
AWSにおいて、そのために使用するのがセキュリティグループですので非常に重要な役割があります。
AWSにおいてPCI DSS準拠するためにセキュリティグループを使うためのポイントは下記の通りです。
- カード会員データ環境へのインバウンド通信を必要なサーバ、ポート番号に限定する
- 対象の指定はセキュリティグループIDを使う
カード会員データ環境へのインバウンド通信を必要なサーバ、ポート番号に限定する
それほどセキュアにする必要がない環境であればVPC内からの通信は全て許可するといった設定をしている場合もあるかと思いますが、PCI DSS準拠や個人情報を扱う環境においては、まずクレジットカード情報や個人情報を配置するセグメントをできる限り狭くすることが重要になってきます。そうすることで審査の対象範囲も狭くでき、準拠に必要な作業を減らすことができるからです。そのためには、セキュリティグループを使って、通信を必要な対象のみに制限します。
例えば、RDSにカード情報を保存しており、EC2インスタンスからRDSに対してアクセスする必要がある場合には、クレジットカード情報にアクセスする必要があるEC2にのみ、データベースで使用するポートのみのアクセスを許可します。許可する必要のないEC2インスタンスにも許可してしまうと、そのインスタンスも本来は入れる必要のない、カード会員データ環境に含まれてしまい、様々なPCI DSSの要件を従うための対策を行なっていく必要があります。
対象の指定はセキュリティグループIDを使う
1つ目のポイントとも関連してくるのですが、セキュリティグループでインバウンドの通信許可の対象を指定する際に、IPアドレスではなく、セキュリティグループIDを指定します。
IPアドレスを使わない方が良い理由は、パブリッククラウドでは自社データセンターと違って、IPアドレスはサーバの作り直しなどで常に変動する前提で考える必要があるからです。
IPアドレスで通信許可をしてしまうと、サーバが作り直された際に都度アクセスの許可を設定し直す必要があります。
イメージとしては、下記のような形になります。
例えばRDSを作るときにセットでセキュリティグループA(クライアント用)とセキュリティグループB(サーバ用)の2つを作ります。
そして、セキュリティグループBはアクセスを制御したいインスタンスに設定します。
次に、セキュリティグループAはアクセスを許可したいサーバに紐付けを行います。
この方式だとセキュリティグループの紐付けだけで簡単にアクセス許可をすることができます。
セキュリティグループAの内容はダミーでよく、127.0.0.1/32に対してICMPを許可するなどしておき、EC2インスタンス自体へのアクセス制限はそのEC2インスタンスに個別で設定されているセキュリティグループで行うようにします。(図の白い枠で書かれているセキュリティグループ)
具体的な設定方法は下記の通りです。
ぜひ参考にしてみてください。