SlideShare a Scribd company logo
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driverを開発し
⾃社プライベートクラウドにより適した
安全なKubernetes Secrets管理を実現した話
ヤフー株式会社 Katsuya Yamaguchi
公開
©2022 Yahoo Japan Corporation All rights reserved.
簡単な⾃⼰紹介
• ヤフー株式会社 ⼊社6年⽬(2017年~)
• 業務で書く、使う(⼤⼩ありますが)
o go, Java, Typescript, C/C++,…
o Terraform, Vault, OPA,…
• ⼿広くやっています
2
公開
©2022 Yahoo Japan Corporation All rights reserved.
どんな仕事をしているのか
• ⼤規模なシークレット管理システム(Secrets Manager)
• シークレット取得のための社内ユーザー向けクライアントライブラリ
• 補助プロダクトの開発(Daemon, Docker container, PaaS Application)
3
社内のデータ保護に関するプロダクトの開発・保守
公開
©2022 Yahoo Japan Corporation All rights reserved.
このセッションについて
この資料では以下のような略称を使います。
⚠Kubernetes -> K8s
⚠Secrets Store CSI Driver -> SSCD
⾃社K8s基盤において、より安全にシークレットの取得ができるようにSecrets
Store CSI Driverとそれと連携するProviderを開発し、プラットフォームレベル
でサポートできるようにしました
本セッションでは社内での適⽤例をベースに、具体的にどのようなことを⾏っ
たかを説明します
公開
©2022 Yahoo Japan Corporation All rights reserved.
本⽇のアジェンダ
1. 弊社プライベートクラウドにおけるシークレット管理の課題
2. Secrets Store CSI Driverとは︖
3. システム概要
4. デモ
5. まとめ
5
©2022 Yahoo Japan Corporation All rights reserved.
公開
弊社プライベートクラウドにおけるシークレット管理の課題
6
公開
©2022 Yahoo Japan Corporation All rights reserved.
Secrets Managerとは
7
弊社プライベートクラウドにおけるシークレット管理の課題
Azure Key Vault
AWS Secrets Manager
GCP Secret Manager
パブリッククラウドでは ⾃前で構築可能
• APIキー、データベースの認証情報、OAuthトークンなどを⼀元管理
• デプロイ時や、アプリケーションの任意のタイミングでシークレットを取得
公開
©2022 Yahoo Japan Corporation All rights reserved.
多数のコンピューティング基盤を持つ
弊社プライベートクラウドにおけるシークレット管理の課題
8
Secrets Manager
コンピューティング基盤
ZCP / ZAP (K8s)
IaaS
PaaS
FaaS
Pod
Server
Application
Function
連携
IAM
要件・規模によって
サーバー、アプリケーションを管理
公開
©2022 Yahoo Japan Corporation All rights reserved.
ZCP, ZAPが展開するプライベートクラウド環境
9
弊社プライベートクラウドにおけるシークレット管理の課題
ZCP ZAP
ZCPをベースとしたマルチK8sのアプリケーション実
⾏基盤で、ZAP管理者がK8sクラスタを管理している
ユーザーはクラスタの管理をしなくていい
マルチテナントK8s
シングルテナントK8s
シングルテナントK8s
K8s as a Service基盤で、ユーザーに専⽤の
K8sクラスタを提供する
ユーザーはK8sクラスタの管理が必要
ZAP管理者
公開
©2022 Yahoo Japan Corporation All rights reserved.
K8s環境でのシークレットの扱い⽅の選択肢
弊社プライベートクラウドにおけるシークレット管理の課題
10
社内ルールでGitOpsは推奨されていないため除外
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
11
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
12
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
公開
©2022 Yahoo Japan Corporation All rights reserved.
課題︓シークレットの安全性と管理
弊社プライベートクラウドにおけるシークレット管理の課題
13
Deploy
CI/CDパイプライン
パイプライン上で設定・管理されている
シークレット
ユーザー⾃⾝で管理するシークレット Deploy
• シークレット管理が分散する
• シークレットを⼀旦⼿元に置くなど
の危険性も⾒逃せない
シークレットをK8s Secretから
使⽤する
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
14
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
公開
©2022 Yahoo Japan Corporation All rights reserved.
課題︓サイドカーコンテナの扱い
弊社プライベートクラウドにおけるシークレット管理の課題
15
シークレット取得のためのサイドカーコンテナを
ユーザー⾃⾝が設定し管理しなければならない
Sidecar Container
App Container
Secrets Manager
IAM
• リソースが無駄
• トラブルシューティングが難しい
サイドカーの設定YAML
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
16
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
公開
©2022 Yahoo Japan Corporation All rights reserved.
課題︓認証情報の管理(認証基盤側の問題でもある)
弊社プライベートクラウドにおけるシークレット管理の課題
17
漏洩のリスクがある
Sidecar Container
App Container
Secrets Manager
IAM
シークレット取得のための
認証情報
サイドカーの設定YAML
認証情報がK8s Secretとしてデプロイ
されており管理もユーザー次第
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
18
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
公開
©2022 Yahoo Japan Corporation All rights reserved.
課題︓シークレット取得におけるユーザーの負担
弊社プライベートクラウドにおけるシークレット管理の課題
19
シークレットの取得が完了するまでサービスが公開されないよう
に命令的な処理を書く必要がある
導⼊の際にYAMLやサービスの修正をしなければならない
公開
©2022 Yahoo Japan Corporation All rights reserved.
CSI Driver導⼊前の課題
弊社プライベートクラウドにおけるシークレット管理の課題
20
Secrets Manager⽤のサイドカーコンテナを使う
K8s Secretリソースを使う
o シークレットの安全性と管理
o サイドカーコンテナの扱い
o 認証情報の管理
o シークレット取得におけるユーザーの負担
よりプラットフォームに適したシステムが欲しい
公開
©2022 Yahoo Japan Corporation All rights reserved.
具体的な実現⽅法の検討
弊社プライベートクラウドにおけるシークレット管理の課題
21
• まずは既存のプロダクトを使うことで実現できないかを探る
• ⾃前でコントローラーを実装するのは最終⼿段
公開
©2022 Yahoo Japan Corporation All rights reserved.
必要とされるシステムの要件
弊社プライベートクラウドにおけるシークレット管理の課題
22
q 社内システムと連携しやすい
q 開発コストがなるべく抑えられる
q 開発・コミュニティが活発である(スター数でもいい)
q プロダクションレベルでの適⽤例がある
公開
©2022 Yahoo Japan Corporation All rights reserved.
各プロダクトの⽐較
23
External Secrets
Operator
Secrets Store
CSI Driver
Sealed Secrets HashiCorp Vault
社内システムと連携しやすい
プロダクションレベルでの適⽤例
がある
スター数
開発コストがなるべく抑えられる
in-treeで開発され
ている
GAされていない 主要なパブリック
クラウドで適⽤さ
れており、GAもさ
れている
GitOps前提
のため除外
5.2k
1.4k 788 24.5k
弊社でも使ってお
り、知⾒がある
既存の機能で
対応可能
運⽤負担がある
✔
©2022 Yahoo Japan Corporation All rights reserved.
公開
Secrets Store CSI Driverとは︖
24
公開
©2022 Yahoo Japan Corporation All rights reserved.
Container Storage Interface(CSI)
Secrets Store CSI Driverとは︖
25
CSI Driver
VendorA storage
VendorB storage
CO (Container Orchestration)
• ストレージ利⽤のための共通のAPI仕様
• ストレージベンダーはCSIに対応したドライバを開発すれば良い
公開
©2022 Yahoo Japan Corporation All rights reserved.
Secrets Store CSI Driver(SSCD)
Secrets Store CSI Driverとは︖
26
Azure Key Vault
AWS Secrets Manager
GCP Secret Manager
AWS Provider
SecretsManagerのベンダーは⾃⾝のシステムに対応したProviderを
開発することでシークレットを配布できる
GCP Provider
Azure Provider
SSCD
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerの役割
Secrets Store CSI Driverとは︖
27
• 当然ながらシークレットのアクセスには認証認可は必須
• 認証基盤、SecretsManagerとの連携はProvider次第
Provider SSCD
認証基盤
Secrets Manager
Providerが外部のシステムとやり取りする
公開
©2022 Yahoo Japan Corporation All rights reserved.
SSCDとProvider
Secrets Store CSI Driverとは︖
28
SSCD Provider Secrets Manager
IAM
Master Node Worker Node
• SSCD, ProviderはDaemonSetとしてデプロイ
• シークレット、認証情報がK8s内で完結、よりセキュアに運⽤できる
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerが最低限満たすべきインターフェース
29
https://github.com/kubernetes-sigs/secrets-store-csi-driver/blob/main/provider/fake/fake_server.go
SSCDからマウントのリクエスト
を受け取る
• 認証処理
• シークレット取得
• ボリュームにシークレットを
書き込み
Providerの詳細情報をSSCDに返す
公開
©2022 Yahoo Japan Corporation All rights reserved.
基本的な使い⽅(例︓AWS Provider)
30
SecretProviderClass
利⽤するProviderを選択
Secrets Managerに保管されている
シークレット情報を記載(複数可)
Application YAML
©2022 Yahoo Japan Corporation All rights reserved.
公開
システム概要
31
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerの開発
システム概要
32
1. 認証基盤(Athenz)との連携 👈ここが重要
o マウント対象Podの認証情報がほしい
2. Secrets Managerとの連携
o 認証情報を使ってシークレットを取得する
公開
©2022 Yahoo Japan Corporation All rights reserved.
Athenz CopperArgos
システム概要
33
• アプリケーションで利⽤できる認証情報(X.509証明書)を発⾏する
仕組み
• 弊社では多数のプラットフォーム(FaaS, CI/CD, IaaSなど)で導⼊さ
れている
• 例えばK8s環境(ZCP, ZAP)ではPod単位(= ServiceAccount)のア
クセスコントロールが可能
https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md
公開
©2022 Yahoo Japan Corporation All rights reserved.
プラットフォームが異なるWorkloadでも対応できる
システム概要
34
Athenzに信頼されている
Identity Provider
Athenzと事前に登録されたIdentity Providerの
2つから許可されれば認証情報が発⾏できる
何らかの判定基準によっ
てリクエストを検証する
Identity Providerにリクエ
ストを送る
https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md
認証情報(X.509証明書)
コンピューティング基盤
ZCP / ZAP (K8s)
IaaS
PaaS
FaaS
Pod
Server
Application
Function
Identity Providerを任意の構成にできるため多数プラットフォームで対応可能
公開
©2022 Yahoo Japan Corporation All rights reserved.
K8sとCopperArgos
システム概要
35
ZAP, ZCPなど
Athenzに信頼されている
Identity Provider
Athenzと事前に登録されたIdentity Providerの2つから許可されれば認証情報が発⾏できる
何らかの判定基準によっ
てリクエストを検証する
Pod(ServiceAccount)
単位の認証情報が欲しい
Identity Providerにリクエ
ストを送る
https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md
認証情報(X.509証明書)
︓リクエストの流れ
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerと認証基盤の連携
システム概要
36
• kube-mgmt&OPAで構成されるIdentity Providerを⽤意(いわば認証基盤の⼀部)
• AthenzとOPAの検証結果によって認証情報を発⾏する
ZAP, ZCPなど
Athenzに信頼されている
Identity Provider
Athenzと事前に登録されたIdentity Providerの2つから許可されれば認証情報が発⾏できる
Provider
kube-mgmt&OPA
マウント対象のPod(ServiceAccount)
に対する認証情報が欲しい
リクエスト内容とK8sのリソース
状況をOPAポリシーで判断
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerと認証基盤の連携
システム概要
37
IAM
Provider
• 許可しているProviderで
あるか
• Athenzから認可されて
いるか
など
• Podの確認
• ServiceAccountの確認
• Providerの確認
など
マウント対象のPod情報や
ServiceAccountToken(JWT)、
Provider⾃⾝の情報などを
Athenzにリクエストする
kube-mgmt&OPA
Identity Provider
公開
©2022 Yahoo Japan Corporation All rights reserved.
Providerにマウント対象Podの認証情報発⾏するまでの流れ
38
IAM
Secrets Store CSI Driver Provider
Identity Provider
b. OK/NG
認証情報(X.509証明書)
a. Check
Athenzに信頼されているIdentity
ProviderがK8sクラスタごとに存在
システム概要
公開
©2022 Yahoo Japan Corporation All rights reserved. 39
システム概要図
ZCP
シングルテナントK8s
シングルテナントK8s
ZAP
マルチテナントK8s
IAM
Secrets Manager
SSCD
Provider
Identity Provider
SSCD Provider Identity Provider
SSCD Provider Identity Provider
• 3つのコンポーネントが協調動作しCSI Driverとしての機能を果たす
• 社内K8sベースのプラットフォームへの導⼊も容易に
公開
©2022 Yahoo Japan Corporation All rights reserved.
SSCDの連携のしやすさ
40
システム連携を柔軟に⾏うことができた
o 弊社の認証基盤でもその仕様に合わせてProviderを実装し実現
o 現状では「CSI Driverとして実装すべきこと」は特になし
システム概要
独⾃に認証基盤を持つような環境においてはSSCDの選択は適していると感じた
©2022 Yahoo Japan Corporation All rights reserved.
公開
デモ
41
公開
©2022 Yahoo Japan Corporation All rights reserved.
運⽤に関するセキュリティ対策
42
• 基本的にはSSCDのベストプラクティスに則る
o 管理コンポーネント(SSCD, Provider, Identity Provider)はkube-system以下
o クラスタ管理者(ユーザー側)でも触れず、その上位のプラットフォーム管理
者(ZCP, ZAP)しか変更できない
• Identity ProviderのOPAポリシーは認証基盤のチームとSecrets Managerのチーム双
⽅で管理
• その他特段意識しなければならないことはなし
o 現状では⾒えていない可能性も当然あるが・・・
o 検討中
公開
©2022 Yahoo Japan Corporation All rights reserved.
まとめ
43
社内プライベートクラウドにSecrets Store CSI Driver(SSCD)を使った安全なシークレ
ット取得ができるようエコシステムに組み込んだ
o シークレット・認証情報ともにK8s内で完結するため、ユーザーはよりセキュア
に運⽤することができる
o SSCDを使うことでシステム連携が柔軟に⾏うことが可能
o 弊社のシステム構成ではSSCD, Provider, Identity Providerの3つがクラスタごとに
存在してCSI Driverとしての機能を果たす
©2022 Yahoo Japan Corporation All rights reserved.
公開

