[レポート]安全かつ迅速な開発を実現する PayPay の DevSecOps – AWS Security Roadshow Japan 2021 #awscloud #AWSSecurityRoadshow

AWS Security Roadshow Japan 2021で行われた「安全かつ迅速な開発を実現する PayPay の DevSecOps」のセッションレポートです
2021.11.11

こんにちは、臼田です。

本日はAWS Security Roadshow Japan 2021で行われた以下の講演のレポートです。

DevSecOps at PayPay achieving secure and fast development (安全かつ迅速な開発を実現する PayPay の DevSecOps)

本セッションでは、複数の AWS アカウントのセキュリティコンプライアンスを管理する際の課題と、DevSecOps チームが Infrastructure as Code、AWS Security Hub、オートメーションを使用してセキュリティコンプライアンスを実施する方法についてご説明します。

PayPay株式会社 DevSecOps Engineer, DevSecOps team, Product Division Julien Kasarherou PayPay株式会社 DevSecOps Engineer, DevSecOps team, Product Division Kuria Robert Kamau

レポート

  • PayPayは2018年に始まった
    • 急速にユーザーが増えた
    • 40ミリオンユーザー
    • 決済プラットフォームに様々なAWSサービスを利用している
    • WAF / GuardDuty / Shield / SSOなど
  • セキュリティは最重要課題
    • セキュリティを確保するために監視と自動化が必要Terraformを活用している
  • DevSecOpsは新しい取り組み
    • 開発ライフサイクルの各段階でセキュリティを取り込む
    • 日々の開発を支援
    • セキュリティチャンピオンを置いている
    • トレーニングを実施している
    • 自動化は非常に重要
  • インフラセキュリティ向上のために何が必要か
    • 手動は難しいから自動化が必要
    • コンプライアンス評価のためのコンプライアンス基準が必要
    • 調査に時間を書けないように情報を集約
    • タグ付けも重要
      • セキュリティで自動化した評価にも使える
  • Security Hubを活用している
    • 管理アカウントにすべてのアカウントを招待
    • スタンダードを有効化
    • ルールが適用される
    • S3が公開されているかなど
  • 修復と自動化
    • Security Hubは容易に拡張できる
    • AWSのソリューションを活用
      • すこしいじった
    • 完全なサーバーレスができているのはEventBridgeとLambdaのおかげ
    • Step Functionsで処理を自動化
    • 自動的に改ざんを防止
  • プレイブック
    • 新しいFindingsが出るために実行される
    • 最も使っているのは通知のみのプレイブック
    • 情報を追加して通知する
    • SNS1というルールにはそのトピックをKMS有効化する
    • 特定のリージョンに絞っている
  • 自動化が悪影響を与えないように段階的にリリースする
    • 全ての検知がニアリアルタイムで動いている
    • GuardDutyやCloudTrailを直接通知することでニアリアルタイムになる
    • MFAがなければ直ぐに対応
  • リソースのタグで処理を分ける
    • 開発チームを特定したり
    • 自動修復は保護手段として考える
  • DevSecOpsで一番時間がかかる
    • 根本原因
    • コードで管理
    • 修復方法をチームと話し合う
    • S3バケットへのブロックパブリックアクセス
    • 誤検知の場合はタグを使って自動的に対処

Terraformでの管理

  • IaCとは
    • インフラをコードで定義する
    • デプロイのスピードが向上する
    • 一貫性も確保できる
    • どのバージョンをどの環境に展開するか選択できる
    • 説明責任はポータビリティが向上
  • Terraformモジュール
    • 開発を標準化出来る
    • セキュリティ設定をまとめる
    • 変更しないで参照するだけで使える
    • グループ化できる
    • 静的なWebページがあった場合
      • いくつかのAWSサービスが必要
      • Terraformモジュールでグループ化できれば1つで使い回せる
  • モジュールの参考例
    • VPCで公開する環境を作る
    • フローログの追加やサブネットの設定など
    • 人によってセキュリティ設計が違うと脆弱性になる
    • 標準化が必要
    • モジュールを選択するところがある
    • PRを使ってデプロイする前に自動セキュリティチェックを行う
  • どう自動化するか
    • プランをトリガー
    • OPAで定義
    • セキュリティベストプラクティスをコード化
    • Regoでチェック
    • コメントが付くので確認しやすい
  • SAST
    • タグ
    • S3の公開設定や暗号化
    • ALBのHTTPSSecurity Groupの0.0.0.0/0など
  • OPAルール
    • タグは識別に使うため重要
    • PRで失敗理由を記述する
    • カスタムルールをカスタムしたくないならRegulaの公開ポリシーを活用するといい
    • 組み合わせて使うといい
    • 公開モジュールを利用できる
    • regulaはルールベースで確認できる

感想

DevSecOpsの取り組みが非常に参考になりますね。

OPAはこれと相性がいいですね。デプロイされる前にチェックするのも大事!