$30 off During Our Annual Pro Sale. View Details »

[JAWS DAYS 2022 - Satellites]PairsにおけるEKSセキュリティの取り組み

ogady
October 08, 2022

[JAWS DAYS 2022 - Satellites]PairsにおけるEKSセキュリティの取り組み

JAWS DAYS 2022 - Satellites
https://jaws-ug.doorkeeper.jp/events/140008

ogady

October 08, 2022
Tweet

More Decks by ogady

Other Decks in Technology

Transcript

  1. 1
    © 2021 eureka, Inc. All Rights Reserved.
    CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy
    All Hands Meeting
    PairsにおけるEKSセキュリティの取り組み
    JAWS DAYS 2022
    2022/10/08
    © 2021 eureka, Inc. All Rights Reserved.

    View Slide

  2. © 2021 eureka, Inc. All Rights Reserved.
    Takumi Ogawa (twitter: @_ogady_)
    - 株式会社エウレカ
    - SREチーム
    - SRE Lounge/SRE NEXT運営
    - 守備範囲
    - インフラ構築〜監視運用、セキュリティ対応、必要に
    応じてプログラムの修正やパフォーマンス最適化
    etc..
    - 最近は趣味で絵を書いてます
    About Me

    View Slide

  3. © 2021 eureka, Inc. All Rights Reserved.
    Agenda
    - Pairsの紹介
    - PairsにおけるEKSセキュリティの取り組み
    - EKSセキュリティの概要
    - PairsのEKSセキュリティ
    - まとめ

    View Slide

  4. © 2021 eureka, Inc. All Rights Reserved. 4
    恋活・婚活マッチングアプリ
    真剣な交際・結婚を望むすべての人向け
    日本で最も使われている恋活・婚活マッチングアプリ
    日本人特有の交際相手探し、恋愛に対する障壁を和らげる様々な自
    己紹介やコミュニケーション機能
    24時間365日オペレーターが待機し公的身分証明書の確認、お問い
    合わせ、パトロール監視に対応
    25歳~34歳が最多利用者年齢

    View Slide

  5. © 2021 eureka, Inc. All Rights Reserved.
    ここから本題
    - PairsにおけるEKSセキュリティの取り組み -

    View Slide

  6. © 2021 eureka, Inc. All Rights Reserved.
    話すこと
    - EKSクラスターに対するセキュリティプラクティス概要(後述)
    - Pairsで導入しているEKSセキュリティプラクティス
    話さないこと
    - EKSクラスター以外のセキュリティの詳細について
    - Container Image、Webアプリケーションの脆弱性対策など
    - セキュリティリスクとその評価ついて
    本セッションについて

    View Slide

  7. © 2021 eureka, Inc. All Rights Reserved.
    EKSは複数のレイヤーごとにセキュリティの関心ごとがあり、どのレイヤーで何を守るのかの判断が難し
    い。
    - AWSセキュリティ
    - Kubernetesセキュリティ
    - Container セキュリティ
    - アプリケーションセキュリティ
    - etc…
    EKSセキュリティの概要

    View Slide

  8. © 2021 eureka, Inc. All Rights Reserved.
    EKSセキュリティの概要
    具体的にどのようなセキュリティリスクがあってどう対策するべきなのか?
    - Kubernetesのセキュリティについては公式のドキュメントがあり、チェックリストなども用意されている
    - EKSに特化したものとして、AWSが作成しているEKS Best Practice Guideというドキュメントがある
    - 古くなっている記述も一部あるが、EKSのプラクティスが網羅的にまとまっているので目を通して
    おくと良い

    View Slide

  9. © 2021 eureka, Inc. All Rights Reserved.
    PairsではEKS on EC2を使っているが、Worker Nodeの種類によって責任共有モデルが変わる。
    PairsではManaged Node Groupを採用しており、主にWorker Nodeのセキュリティ対策が必要。
    EKSの責任共有モデル
    (ref: EKS Best Practices Guides -Amazon EKS Best Practices Guide for Security-) 

    © 2022 Amazon Web Services | Images are licensed under CC BY 4.0


    View Slide

  10. © 2021 eureka, Inc. All Rights Reserved.
    Kubernetesのドキュメントではクラウド ネイティブセキュリティの4C(Cloud、Cluster、 Container、
    Code)として階層分けされている。
    Kubernetesのセキュリティ
    (ref: Overview of Cloud Native Security | Kubernetes) 

    © 2022 The Kubernetes Authors | Images are licensed under CC BY 4.0

    今回のセッションではClusterレイ
    ヤーに絞ってお話しします。

    View Slide

  11. © 2021 eureka, Inc. All Rights Reserved.
    - Identity and Access Management
    - Pod Security
    - Runtime Security
    - Network Security
    - Multi-tenancy
    - Detective Controls
    EKS Best Practice Guideに基づく、Managed Kubernetes Serviceを使用する際のセキュリティ領域
    EKSセキュリティ領域


    - Infrastructure Security
    - Data Encryption and Secrets Management
    - Regulatory Compliance
    - Incident Response and Forensics
    - Image Security

    View Slide

  12. © 2021 eureka, Inc. All Rights Reserved.
    今回セッションではPairsのEKSで導入しているものの内、EKSクラスターに関連する領域に絞って紹介し
    ます。
    今回ご紹介する内容


    - Identity and Access Management
    - Pod Security
    - Runtime Security
    - Network Security
    - Multi-tenancy
    - Detective Controls
    - Infrastructure Security
    - Data Encryption and Secrets Management
    - Regulatory Compliance
    - Incident Response and Forensics
    - Image Security

    View Slide

  13. © 2021 eureka, Inc. All Rights Reserved.
    Kubernetesには、ID管理とアクセスコントロール管理の仕組みが提供されている一方で、AWSレイヤー
    でも同様の機能としてIAMが存在し、この2つを協調させてセキュリティを担保する。
    認証/認可を適切に制御することで、認証情報を利用した不正操作の影響範囲を制限できる。
    EKS Best Practice Guideでは、
    - Controlling Access to EKS Clusters(EKSクラスターへの認証/認可管理)
    - Pods Identities(Podに付与する認証/認可管理)
    の二つに対してさまざまなプラクティスが紹介されている。
    Identity and Access Management


    View Slide

  14. © 2021 eureka, Inc. All Rights Reserved.
    Identity and Access Managementに対して大きく二つの技術要素を採用。
    - aws-auth
    - 設定情報をaws-auth ConfigMapに記述し、AWS IAMをKubernetesのRBAC機構と連携できる
    - 主にControlling Access to EKS Clustersの文脈で使用
    - IRSA
    - AWS IAM ロールをKubernetesサービスアカウントにマッピングすることができる
    - AWSリソースに対してアプリケーションごとのアクセスコントロールが可能になる
    - クラスターのロールはあくまでNodeが動くために必要なものなので、Pod単位で固有の権限を
    割り当てたい
    - 主にPods Identitiesの文脈で使用
    Identity and Access Management - Pairsの事例 -


    View Slide

  15. © 2021 eureka, Inc. All Rights Reserved.
    Controlling Access to EKS Clusters
    - AWS IAM Identity Center & Oktaに移譲する事
    で、ユーザー管理を一元化できる
    - Kubernetesでの単独認証は行なわず、aws-auth
    のみを利用する事でAWS IAMでアクセスコント
    ロール管理ができる
    - 各IAMには限られたスコープに限られた権限を付
    与する
    - また、EKSを作成したロールにデフォルトで
    system:masters が自動的に付与されるので専用
    のロールでEKSを作成する
    Identity and Access Management - Pairsの事例 -


    View Slide

  16. © 2021 eureka, Inc. All Rights Reserved.
    Pods Identities
    - AWSにアクセスするPodは一部のaws-nodeのよ
    うなEKS固有のコンポーネントを除き、IRSAを必ず
    利用する
    - IMDSv2 を使用する
    - サービス アカウントトークンの自動マウントを無効
    にする
    Identity and Access Management - Pairsの事例 -


    View Slide

  17. © 2021 eureka, Inc. All Rights Reserved.
    Pod Security Standerds(PSS)
    - Kubernetesの公式ドキュメントに、Pod Security Standards が定義されており、これを遵守するこ
    とで推奨されるPodのセキュリティを担保できる
    - PSSに準拠することで、特権コンテナやHostPathマウントによるHost侵害、特権昇格から守ること
    ができる。
    - PSSのProfileはPrivileged → Baseline → Restrictedの三段階存在する
    - aws-nodeや、ロギングエージェント用のPodなどは特権的アクセスが必要なのでPrivilegedで
    許容する
    - Pairsでは、サービスアプリケーションのPodに対して、始めはBaselineでPSSを導入し最終的
    にはRestrictedなApplyを目指す方針
    Pod Security


    View Slide

  18. © 2021 eureka, Inc. All Rights Reserved.
    Pod Security


    Pod Securityに対して大きく二つの技術要素を採用
    - OPA/Conftest
    - OSSの汎用ポリシーエンジンであるOPAと、OPAを利用してJSON、YAMLなどをチェックできる
    Conftestを使用することで、Kubernetes manifestsのCIチェックができる
    - Gatekeeper
    - Gatekeeperは、KubernetesのAdmission Controllerとして動作するカスタムコントローラー
    - OPAに設定されたPolicyに反するmanifestsのデプロイを禁止したり、動作中のアプリケーション
    のチェックが可能

    View Slide

  19. © 2021 eureka, Inc. All Rights Reserved.
    Pod Security Standerds(PSS)チェック


    Code Scanning(Manifestsのチェック)
    - Policy as a Code (PaC)をOPA/Rego/Conftestを用いてCIに導入することでコードレベルでPSSを
    担保している
    - Aqua Securityが実装してくれているPSS Rego Policyを参考に実装
    Real Infra Check(実際に動いているPodのチェック)
    - Gatekeeperで監視/チェックする(Pod Security AdmissionはEKS version1.23からbetaなので見送
    り)
    - Code Scanningで使用しているOPA/ConftestのRego policyをkonstraintでGatekeeper用の
    ConstraintTemplateに変換して共通利用する

    View Slide

  20. © 2021 eureka, Inc. All Rights Reserved.
    Pod Security Standerds(PSS)チェック


    OPA/Conftest、Gatekeeperフロー図

    View Slide

  21. © 2021 eureka, Inc. All Rights Reserved.
    従来のPairsではアプリログをHostPathから読み込んでいたため、PSS BaselineのHostPath Volumes禁
    止の項目を満たせていなかったが、application用のlog collectorを作成し、PSSに準拠する対応を行っ
    た。
    Pod Security - 実対応例 -


    Privileged
    Baseline
    Privileged
    Baseline not met

    View Slide

  22. © 2021 eureka, Inc. All Rights Reserved.
    Network Securityに対して大きく二つの技術要素を採用。
    - Network Policy
    - デフォルトでは、所属するnamespaceに関わらず、Pod間が自由に通信可能な状態だが、
    NetworkPolicyを導入することでPod間通信を制御できる
    - Security groups for pods
    - Security groups for podsを使うことで、AWSのSecurity GroupとKubernetes Podを統合できる
    - マルチテナントクラスターで運用している場合、ALBやDBとの通信をアプリケーションごとに分離する
    ためにSecurity groups for podsを使用する
    - 導入に必要な前提条件が多いのでよくチェックする(Instance Typeの制限、Calico Network Policy
    を使っている場合の設定値など)
    Network Security


    View Slide

  23. © 2021 eureka, Inc. All Rights Reserved.
    Network Policy
    - Calico add-onを導入しNetwork Policyを有効化
    - 全てのIngress通信はホワイトリストで管理
    - クラスタ全体の関心ごとを持つものは、全ての
    名前空間へアクセス可能とする
    - その他は必要なアクセスだけを許容する(core
    DNS, alb-controllerなどは別の名前空間から
    のアクセスが必要)
    - Egressの完全なホワイトリスト制御は現時点では
    行っていない
    Network Security


    View Slide

  24. © 2021 eureka, Inc. All Rights Reserved.
    Security groups for pods
    - L3,L4レイヤーはSecurity Groupで守る
    - Network PolicyはあくまでもKubernetes
    内部の通信制御
    - 主にALB to Pod、Pod to Data Sourceのアク
    セスコントロールで利用
    - マルチテナントクラスターでもアプリケーション
    単位のアクセスコントロールが可能
    Network Security


    View Slide

  25. © 2021 eureka, Inc. All Rights Reserved.
    Detective Controls
    監査ログ有効化や脅威検知ツールの導入により、脅威発生の早期段階で検知し対応可能な状態にす
    る。
    - Kubernetes APIサーバー、コントローラーマネージャー、スケジューラのログ、監査ログ出力を有
    効化する
    - ref: Enabling and disabling control plane logs | Amazon EKS
    - GuardDutyのKubernetes Protectionを有効にする
    - ref: Kubernetes Protection in Amazon GuardDuty | Amazon GuardDuty
    - CloudTrailでIRSA経由のAWSリソースに対するAPI Callを検出する


    View Slide

  26. © 2021 eureka, Inc. All Rights Reserved.
    Infrastructure Security
    ホストに対して直接行われる攻撃のリスクを軽減する。
    - EKS Optimized AMI を利用
    - Patch Managementについては、Optimized AMIのアップデートに追従する方針
    - エウレカではAWSの権限をRBACで管理しており、EKSワーカーノードへのアクセスはAWS IAM
    Identity Center(旧AWS SSO) x AWS Systems Manager Session Managerで制御できている
    - CIS Benchmark準拠チェックはBridgecrewがSecurityチームによって導入されている
    - kube-benchなども選択肢としてあったが、弊社では元々Bridgecrewを他でも使用していたた
    め今回はBridgecrewを採用


    View Slide

  27. © 2021 eureka, Inc. All Rights Reserved.
    Data Encryption
    データ暗号化によって、復号権限を持たないものからのアクセスからデータを守ることができる。
    - worker node側のEBSはデフォルト暗号化設定を有効にしている
    - control plane側のetcdに格納されたSecretsはデフォルトだと暗号化されないので、KMSを使用し
    てエンベロープ暗号化を行っている
    - ref: Amazon EKS が AWS KMS を使った Secrets のエンベロープ暗号化に対応
    Data Encryption and Secrets Management


    View Slide

  28. © 2021 eureka, Inc. All Rights Reserved.
    Secrets Management
    Secrets管理を外部のSecrets Providerにすることで管理が容易になる。また、manifestsに記載する必
    要がなくなり漏洩リスクも軽減できる。
    - Podから読み込むSecretsはexternal secretsを使用して、AWS SSM parameterをKubernetes
    Secretsとして作成し、読み込む方式をとっている
    - ref: https://github.com/external-secrets/external-secrets
    Data Encryption and Secrets Management


    View Slide

  29. © 2021 eureka, Inc. All Rights Reserved.
    まとめ


    今回紹介した内容をざっくり図示するとこんな感じ

    View Slide

  30. © 2021 eureka, Inc. All Rights Reserved.
    さいごに


    セキュリティ対策と一言で言ってもプラクティスはたくさんあるので、体系立ったドキュメントを元に、各領
    域ごとに整理した上でできるところから始めていくと、導入を進めやすいと思います。
    今回紹介したものは比較的取り組みやすいものが多いので、悩んでる方の参考になれば幸いです。

    View Slide

  31. © 2021 eureka, Inc. All Rights Reserved.
    参考文献/リファレンス


    - セキュリティ | Kubernetes: https://kubernetes.io/ja/docs/concepts/security/
    - Overview of Cloud Native Security | Kubernetes: https://kubernetes.io/docs/concepts/security/overview/
    - Amazon EKS Best Practices Guide: https://aws.github.io/aws-eks-best-practices
    - aws-auth | Amazon EKS: https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/add-user-role.html
    - IRSA | Amazon EKS: https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/iam-roles-for-service-accounts.html
    - Pod Security Standerds | Kubernetes: https://kubernetes.io/ja/docs/concepts/security/pod-security-standards/
    - Aqua Security(PSS Policy): https://github.com/aquasecurity/defsec/tree/master/internal/rules/kubernetes/policies/pss
    - konstraint: https://github.com/plexsystems/konstraint
    - Network Policy | Kubernetes: https://kubernetes.io/ja/docs/concepts/services-networking/network-policies/
    - Pod Security Group | Amazon EKS: https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/security-groups-for-pods.html
    - Calico add-on | Amazon EKS: https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/calico.html
    - Kubernetes Protection in Amazon GuardDuty | Amazon GuardDuty: https://docs.aws.amazon.com/guardduty/latest/ug/kubernetes-protection.html
    - Enabling and disabling control plane logs | Amazon EKS:
    https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html#enabling-control-plane-log-export

    View Slide

  32. © 2021 eureka, Inc. All Rights Reserved.
    We’re hiring!
    エウレカではエンジニアを積極採用中!

    カジュアル面談もお待ちしております!


    View Slide

  33. 33
    © 2021 eureka, Inc. All Rights Reserved.

    View Slide