PCI DSSコンプライアンス

🔥 Vibe プロンプト

「支払い処理をPCI DSS準拠に:ネットワークセグメンテーション、暗号化、アクセス制御、ログ記録。」

PCI DSS 12要件

1. ファイアウォール
2. セキュア設定
3. 保存データ保護
4. 暗号化送信
5. アンチマルウェア
6. セキュアなアプリ
7. アクセス制限
8. ユーザー識別 + MFA
9. 物理的セキュリティ
10. ログ記録(1年保存)
11. 四半期スキャン + 年次ペンテスト
12. セキュリティポリシー

CDE(カード会員データ環境)

CDE(決済処理サーバー、トークン化DB、HSM)
  ↑ 分離
非CDE(Webサーバー、アプリサーバー、企業ネットワーク)

トークン化(要件3)

def tokenize(card_number):
    response = requests.post("https://tokenizer.example.com/tokenize",
        json={"pan": card_number},
        headers={"Authorization": f"Bearer {vault_token}"}
    )
    return response.json()["token"]

# トークンのみ保存(カード番号は保存しない!)
db.execute("INSERT INTO payments (order_id, token, amount) VALUES (%s, %s, %s)",
           (order_id, tokenized_card, 99.99))

保存データ暗号化(要件3.4)

key = vault.get_secret("payment-encryption-key")
cipher = Fernet(key)
encrypted_pan = cipher.encrypt(b"4111111111111111")

# 表示用マスキング(下4桁のみ)
masked = "************" + card_number[-4:]

ログ要件(要件10)

class PCILogger:
    def log_access(self, user, resource, action):
        # 変更不可のSIEMに送信
        self.logger.info(json.dumps({
            "type": "pci_access",
            "timestamp": datetime.utcnow().isoformat(),
            "user": user,
            "resource": resource
        }))

PCI DSS準拠レベル

| レベル | 年間取引数 | 検証 | |-------|-----------|------| | 1 | >600万 | オンサイト評価 + QSA | | 2 | 100万-600万 | SAQ + スキャン | | 3 | 2万-100万 | SAQ + スキャン |

ベストプラクティス

  • 支払い処理を外部委託(Stripe)= スコープ削減!
  • CVVやPINを保存しない
  • 全カードデータをトークン化
  • CDEを非CDEからセグメント化
  • 3Dセキュアを実装
  • 四半期ごとに暗号化キーをローテーション
  • HSMで鍵管理

章のまとめ

  • コアコンセプトと原理を理解
  • 実装方法とテクニックを習得
  • 一般的な問題と解決策に精通
  • 実際のプロジェクトに適用可能

さらに読む

  • 公式ドキュメントとAPIリファレンス
  • GitHubのオープンソース例
  • 技術書とオンラインコース
  • コミュニティディスカッションと技術ブログ

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!