Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
k8sとOPAつなげてみた - Admission Controller編
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kengo Suzuki
March 18, 2019
Technology
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
k8sとOPAつなげてみた - Admission Controller編
Kengo Suzuki
March 18, 2019
More Decks by Kengo Suzuki
See All by Kengo Suzuki
男(監査)はつらいよ - Policy as CodeからAIエージェントへ
ken5scal
5
1.2k
AI時代の大規模データ活用とセキュリティ戦略
ken5scal
1
540
Pwned Labsのすゝめ
ken5scal
2
1.2k
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
3
1.4k
Eventual Detection Engineering
ken5scal
0
3k
脆弱性対応をこの先生きのこるには
ken5scal
0
1.8k
LayerXとMDMのリスク評価と年次対応の実例(公開版)
ken5scal
2
1.5k
AWSだ! Google Cloudだ! Azureだ! 認証連携だ!
ken5scal
9
2.7k
適応し続けるプロダクトとセキュリティ
ken5scal
5
2.6k
Other Decks in Technology
See All in Technology
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
220
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
570
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
190
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
120
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.1k
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
3
2.2k
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
110
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
0
1k
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Ruling the World: When Life Gets Gamed
codingconduct
0
320
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Agile that works and the tools we love
rasmusluckow
331
22k
A better future with KSS
kneath
240
18k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
330
Mobile First: as difficult as doing things right
swwweet
225
10k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Site-Speed That Sticks
csswizardry
13
1.5k
Transcript
k8sͱOPAͭͳ͛ͯΈͨ - Admission Controllerฤ 2019/03/18 @ken5scal
Ζ͏ͱͨ͜͠ͱ 1. k8sͷAdmission ControllerΛOPAʹ͚Δ 2. k8s APIαʔόʔͷϦΫΤετʹOPAϙϦγʔΛ ద༻͢Δ
k8s Admission Controllerͱ - k8s APIαʔόʔʹର͢ΔೝূɾೝՄ͞ΕͨϦΫΤετ ͷΦϒδΣΫτ͕ӬଓԽ͞ΕΔલʹɺ੍ޚ͢Δػߏ - ϓϥάΠϯʹΑͬͯɺͲͷΑ͏ͳ੍ޚΛ͢Δ͔ܾΊΒΕ Δ
OPAʢΦʔύʣͱ - ϦΫΤετͷਖ਼ੑΛݕূͯ͠ɺΤʔδΣϯτʹ ݁ՌΛฦ͢ɺ͍ΘΏΔϙϦγʔΤϯδϯ - ʮCloud Native Meetup Tokyo #4ʯͷൃදࢀর
https://speakerdeck.com/ken5scal/introduction-to-open-policy-agent
- ValidatingAdmissionWebhookʹOPAΛઃఆ - k8s APIαʔόʹର͢ΔͲͷΑ͏ͳΞΫγϣϯΛࢦ ఆ͢Δ͔ɺͬͪ͜ʹॻ͘ k8s Admission ControllerͱOPAɹͦͷᶃ
cat > webhook-configuration.yaml <<EOF kind: ValidatingWebhookConfiguration apiVersion: admissionregistration.k8s.io/v1beta1 metadata: name:
opa-validating-webhook webhooks: - name: validating-webhook.openpolicyagent.org rules: - operations: ["CREATE", "UPDATE"] apiGroups: ["*"] apiVersions: ["*"] resources: ["*"] clientConfig: caBundle: $(cat ca.crt | base64 | tr -d '\n') service: namespace: opa name: opa EOF https://aws.amazon.com/jp/blogs/opensource/using-open-policy-agent-on-amazon-eks/
- OPAͷϙϦγʔͦͷͷRegoͰهड़ - k8sͷConfigMapsͱͯ͠औΓࠐΉ k8s Admission ControllerͱOPAɹͦͷᶄ
ྫ1: IngressͷFQDNࢦఆ
package kubernetes.admission import data.kubernetes.namespaces deny[msg] { input.request.kind.kind = "Ingress" input.request.operation
= "CREATE" host = input.request.object.spec.rules[_].host not fqdn_matches_any(host, valid_ingress_hosts) msg = sprintf("invalid ingress host %q", [host]) } valid_ingress_hosts = {host | whitelist = namespaces[input.request.namespace].metadata.annotations["ingress- whitelist"] hosts = split(whitelist, ",") host = hosts[_] } https://www.openpolicyagent.org/docs/kubernetes-admission-control.html
% cat ingress-bad.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-bad
spec: rules: - host: acmecorp.com http: paths: - backend: serviceName: nginx servicePort: 80 % kubectl create -f ingress-bad.yaml -n qa Error from server (invalid ingress host "acmecorp.com"): error when creating "ingress- bad.yaml": admission webhook "validating-webhook.openpolicyagent.org" denied the request: invalid ingress host "acmecorp.com" https://www.openpolicyagent.org/docs/kubernetes-admission-control.html
ྫ1: ίϯςφϨδετϦͷࢦఆ
cat > image_source.rego <<EOF package kubernetes.admission deny[msg] { input.request.kind.kind =
"Pod" input.request.operation = "CREATE" image = input.request.object.spec.containers[_].image name = input.request.object.metadata.name not registry_whitelisted(image,whitelisted_registries) msg = sprintf("pod %q has invalid registry %q", [name, image]) } whitelisted_registries = {registry | registries = [ “602401143452.dkr.ecr.ap-northeast-1.amazonaws.com" ] registry = registries[_] } registry_whitelisted(str, patterns) { registry_matches(str, patterns[_]) } registry_matches(str, pattern) { contains(str, pattern) } https://aws.amazon.com/jp/blogs/opensource/using-open-policy-agent-on-amazon-eks/
% cat nginx.yaml kind: Pod apiVersion: v1 metadata: name: nginx
labels: app: nginx namespace: default spec: containers: - image: nginx name: nginx % kubectl apply -f nginx.yaml Error from server (pod "nginx" has invalid registry "nginx"): error when creating "nginx.yaml": admission webhook "validating-webhook.openpolicyagent.org" denied the request: pod "nginx2" has invalid registry "nginx" https://aws.amazon.com/jp/blogs/opensource/using-open-policy-agent-on-amazon-eks/
Ͱ͖ͳ͍͜ͱ - Runtimeͷ੍ޚ - APIαʔόʔʹର͢Δૢ࡞੍͔͠ޚͰ͖ͳ͍ - “ϙϦγʔ”ͷద༻ͳͷͰ੩తͳݕࠪͩͱΓͳ͍ - OPAͦͷͷͷ੍ޚ -
etc
͜͜ʹςΩετΛೖΕ·͢ɻ ͻͱͭͷεϥΠυʹ༰Λ٧Ί͗͢ ͳ͍Α͏ʹ͠·͠ΐ͏ɻ ʮ̍ຕͷεϥΠυʹ̍ͭͷҙຯʯ͕ εϥΠυ࡞ΓͷجຊͰ͢ɻ ٕज़ॻయͰOPAωλͷബ͍ຊͩ͠·͢
@ken5scal
Thank you