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
苦労した点良かった点
- 事例が見つからない。オンプレ前提の項目が多くどう満たせばよいかわからなかった。→頑張って事例作った
- ファイル変更検知を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に書いてもいつか見れなくなってしまうしなー、と思うようになってきたので、自分のブログに載せていくことにしました。