SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
公開
©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.
公開

Más contenido relacionado

La actualidad más candente

Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例gree_tech
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)NTT DATA Technology & Innovation
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理Shinya Sasaki
 
Kubernetes Security with DevSecOps
Kubernetes Security with DevSecOpsKubernetes Security with DevSecOps
Kubernetes Security with DevSecOpsShingo Kitayama
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティスAkihiro Kuwano
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春VerMasahito Zembutsu
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAmazon Web Services Japan
 

La actualidad más candente (20)

Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
AWS CLIでAssumeRole
AWS CLIでAssumeRoleAWS CLIでAssumeRole
AWS CLIでAssumeRole
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理
 
Kubernetes Security with DevSecOps
Kubernetes Security with DevSecOpsKubernetes Security with DevSecOps
Kubernetes Security with DevSecOps
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティス
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 

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

社内認証基盤用のVault Pluginを作るメリット
社内認証基盤用のVault Pluginを作るメリット社内認証基盤用のVault Pluginを作るメリット
社内認証基盤用のVault Pluginを作るメリットKatsuya Yamaguchi
 
あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方
あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方
あなたはどうデータを守る?クラウド・AI・自動化を使った、みえない脅威との戦い方オラクルエンジニア通信
 
お客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptx
お客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptxお客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptx
お客様からのセキュリティチェックを乗り越えるための SaaS のアプローチ.pptxmkoda
 
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法Amazon Web Services Japan
 
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpacesAmazon Web Services Japan
 
地に足がついたクラウドのお話
地に足がついたクラウドのお話地に足がついたクラウドのお話
地に足がついたクラウドのお話Toshiaki Baba
 
【Webinar-Slide】DataBridgeとは
【Webinar-Slide】DataBridgeとは【Webinar-Slide】DataBridgeとは
【Webinar-Slide】DataBridgeとはTalend KK
 
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介
【Veeam基礎】簡単解説!バックアップ可能な環境や機能をご紹介株式会社クライム
 
クラウド利用者として考えるサステナビリティ
クラウド利用者として考えるサステナビリティクラウド利用者として考えるサステナビリティ
クラウド利用者として考えるサステナビリティHiroki Moriya
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティjunichi anno
 
セキュア・アーキテクティング入門 (クラウド) 2020年4月13日
セキュア・アーキテクティング入門 (クラウド) 2020年4月13日セキュア・アーキテクティング入門 (クラウド) 2020年4月13日
セキュア・アーキテクティング入門 (クラウド) 2020年4月13日Masanori KAMAYAMA
 
20180528_VxRailCC_Backup_NW宮本
20180528_VxRailCC_Backup_NW宮本20180528_VxRailCC_Backup_NW宮本
20180528_VxRailCC_Backup_NW宮本VxRail ChampionClub
 
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜Mamoru Ohashi
 
【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_print【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_printVMwareKK
 
Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)Drソリューション(ナレッジコミュニケーション)
Drソリューション(ナレッジコミュニケーション)nao-k
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
AWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdfAWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdfHayato Kiriyama
 

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

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

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. 公開