Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kubernetesのセキュリティのベストプラクティス
Search
Ian Lewis
March 08, 2018
Technology
17k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetesのセキュリティのベストプラクティス
Ian Lewis
March 08, 2018
More Decks by Ian Lewis
See All by Ian Lewis
Kubernetes Security Best Practices
ianlewis
38
27k
The Enemy Within: Running untrusted code in Kubernetes
ianlewis
0
1.4k
The Enemy Within: Running untrusted code with gVisor
ianlewis
4
1.4k
KubeCon EU Runtime Track Recap
ianlewis
3
1.7k
コンテナによるNoOpsオートメーション
ianlewis
2
210
Google Kubernetes Engine 概要 & アップデート @ GCPUG Kansai Summit Day 2018
ianlewis
2
1k
Extending Kubernetes with Custom Resources and Operator Frameworks
ianlewis
10
3.9k
Scheduling and Resource Management in Kubernetes
ianlewis
2
1.5k
Keynote: The Kubernetes Community
ianlewis
0
290
Other Decks in Technology
See All in Technology
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
30
19k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
460
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
390
SREは、MCPとAutopilotをこう使え!
kazumax55
3
950
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
20k
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
170
人間はどの意思決定を手放せるのか
kawasima
15
8k
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.6k
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
520
Featured
See All Featured
Everyday Curiosity
cassininazir
0
320
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
A Modern Web Designer's Workflow
chriscoyier
699
190k
It's Worth the Effort
3n
188
29k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
From π to Pie charts
rasagy
1
380
Writing Fast Ruby
sferik
630
63k
Embracing the Ebb and Flow
colly
88
5.2k
Transcript
Kubernetesのセキュリティ ベストプラクティス ianmlewis@
Ian Lewis • ianlewis@ • Google • Tokyo, Japan •
#kubernetes, #go, #python
Kubernetes • コンテナ オーケストレーション • インフラ API/ フレームワーク
Guestbookアプリ • Web Frontend ◦ ウェブアプリ ◦ HTML/JS/CSS • Message
◦ メッセージを 保存・閲覧 • NGWord ◦ NG ワードを 検出する Kubernetes Cluster Web Frontend Redis NGWord message
Kubernetes API Server 1. フロントエンド Pod から トークンを取得 2. トークンを利用し、
API サーバーを攻撃 3. シークレットなどを取得 し、さらに サービスを攻撃 Kubernetes Cluster Web Frontend Redis NGWord message ① ② ③
Mitigate 1 & 2: RBAC • Role Based Access Control
• ユーザーやサービスアカウントへロールを付与 • ロールが権限を持つ ◦ get secrets ◦ update configmap ◦ etc. • RBAC 設定はネームスプペース範囲 • GKE では IAM と連携
Mitigate 1 & 2: RBAC ClusterRole ClusterRoleBinding 1:many many:1 Verb
+ Type
Mitigate 2: API Server Firewall • API サーバーへのアクセスを IP アドレスに制限
• GKE: ◦ gcloud container clusters create --enable-master-authorized-networks --master-authorized-networks=....
Mitigate 3: Network Policy • データベースへのアクセスを必要のある Pod に制限 • ラブルセレクターで
Pod を選択 • ネットワークプラグインで実装されてる : Calico, Weave, etc.
NetworkPolicy kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: redis spec: podSelector:
matchLabels: name: redis ingress: - from: - podSelector: matchLabels: name: guestbook
ホストへアクセス 1. コンテナ外へ突破 2. Kubelet を攻撃 3. 同じホストに実行中の コンテナを攻撃 Host
Web Frontend
Mitigate 1: non-rootユーザーで実行 apiVersion: v1 kind: Pod metadata: name: security-context-demo
spec: securityContext: runAsUser: 1000
Mitigate 1: 読込専用ファイルシステム apiVersion: v1 kind: Pod metadata: name: security-context-demo
spec: securityContext: readOnlyRootFilesystem: true
Mitigate 1: no_new_privs apiVersion: v1 kind: Pod metadata: name: security-context-demo
spec: securityContext: allowPrivilegeEscalation: false
Mitigate 1: 組み合わせ apiVersion: v1 kind: Pod metadata: name: security-context-demo
spec: securityContext: runAsUser: 1000 readOnlyRootFilesystem: true allowPrivilegeEscalation: false
Your App Container seccomp Mitigate 1: seccomp/ AppArmor/ SELinux AppArmor/
SELinux
seccomp apiVersion: v1 kind: Pod metadata: name: mypod annotations: seccomp.security.alpha.kubernetes.io/pod:
runtime/default ...
AppArmor apiVersion: v1 kind: Pod metadata: name: mypod annotations: container.apparmor.security.beta.kubernetes.io/hello:
runtime/default spec: containers: - name: hello ...
SELinux apiVersion: v1 kind: Pod metadata: name: mypod spec: securityContext:
seLinuxOptions: level: "s0:c123,c456" containers: - name: hello ...
Mitigate 2 & 3: Kubeletの権限を制限する • RBAC for Kubelet: ◦
--authorization-mode=RBAC,Node --admission-control=...,NodeRestriction • Rotate Kubelet certs: ◦ kubelet … --rotate-certificates
Unsecured Pods • You follow the rules but others don't
Kubernetes Cluster Web Frontend Redis NGWord message
Mitigate: PodSecurityPolicy apiVersion: extensions/v1beta1 kind: PodSecurityPolicy metadata: name: example spec:
privileged: false # Don't allow privileged pods! # The rest fills in some required fields. seLinux: rule: RunAsAny supplementalGroups: rule: RunAsAny runAsUser: rule: 1000 fsGroup: rule: RunAsAny volumes: - '*'
istio • Service mesh • Envoy proxy 組み込み
トラフィクを傍受 1. ネットーワーク上の通 信を傍受 2. あるサビースに不正リ クエストを送る Kubernetes Cluster Web
Frontend Redis NGWord message
istio 1. サービス間の プロクシー 2. 暗号化 3. 証明書の自動更新 4. ポリシーが
セントラルサーバで集 中して管理する Kubernetes Cluster Web Frontend Redis NGWord message
Thanks!