Giris: Konteynerlerin Guvenlik Paradoksu
Konteyner teknolojileri yazilim dagitimini devrim niteliginde degistirdi. Ancak hiz ve esneklik kazanimlari, beraberinde yeni guvenlik yuzeylerini de getirdi. Geleneksel sunucu guvenliginde bildigimiz kurallar, konteyner ve orkestrasyon dunyasinda yeterli kalmiyor. Kubernetes kumeleri; yuzlerce mikro servis, binlerce pod ve surekli degisen aglar barindiran dinamik ortamlardir. Bu karmasiklik, guvenlik stratejisinin her katmanda ayri ayri ele alinmasini zorunlu kilar.
2025 yilinda yapilan arastirmalara gore, uretim ortamindaki konteyner imajlarinin yuzde 70'inden fazlasi en az bir kritik guvenlik acigi icermektedir. Bu rehberde, Kubernetes ve konteyner guvenligini uctan uca ele alarak uygulamali cozumler sunuyoruz.
Konteyner Guvenligi Temelleri
Konteyner guvenligi, imajin olusturulmasindan calisma zamanina kadar tum yasam dongusunu kapsar. Bu sureci dort ana katmanda degerlendirebiliriz.
Imaj Guvenligi ve Tarama
Guvenli bir konteyner, guvenli bir imajla baslar. Imaj tarama sureci su adimlari icerir:
- Temel imaj secimi: Minimal imajlar (distroless, Alpine) saldiri yuzeyini azaltir
- Guvenlik acigi taramasi: Trivy, Grype veya Snyk ile CI/CD pipeline'inda otomatik tarama
- Katman analizi: Her Dockerfile katmaninin bagimliliklari ayri ayri degerlendirilir
- Lisans uyumlulugu: Acik kaynak bilesenlerin lisans riskleri kontrol edilir
# Trivy ile CI/CD pipeline'inda imaj tarama ornegi (GitHub Actions)
name: Container Security Scan
on:
push:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Build Image
run: docker build -t myapp:${{ github.sha }} .
- name: Run Trivy Scan
uses: aquasecurity/trivy-action@master
with:
image-ref: 'myapp:${{ github.sha }}'
format: 'sarif'
severity: 'CRITICAL,HIGH'
exit-code: '1'
Dockerfile En Iyi Uygulamalari
# Guvenli Dockerfile ornegi
FROM cgr.dev/chainguard/go:latest AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /app/server
FROM cgr.dev/chainguard/static:latest
COPY --from=builder /app/server /server
USER nonroot:nonroot
ENTRYPOINT ["/server"]
Temel kurallar: root kullanici ile calistirmayin, cok asamali derleme kullanin ve distroless ya da minimal imajlari tercih edin.
Kubernetes Guvenlik Modeli
Kubernetes'in guvenlik modeli, kimlik dogrulama, yetkilendirme ve kabul denetimi olmak uzere uc ana katmandan olusur.
RBAC (Role-Based Access Control)
RBAC, Kubernetes kaynaklarina erisimleri roller uzerinden kontrol eder. En az yetki ilkesini uygulamak icin her servis hesabina yalnizca ihtiyac duydugu izinleri verin.
# Sadece belirli namespace'te pod okuma yetkisi veren Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: production
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: production
name: read-pods-binding
subjects:
- kind: ServiceAccount
name: monitoring-sa
namespace: production
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
NetworkPolicy ile Ag Segmentasyonu
Varsayilan olarak Kubernetes'te tum pod'lar birbirleriyle iletisim kurabilir. NetworkPolicy ile mikro segmentasyon uygulayarak yanal hareketi onleyin.
# Yalnizca frontend'den backend'e erisime izin veren politika
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: backend-allow-frontend
namespace: production
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
Pod Security Standards (PSS)
Kubernetes 1.25 ile birlikte PodSecurityPolicy kaldirildi ve yerini Pod Security Standards aldi. Uc seviye tanimlanmistir:
| Seviye | Aciklama | Kullanim Alani |
|---|---|---|
| Privileged | Kisitlama yok | Sistem bilesenleri, CNI eklentileri |
| Baseline | Bilinen yetki yukselme vektorlerini onler | Genel is yukleri |
| Restricted | Siki guvenlik politikasi | Hassas is yukleri, uyumluluk gereksinimleri |
# Namespace'e Restricted seviye uygulama
apiVersion: v1
kind: Namespace
metadata:
name: secure-apps
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/audit: restricted
Tedarik Zinciri Guvenligi (Supply Chain Security)
Yazilim tedarik zinciri saldirilari son yillarda dramatik bir artis gosterdi. Konteyner ekosistemin de bu saldirilardan nasibini almaktadir.
Imaj Imzalama ve Dogrulama
Sigstore projesi (Cosign, Fulcio, Rekor) konteyner imajlarinin imzalanmasini ve dogrulanmasini kolaylastirir.
# Cosign ile imaj imzalama
cosign sign --key cosign.key myregistry.com/myapp:v1.2.3
# Imza dogrulama
cosign verify --key cosign.pub myregistry.com/myapp:v1.2.3
# Keyless imzalama (OIDC tabanli)
cosign sign myregistry.com/myapp:v1.2.3
SBOM (Software Bill of Materials)
SBOM, bir yazilimin icerdigi tum bilesenlerin envanterini cikarir. Guvenlik acigi yonetimi ve uyumluluk icin kritik oneme sahiptir.
# Syft ile SBOM olusturma
syft myregistry.com/myapp:v1.2.3 -o spdx-json > sbom.json
# SBOM'u imaja ekleme
cosign attach sbom --sbom sbom.json myregistry.com/myapp:v1.2.3
Tedarik Zinciri Guvenlik Kontrol Listesi
| Kontrol | Arac | Oncelik |
|---|---|---|
| Imaj tarama | Trivy, Grype | Kritik |
| Imaj imzalama | Cosign, Notation | Yuksek |
| SBOM olusturma | Syft, Trivy | Yuksek |
| Bagimliluk analizi | Dependabot, Renovate | Orta |
| Base imaj izleme | Dependabot, Diun | Orta |
| Provenance dogrulama | SLSA, in-toto | Yuksek |
Calisma Zamani Guvenligi (Runtime Security)
Imaj tarama ve kabul denetimi onleyici kontrollerdir. Ancak calisma zamaninda da anormal davranislari tespit etmek gerekir.
Falco ile Tehdit Tespiti
Falco, Linux cekirdek seviyesinde sistem cagrilarini izleyerek suphelj davranislari tespit eder.
# Falco kural ornegi: Konteyner icinde shell calistirilmasi
- rule: Terminal shell in container
desc: Bir konteynerde interaktif shell acildi
condition: >
spawned_process and container
and shell_procs
and proc.tty != 0
and container_entrypoint
output: >
Shell acildi (kullanici=%user.name konteyner=%container.name
imaj=%container.image.repository komut=%proc.cmdline)
priority: WARNING
tags: [container, shell, mitre_execution]
Cilium Tetragon ile eBPF Tabanli Guvenlik
Tetragon, eBPF teknolojisini kullanarak cekirdek seviyesinde gozlemlenebilirlik ve guvenlik politikasi uygular. Falco'dan farkli olarak, yalnizca tespit degil, engelleme de yapabilir.
# Tetragon: Hassas dosya erisimini izleme
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: sensitive-file-access
spec:
kprobes:
- call: "fd_install"
syscall: false
args:
- index: 0
type: int
- index: 1
type: "file"
selectors:
- matchArgs:
- index: 1
operator: "Prefix"
values:
- "/etc/shadow"
- "/etc/passwd"
Gizli Bilgi Yonetimi (Secret Management)
Kubernetes Secret nesneleri varsayilan olarak yalnizca base64 ile kodlanir ve sifrelenmez. Uretim ortamlarinda daha guclu cozumler gereklidir.
HashiCorp Vault Entegrasyonu
# Vault Agent Injector ile pod'a secret enjekte etme
apiVersion: v1
kind: Pod
metadata:
name: myapp
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "myapp-role"
vault.hashicorp.com/agent-inject-secret-db-creds: "secret/data/myapp/db"
vault.hashicorp.com/agent-inject-template-db-creds: |
{{- with secret "secret/data/myapp/db" -}}
DB_HOST={{ .Data.data.host }}
DB_USER={{ .Data.data.username }}
DB_PASS={{ .Data.data.password }}
{{- end }}
spec:
serviceAccountName: myapp-sa
containers:
- name: myapp
image: myapp:v1.0
External Secrets Operator
External Secrets Operator, harici secret yoneticilerinden (AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, Vault) Kubernetes Secret nesneleri olusturur.
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: database-credentials
spec:
refreshInterval: 1h
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: db-secret
data:
- secretKey: username
remoteRef:
key: secret/data/production/db
property: username
- secretKey: password
remoteRef:
key: secret/data/production/db
property: password
Kabul Denetleyicileri (Admission Controllers)
Kabul denetleyicileri, Kubernetes API sunucusuna yapilan istekleri kaynak olusturulmadan once denetler ve gerektiginde reddeder.
OPA Gatekeeper
# Constraint Template: Root olarak calisan konteynerleri engelle
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
name: k8sdisallowroot
spec:
crd:
spec:
names:
kind: K8sDisallowRoot
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8sdisallowroot
violation[{"msg": msg}] {
container := input.review.object.spec.containers[_]
not container.securityContext.runAsNonRoot
msg := sprintf("Konteyner '%v' root olarak calistirilmamalidir", [container.name])
}
Kyverno
Kyverno, Rego yerine YAML tabanli politikalar kullanir ve Kubernetes'e ozgu bir deneyim sunar.
# Kyverno: Imaj etiketinde "latest" kullanimini engelle
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disallow-latest-tag
spec:
validationFailureAction: Enforce
rules:
- name: require-image-tag
match:
any:
- resources:
kinds:
- Pod
validate:
message: "Imaj etiketi olarak 'latest' kullanilamaz."
pattern:
spec:
containers:
- image: "!*:latest"
Gatekeeper ve Kyverno Karsilastirmasi
| Ozellik | OPA Gatekeeper | Kyverno |
|---|---|---|
| Politika dili | Rego | YAML |
| Ogrenme egrisi | Dik | Dusuk |
| Mutasyon destegi | Sinirli | Kapsamli |
| Imaj dogrulama | Harici gerektirir | Dahili Cosign destegi |
| Kaynak olusturma | Yok | Var (generate) |
| Topluluk politikalari | Genis kutuphane | Buyuyen kutuphane |
Smart Maple olarak Ankara merkezli projelerimizde, Kyverno'nun hizli adapte edilebilirligi ve YAML tabanli yapisindan dolayi orta olcekli kumelerde tercih ettigimizi goruyoruz. Ancak buyuk ve cok kiracili ortamlarda OPA Gatekeeper'in Rego esnekligi avantaj saglamaktadir.
CIS Kubernetes Benchmark
CIS (Center for Internet Security) Kubernetes Benchmark, kume yapilandirmasi icin en kapsamli guvenlik referansidir. Denetim alanlari sunlardir:
- Kontrol duzlemi bilesenleri: API Server, etcd, Controller Manager, Scheduler
- Worker node yaplandirmasi: Kubelet, kube-proxy ayarlari
- Politikalar: RBAC, NetworkPolicy, Pod Security
- Loglama ve denetim: Audit log yaplandirmasi
# kube-bench ile CIS benchmark kontrolu
kube-bench run --targets master,node,policies
# Belirli bir kontrol grubu icin
kube-bench run --targets master --check 1.2.1,1.2.2
Otomatik tarama araclari:
| Arac | Kapsam | Calisma Modu |
|---|---|---|
| kube-bench | CIS Benchmark | CLI / CronJob |
| kubeaudit | Guvenlik denetimi | CLI |
| Kubescape | NSA/CISA + CIS | CLI / Operator |
| Polaris | En iyi uygulamalar | CLI / Dashboard |
Kubernetes'te Zero-Trust Yaklasimi
Zero-trust mimarisi, "hicbir sey guvenilir degildir, her sey dogrulanmalidir" ilkesine dayanir. Kubernetes ortaminda bu yaklasim su bilesenlerle uygulanir:
Service Mesh ile mTLS
Istio veya Cilium gibi service mesh cozumleri, pod'lar arasi iletisimi karsilikli TLS (mTLS) ile sifreler.
# Istio PeerAuthentication: Namespace genelinde mTLS zorunlulugu
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
name: default
namespace: production
spec:
mtls:
mode: STRICT
---
# Istio AuthorizationPolicy: Servise erisim kontrolu
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: backend-authz
namespace: production
spec:
selector:
matchLabels:
app: backend
rules:
- from:
- source:
principals: ["cluster.local/ns/production/sa/frontend-sa"]
to:
- operation:
methods: ["GET", "POST"]
paths: ["/api/*"]
Zero-Trust Kontrol Listesi
- Tum servisler arasi iletisimde mTLS uygulayin
- Her servis icin ayri ServiceAccount olusturun
- NetworkPolicy ile varsayilan olarak tum trafigi engelleyin (deny-all)
- API erisimlerinde RBAC ile en az yetki ilkesini uygulayin
- Audit log'lari merkezi bir SIEM sistemine yonlendirin
- Workload identity ile bulut kaynaklarina erisimi sinirlandin
Konteyner Guvenlik Acigi Yonetim Yasam Dongusu
Guvenlik acigi yonetimi tek seferlik bir islem degil, surekli bir dongudur. Smart Maple olarak Ankara merkezli projelerimizde asagidaki yasam dongusunu benimsiyoruz:
Asama 1: Kesfet
- CI/CD pipeline'inda her build'de otomatik imaj taramasi
- Calisma ortamindaki imajlarin periyodik taranmasi
- SBOM envanterinin guncel tutulmasi
Asama 2: Onceliklendir
- CVSS skoruna gore siniflandirma
- EPSS (Exploit Prediction Scoring System) ile gercek saldiri olasiligini degerlendirme
- Is etkisi ve erisim yuzeyine gore risk analizi
Asama 3: Gider
- Kritik ve yuksek aciklar icin SLA tanimlama (ornek: kritik 24 saat, yuksek 7 gun)
- Otomatik yama surecleri (base imaj guncelleme, bagimliluk yukseltme)
- Yama uygulanamayan durumlarda telafi edici kontroller (NetworkPolicy, WAF)
Asama 4: Dogrula
- Yama sonrasi yeniden tarama
- Penetrasyon testi ile dogrulama
- Compliance raporu olusturma
Onceliklendirme Matrisi
| CVSS Skoru | EPSS Yuzdesi | Erisim Yuz. | Oncelik | SLA |
|---|---|---|---|---|
| 9.0+ | > %10 | Internet | P0 | 24 saat |
| 7.0-8.9 | > %5 | Internet | P1 | 3 gun |
| 7.0-8.9 | < %5 | Dahili | P2 | 7 gun |
| 4.0-6.9 | Herhangi | Herhangi | P3 | 30 gun |
| 0.1-3.9 | Herhangi | Herhangi | P4 | Sonraki sprint |
Sonuc ve Oneriler
Kubernetes ve konteyner guvenligi, tek bir arac veya yapilandirma ile cozulebilecek bir sorun degildir. Derinlemesine savunma (defense in depth) stratejisi ile her katmanda guvenlik kontrolleri uygulamak gerekir.
Oncelikli adimlar olarak su uc alana odaklanmanizi oneriyoruz:
- Temel hijyen: Pod Security Standards uygulama, RBAC sikilas tirma, NetworkPolicy ile segmentasyon
- Otomatik tarama: CI/CD pipeline'ina imaj tarama ve kabul denetleyicileri entegre etme
- Calisma zamani izleme: Falco veya Tetragon ile anormal davranislari tespit etme
Guvenlik, hiz ile yarismak zorunda degildir. Dogru araclar ve sureclerle DevSecOps yaklasimini benimseyerek hem hizli hem de guvenli yazilim dagitimi mumkundur.
İlgili Makaleler
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Devamını Oku: MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a TaşımaLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Devamını Oku: LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Devamını Oku: Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