More Related Content

PDF
DockerとPodmanの比較
PDF
WebAssemblyのWeb以外のことぜんぶ話す
PPTX
NGINXをBFF (Backend for Frontend)として利用した話
PDF
Dockerイメージ管理の内部構造
PDF
ソーシャルゲームのためのデータベース設計
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
Dockerを支える技術
DockerとPodmanの比較
WebAssemblyのWeb以外のことぜんぶ話す
NGINXをBFF (Backend for Frontend)として利用した話
Dockerイメージ管理の内部構造
ソーシャルゲームのためのデータベース設計
コンテナ未経験新人が学ぶコンテナ技術入門
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Dockerを支える技術

What's hot (20)

PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
Docker Compose 徹底解説
PDF
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
PDF
FridaによるAndroidアプリの動的解析とフッキングの基礎
PDF
実装して理解するLINE LoginとOpenID Connect入門
PPTX
世界一わかりやすいClean Architecture
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
PDF
Dockerからcontainerdへの移行
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PPTX
Dockerからcontainerdへの移行
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PDF
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
PDF
Keycloakの最近のトピック
PDF
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
PDF
Flutter移行の苦労と、乗り越えた先に得られたもの
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Docker Compose 徹底解説
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
FridaによるAndroidアプリの動的解析とフッキングの基礎
実装して理解するLINE LoginとOpenID Connect入門
世界一わかりやすいClean Architecture
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
Dockerからcontainerdへの移行
ソーシャルゲーム案件におけるDB分割のPHP実装
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Dockerからcontainerdへの移行
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Infrastructure as Code (IaC) 談義 2022
ネットワーク ゲームにおけるTCPとUDPの使い分け
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Keycloakの最近のトピック
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Flutter移行の苦労と、乗り越えた先に得られたもの
Ad

