koukiblog

たぶんweb系の話題

GKE環境でPCI-DSS準拠のシステムを構築した事例

GCP, GKEを使ってPCI-DSS準拠のシステムを作った事例。この動画を見て気になったところをまとめてみました。仮想通貨販売所の話は興味なかったので省略 www.youtube.com

動画メモ

PCI-DSS準拠の方針 

課題

リソース不足

解決策
  • PCI-DSSの対象とするスコープを減らす。個人情報、カード情報。
  • GCP Project、VPCを別にする
  • ログイン可能なユーザーを限定する
  • 専用のG SuiteドメインからOneLoginを利用してログイン
  • One Loginはパスワード要件を満たすため

アーキテクチャの全体像

クレジットカード情報、個人情報はGCPプロジェクトのみで扱うようになっている。他の情報は全て別システム。

HTTPSアクセスはFastly経由。Triple DES, TLS1.1を無効化したかったため。

FastlyのLogging endpointsを BigQuery, TCP to Kuberntes Clusterに指定している。

Fastly- Fluentd Cluster
  • Deployment Containers

    fastlyのログを整形してStackDriverに送信している

  • CronJobs:

    BigQueryに格納されたFastlyのログからアクセス数が異常なIPをブロックする(またはその逆)のgolangプロセス

Payment Proxy Cluster
  • Deployment Containers

    payment-proxy: 本体。 golang

    digest: Argon2 hash計算用サービス in ruby Sinatra

    cloudsql-proxy: そのまま

    nginx: ReverseProxy

    ossec: 侵入検知プロセス(IDS) Nginxのログ監視・結果を出力

Virus Scan Cluster
  • Deployment Containers clamav: 他clusterにいる各containerは立ち上げ時にclamscan

  • Vulnerability Scan Cronjob

    containerの脆弱性スキャン。OSSのclairを利用している。

苦労した点良かった点
  • 事例が見つからない。オンプレ前提の項目が多くどう満たせばよいかわからなかった。→頑張って事例作った
  • ファイル変更検知をbastionからdocker diffすることで行える
  • 本番のStackdriver Debugger使える
  • SSHも自動的に二段階認証になる
  • スケーラビリティもついてくる
おまけ

外部のコンサルタントを交えて行われるPCI-DSS対応のための審査をタスクとルールブックはGithub Issueで管理

感想

PCI-DSS監査対象になるシステムを最小にして、専用のGCPプロジェクト・ネットワーク、GSuiteアカウントで運用しているということでした。これ自体はまぁそうなるよなーという感じ。

cloudsql-proxy使っているということは、CloudSQLのエンドポイントはグローバルに開いていてサービスアカウントでの認証になっているはずで監査で何か言われないのかちょっと気になった。去年の発表だし、いまはプライベートIPモード使っているのかな。

ウイルススキャン、侵入検知、ファイル変更検知はオンプレやIaaSベースではよく聞くけど、コンテナベースのアーキテクチャでどうやるのかあまりイメージついてなかったので勉強になりました。特にファイル変更検知をdocker diffで簡単にできるのは気づかなかった。

監査をGithub Issueで管理するように進めてくれるのは、担当者レベルでがんばってもなかなか難しそう。会社からのバックアップがあったのだと思うので、よい文化だなーと思いました。

今までこういうメモは社内wikiに雑にまとめていたのですが、転職回数増えてくると社内wikiに書いてもいつか見れなくなってしまうしなー、と思うようになってきたので、自分のブログに載せていくことにしました。