Slide 1

Slide 1 text

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.

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

© 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


Slide 10

Slide 10 text

© 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レイ ヤーに絞ってお話しします。

Slide 11

Slide 11 text

© 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

Slide 12

Slide 12 text

© 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

Slide 13

Slide 13 text

© 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 
 


Slide 14

Slide 14 text

© 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の事例 - 
 


Slide 15

Slide 15 text

© 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の事例 - 
 


Slide 16

Slide 16 text

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


Slide 17

Slide 17 text

© 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 
 


Slide 18

Slide 18 text

© 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のデプロイを禁止したり、動作中のアプリケーション のチェックが可能

Slide 19

Slide 19 text

© 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に変換して共通利用する

Slide 20

Slide 20 text

© 2021 eureka, Inc. All Rights Reserved. Pod Security Standerds(PSS)チェック 
 
 OPA/Conftest、Gatekeeperフロー図

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

© 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 
 


Slide 23

Slide 23 text

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


Slide 24

Slide 24 text

© 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 
 


Slide 25

Slide 25 text

© 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を検出する 
 


Slide 26

Slide 26 text

© 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を採用 
 


Slide 27

Slide 27 text

© 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 
 


Slide 28

Slide 28 text

© 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 
 


Slide 29

Slide 29 text

© 2021 eureka, Inc. All Rights Reserved. まとめ 
 
 今回紹介した内容をざっくり図示するとこんな感じ

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

© 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

Slide 32

Slide 32 text

© 2021 eureka, Inc. All Rights Reserved. We’re hiring! エウレカではエンジニアを積極採用中!
 カジュアル面談もお待ちしております!


Slide 33

Slide 33 text

33 © 2021 eureka, Inc. All Rights Reserved.