Similar to CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話 (20)

PDF
社内認証基盤用のVault Pluginを作るメリット
PDF
あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方
PDF
20200219-iot@loft#8_security_of_smarthome
PPTX
お客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptx
PDF
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
PDF
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
PDF
地に足がついたクラウドのお話
PDF
Gaming cicd-pipeline gaming-technight-2
PPT
【Webinar-Slide】DataBridgeとは
PPTX
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
PDF
AWS の IoT 向けサービス
PPTX
クラウド利用者として考えるサステナビリティ
PPTX
Microsoft Azure のセキュリティ
PPTX
セキュア・アーキテクティング入門 (クラウド) 2020年4月13日
PPTX
20180528_VxRailCC_Backup_NW宮本
PPTX
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
PDF
【VMware】jp developer-summit_2012_final_for_print
PDF
Drソリューション(ナレッジコミュニケーション)
PPTX
技術選択とアーキテクトの役割
PDF
KubeCon + CloudNativeCon North America セキュリティ周りrecap
社内認証基盤用のVault Pluginを作るメリット
あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方
20200219-iot@loft#8_security_of_smarthome
お客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptx
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
地に足がついたクラウドのお話
Gaming cicd-pipeline gaming-technight-2
【Webinar-Slide】DataBridgeとは
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
AWS の IoT 向けサービス
クラウド利用者として考えるサステナビリティ
Microsoft Azure のセキュリティ
セキュア・アーキテクティング入門 (クラウド) 2020年4月13日
20180528_VxRailCC_Backup_NW宮本
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
【VMware】jp developer-summit_2012_final_for_print
Drソリューション(ナレッジコミュニケーション)
技術選択とアーキテクトの役割
KubeCon + CloudNativeCon North America セキュリティ周りrecap
Ad

CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話

  • 1. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driverを開発し ⾃社プライベートクラウドにより適した 安全なKubernetes Secrets管理を実現した話 ヤフー株式会社 Katsuya Yamaguchi
  • 2. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 簡単な⾃⼰紹介 • ヤフー株式会社 ⼊社6年⽬(2017年~) • 業務で書く、使う(⼤⼩ありますが) o go, Java, Typescript, C/C++,… o Terraform, Vault, OPA,… • ⼿広くやっています 2
  • 3. 公開 ©2022 Yahoo Japan Corporation All rights reserved. どんな仕事をしているのか • ⼤規模なシークレット管理システム(Secrets Manager) • シークレット取得のための社内ユーザー向けクライアントライブラリ • 補助プロダクトの開発(Daemon, Docker container, PaaS Application) 3 社内のデータ保護に関するプロダクトの開発・保守
  • 4. 公開 ©2022 Yahoo Japan Corporation All rights reserved. このセッションについて この資料では以下のような略称を使います。 ⚠Kubernetes -> K8s ⚠Secrets Store CSI Driver -> SSCD ⾃社K8s基盤において、より安全にシークレットの取得ができるようにSecrets Store CSI Driverとそれと連携するProviderを開発し、プラットフォームレベル でサポートできるようにしました 本セッションでは社内での適⽤例をベースに、具体的にどのようなことを⾏っ たかを説明します
  • 5. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 本⽇のアジェンダ 1. 弊社プライベートクラウドにおけるシークレット管理の課題 2. Secrets Store CSI Driverとは︖ 3. システム概要 4. デモ 5. まとめ 5
  • 6. ©2022 Yahoo Japan Corporation All rights reserved. 公開 弊社プライベートクラウドにおけるシークレット管理の課題 6
  • 7. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Secrets Managerとは 7 弊社プライベートクラウドにおけるシークレット管理の課題 Azure Key Vault AWS Secrets Manager GCP Secret Manager パブリッククラウドでは ⾃前で構築可能 • APIキー、データベースの認証情報、OAuthトークンなどを⼀元管理 • デプロイ時や、アプリケーションの任意のタイミングでシークレットを取得
  • 8. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 多数のコンピューティング基盤を持つ 弊社プライベートクラウドにおけるシークレット管理の課題 8 Secrets Manager コンピューティング基盤 ZCP / ZAP (K8s) IaaS PaaS FaaS Pod Server Application Function 連携 IAM 要件・規模によって サーバー、アプリケーションを管理
  • 9. 公開 ©2022 Yahoo Japan Corporation All rights reserved. ZCP, ZAPが展開するプライベートクラウド環境 9 弊社プライベートクラウドにおけるシークレット管理の課題 ZCP ZAP ZCPをベースとしたマルチK8sのアプリケーション実 ⾏基盤で、ZAP管理者がK8sクラスタを管理している ユーザーはクラスタの管理をしなくていい マルチテナントK8s シングルテナントK8s シングルテナントK8s K8s as a Service基盤で、ユーザーに専⽤の K8sクラスタを提供する ユーザーはK8sクラスタの管理が必要 ZAP管理者
  • 10. 公開 ©2022 Yahoo Japan Corporation All rights reserved. K8s環境でのシークレットの扱い⽅の選択肢 弊社プライベートクラウドにおけるシークレット管理の課題 10 社内ルールでGitOpsは推奨されていないため除外 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う
  • 11. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 11 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担
  • 12. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 12 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担
  • 13. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 課題︓シークレットの安全性と管理 弊社プライベートクラウドにおけるシークレット管理の課題 13 Deploy CI/CDパイプライン パイプライン上で設定・管理されている シークレット ユーザー⾃⾝で管理するシークレット Deploy • シークレット管理が分散する • シークレットを⼀旦⼿元に置くなど の危険性も⾒逃せない シークレットをK8s Secretから 使⽤する
  • 14. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 14 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担
  • 15. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 課題︓サイドカーコンテナの扱い 弊社プライベートクラウドにおけるシークレット管理の課題 15 シークレット取得のためのサイドカーコンテナを ユーザー⾃⾝が設定し管理しなければならない Sidecar Container App Container Secrets Manager IAM • リソースが無駄 • トラブルシューティングが難しい サイドカーの設定YAML
  • 16. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 16 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担
  • 17. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 課題︓認証情報の管理(認証基盤側の問題でもある) 弊社プライベートクラウドにおけるシークレット管理の課題 17 漏洩のリスクがある Sidecar Container App Container Secrets Manager IAM シークレット取得のための 認証情報 サイドカーの設定YAML 認証情報がK8s Secretとしてデプロイ されており管理もユーザー次第
  • 18. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 18 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担
  • 19. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 課題︓シークレット取得におけるユーザーの負担 弊社プライベートクラウドにおけるシークレット管理の課題 19 シークレットの取得が完了するまでサービスが公開されないよう に命令的な処理を書く必要がある 導⼊の際にYAMLやサービスの修正をしなければならない
  • 20. 公開 ©2022 Yahoo Japan Corporation All rights reserved. CSI Driver導⼊前の課題 弊社プライベートクラウドにおけるシークレット管理の課題 20 Secrets Manager⽤のサイドカーコンテナを使う K8s Secretリソースを使う o シークレットの安全性と管理 o サイドカーコンテナの扱い o 認証情報の管理 o シークレット取得におけるユーザーの負担 よりプラットフォームに適したシステムが欲しい
  • 21. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 具体的な実現⽅法の検討 弊社プライベートクラウドにおけるシークレット管理の課題 21 • まずは既存のプロダクトを使うことで実現できないかを探る • ⾃前でコントローラーを実装するのは最終⼿段
  • 22. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 必要とされるシステムの要件 弊社プライベートクラウドにおけるシークレット管理の課題 22 q 社内システムと連携しやすい q 開発コストがなるべく抑えられる q 開発・コミュニティが活発である(スター数でもいい) q プロダクションレベルでの適⽤例がある
  • 23. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 各プロダクトの⽐較 23 External Secrets Operator Secrets Store CSI Driver Sealed Secrets HashiCorp Vault 社内システムと連携しやすい プロダクションレベルでの適⽤例 がある スター数 開発コストがなるべく抑えられる in-treeで開発され ている GAされていない 主要なパブリック クラウドで適⽤さ れており、GAもさ れている GitOps前提 のため除外 5.2k 1.4k 788 24.5k 弊社でも使ってお り、知⾒がある 既存の機能で 対応可能 運⽤負担がある ✔
  • 24. ©2022 Yahoo Japan Corporation All rights reserved. 公開 Secrets Store CSI Driverとは︖ 24
  • 25. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Container Storage Interface(CSI) Secrets Store CSI Driverとは︖ 25 CSI Driver VendorA storage VendorB storage CO (Container Orchestration) • ストレージ利⽤のための共通のAPI仕様 • ストレージベンダーはCSIに対応したドライバを開発すれば良い
  • 26. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Secrets Store CSI Driver(SSCD) Secrets Store CSI Driverとは︖ 26 Azure Key Vault AWS Secrets Manager GCP Secret Manager AWS Provider SecretsManagerのベンダーは⾃⾝のシステムに対応したProviderを 開発することでシークレットを配布できる GCP Provider Azure Provider SSCD
  • 27. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerの役割 Secrets Store CSI Driverとは︖ 27 • 当然ながらシークレットのアクセスには認証認可は必須 • 認証基盤、SecretsManagerとの連携はProvider次第 Provider SSCD 認証基盤 Secrets Manager Providerが外部のシステムとやり取りする
  • 28. 公開 ©2022 Yahoo Japan Corporation All rights reserved. SSCDとProvider Secrets Store CSI Driverとは︖ 28 SSCD Provider Secrets Manager IAM Master Node Worker Node • SSCD, ProviderはDaemonSetとしてデプロイ • シークレット、認証情報がK8s内で完結、よりセキュアに運⽤できる
  • 29. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerが最低限満たすべきインターフェース 29 https://github.com/kubernetes-sigs/secrets-store-csi-driver/blob/main/provider/fake/fake_server.go SSCDからマウントのリクエスト を受け取る • 認証処理 • シークレット取得 • ボリュームにシークレットを 書き込み Providerの詳細情報をSSCDに返す
  • 30. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 基本的な使い⽅(例︓AWS Provider) 30 SecretProviderClass 利⽤するProviderを選択 Secrets Managerに保管されている シークレット情報を記載(複数可) Application YAML
  • 31. ©2022 Yahoo Japan Corporation All rights reserved. 公開 システム概要 31
  • 32. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerの開発 システム概要 32 1. 認証基盤(Athenz)との連携 👈ここが重要 o マウント対象Podの認証情報がほしい 2. Secrets Managerとの連携 o 認証情報を使ってシークレットを取得する
  • 33. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Athenz CopperArgos システム概要 33 • アプリケーションで利⽤できる認証情報(X.509証明書)を発⾏する 仕組み • 弊社では多数のプラットフォーム(FaaS, CI/CD, IaaSなど)で導⼊さ れている • 例えばK8s環境(ZCP, ZAP)ではPod単位(= ServiceAccount)のア クセスコントロールが可能 https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md
  • 34. 公開 ©2022 Yahoo Japan Corporation All rights reserved. プラットフォームが異なるWorkloadでも対応できる システム概要 34 Athenzに信頼されている Identity Provider Athenzと事前に登録されたIdentity Providerの 2つから許可されれば認証情報が発⾏できる 何らかの判定基準によっ てリクエストを検証する Identity Providerにリクエ ストを送る https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md 認証情報(X.509証明書) コンピューティング基盤 ZCP / ZAP (K8s) IaaS PaaS FaaS Pod Server Application Function Identity Providerを任意の構成にできるため多数プラットフォームで対応可能
  • 35. 公開 ©2022 Yahoo Japan Corporation All rights reserved. K8sとCopperArgos システム概要 35 ZAP, ZCPなど Athenzに信頼されている Identity Provider Athenzと事前に登録されたIdentity Providerの2つから許可されれば認証情報が発⾏できる 何らかの判定基準によっ てリクエストを検証する Pod(ServiceAccount) 単位の認証情報が欲しい Identity Providerにリクエ ストを送る https://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md 認証情報(X.509証明書) ︓リクエストの流れ
  • 36. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerと認証基盤の連携 システム概要 36 • kube-mgmt&OPAで構成されるIdentity Providerを⽤意(いわば認証基盤の⼀部) • AthenzとOPAの検証結果によって認証情報を発⾏する ZAP, ZCPなど Athenzに信頼されている Identity Provider Athenzと事前に登録されたIdentity Providerの2つから許可されれば認証情報が発⾏できる Provider kube-mgmt&OPA マウント対象のPod(ServiceAccount) に対する認証情報が欲しい リクエスト内容とK8sのリソース 状況をOPAポリシーで判断
  • 37. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerと認証基盤の連携 システム概要 37 IAM Provider • 許可しているProviderで あるか • Athenzから認可されて いるか など • Podの確認 • ServiceAccountの確認 • Providerの確認 など マウント対象のPod情報や ServiceAccountToken(JWT)、 Provider⾃⾝の情報などを Athenzにリクエストする kube-mgmt&OPA Identity Provider
  • 38. 公開 ©2022 Yahoo Japan Corporation All rights reserved. Providerにマウント対象Podの認証情報発⾏するまでの流れ 38 IAM Secrets Store CSI Driver Provider Identity Provider b. OK/NG 認証情報(X.509証明書) a. Check Athenzに信頼されているIdentity ProviderがK8sクラスタごとに存在 システム概要
  • 39. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 39 システム概要図 ZCP シングルテナントK8s シングルテナントK8s ZAP マルチテナントK8s IAM Secrets Manager SSCD Provider Identity Provider SSCD Provider Identity Provider SSCD Provider Identity Provider • 3つのコンポーネントが協調動作しCSI Driverとしての機能を果たす • 社内K8sベースのプラットフォームへの導⼊も容易に
  • 40. 公開 ©2022 Yahoo Japan Corporation All rights reserved. SSCDの連携のしやすさ 40 システム連携を柔軟に⾏うことができた o 弊社の認証基盤でもその仕様に合わせてProviderを実装し実現 o 現状では「CSI Driverとして実装すべきこと」は特になし システム概要 独⾃に認証基盤を持つような環境においてはSSCDの選択は適していると感じた
  • 41. ©2022 Yahoo Japan Corporation All rights reserved. 公開 デモ 41
  • 42. 公開 ©2022 Yahoo Japan Corporation All rights reserved. 運⽤に関するセキュリティ対策 42 • 基本的にはSSCDのベストプラクティスに則る o 管理コンポーネント(SSCD, Provider, Identity Provider)はkube-system以下 o クラスタ管理者(ユーザー側)でも触れず、その上位のプラットフォーム管理 者(ZCP, ZAP)しか変更できない • Identity ProviderのOPAポリシーは認証基盤のチームとSecrets Managerのチーム双 ⽅で管理 • その他特段意識しなければならないことはなし o 現状では⾒えていない可能性も当然あるが・・・ o 検討中
  • 43. 公開 ©2022 Yahoo Japan Corporation All rights reserved. まとめ 43 社内プライベートクラウドにSecrets Store CSI Driver(SSCD)を使った安全なシークレ ット取得ができるようエコシステムに組み込んだ o シークレット・認証情報ともにK8s内で完結するため、ユーザーはよりセキュア に運⽤することができる o SSCDを使うことでシステム連携が柔軟に⾏うことが可能 o 弊社のシステム構成ではSSCD, Provider, Identity Providerの3つがクラスタごとに 存在してCSI Driverとしての機能を果たす
  • 44. ©2022 Yahoo Japan Corporation All rights reserved. 公開