mirror of
https://github.com/taylanbakircioglu/flowfish.git
synced 2026-09-16 15:45:14 +00:00
d7ca50b387
Multi-cluster dependency mapping, real-time network monitoring, impact analysis, and CI/CD integration capabilities. Made-with: Cursor
5.8 KiB
5.8 KiB
Flowfish Security Guide
🔐 Multi-Cluster Security Architecture
Bu doküman, Flowfish'in uzak cluster'lara güvenli bağlantı kurma mekanizmalarını açıklar.
1. Kimlik Doğrulama (Authentication)
Service Account Token
Remote cluster'lara bağlantı için read-only ServiceAccount kullanılır:
# Minimum Required Permissions
rules:
- apiGroups: [""]
resources: ["pods", "nodes", "namespaces", "services", "events"]
verbs: ["get", "list", "watch"] # SADECE OKUMA
- apiGroups: ["apps"]
resources: ["deployments", "daemonsets", "replicasets", "statefulsets"]
verbs: ["get", "list", "watch"] # SADECE OKUMA
- apiGroups: ["gadget.kinvolk.io"]
resources: ["traces"]
verbs: ["get", "list", "watch"] # SADECE OKUMA
Token Güvenliği
- ✅ Tokenlar Fernet (AES-128-CBC) ile şifrelenerek PostgreSQL'de saklanır
- ✅ Şifreleme anahtarı environment variable olarak geçirilir
- ❌ Token'ı kaynak kodda veya config dosyalarında saklamayın
- ❌ Token'ı log'lara yazdırmayın
Token Oluşturma
# 1 yıllık token oluştur (production için daha kısa önerilir)
oc create token flowfish-remote-reader -n flowfish --duration=8760h
2. TLS/SSL Güvenliği
CA Sertifikası Doğrulaması
Remote cluster bağlantısında mutlaka TLS doğrulama yapılmalıdır:
┌──────────────────┐ TLS ┌──────────────────┐
│ Flowfish │ ◄──────────────────── │ Remote │
│ (Internal) │ CA Cert Verified │ Cluster │
└──────────────────┘ └──────────────────┘
Yapılandırma Seçenekleri
| Seçenek | Açıklama | Güvenlik |
|---|---|---|
| CA Certificate | Remote cluster'ın CA sertifikası | ✅ Önerilen |
| Skip TLS Verify | TLS doğrulamayı atla | ⚠️ Sadece test ortamı |
CA Sertifikası Alma
# OpenShift/Kubernetes'ten CA sertifikasını al
oc get secret flowfish-reader-token -n flowfish -o jsonpath='{.data.ca\.crt}' | base64 -d
3. Network Güvenliği
Inspector Gadget gRPC Bağlantısı
┌──────────────────┐ ┌──────────────────┐
│ Flowfish │ gRPC:16060 │ Remote │
│ Ingestion │ ──────────────────────►│ Inspector │
│ Service │ (LoadBalancer) │ Gadget │
└──────────────────┘ └──────────────────┘
Önerilen Network Politikaları
# Remote cluster'da Inspector Gadget için NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-flowfish-ingress
namespace: flowfish
spec:
podSelector:
matchLabels:
app: inspektor-gadget
ingress:
- from:
- ipBlock:
cidr: 10.0.0.0/8 # Flowfish internal cluster IP range
ports:
- protocol: TCP
port: 16060
4. Şifreleme Yapılandırması
Encryption Key Oluşturma
# Yeni Fernet key oluştur
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Kubernetes Secret Olarak Saklama
apiVersion: v1
kind: Secret
metadata:
name: flowfish-encryption-key
namespace: flowfish
type: Opaque
stringData:
FLOWFISH_ENCRYPTION_KEY: "your-generated-fernet-key-here"
Deployment'a Ekleme
env:
- name: FLOWFISH_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: flowfish-encryption-key
key: FLOWFISH_ENCRYPTION_KEY
5. Yetkilendirme (Authorization)
RBAC Prensipleri
| Prensip | Uygulama |
|---|---|
| Least Privilege | Sadece gerekli minimum yetkiler |
| Read-Only | GET, LIST, WATCH - CREATE/UPDATE/DELETE yok |
| Namespace Scoped | Mümkünse ClusterRole yerine Role kullan |
| Audit Trail | Tüm erişimler loglanır |
Yetki Matrisi
| Kaynak | get | list | watch | create | update | delete |
|---|---|---|---|---|---|---|
| pods | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| nodes | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| namespaces | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| deployments | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| traces | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
6. Güvenlik Kontrol Listesi
Production Deployment Öncesi
FLOWFISH_ENCRYPTION_KEYenvironment variable ayarlandı- Remote cluster için read-only ServiceAccount oluşturuldu
- CA sertifikası yapılandırıldı (skip_tls_verify = false)
- NetworkPolicy'ler uygulandı
- Token süresi uygun (önerilen: 90 gün, max: 1 yıl)
- Audit logging aktif
Periyodik Güvenlik Görevleri
| Görev | Sıklık |
|---|---|
| Token rotasyonu | Her 90 gün |
| RBAC audit | Aylık |
| CA sertifikası yenileme | Sertifika süresine göre |
| Güvenlik log incelemesi | Haftalık |
7. Sorun Giderme
TLS Hataları
SSL: CERTIFICATE_VERIFY_FAILED
Çözüm: CA sertifikasını kontrol edin veya yeniden indirin.
Yetki Hataları
403 Forbidden - User cannot list resource
Çözüm: ClusterRoleBinding'in doğru namespace ve ServiceAccount'a bağlı olduğunu kontrol edin.
Token Süresi Dolmuş
401 Unauthorized - Token expired
Çözüm: Yeni token oluşturun:
oc create token flowfish-remote-reader -n flowfish --duration=2160h
8. İletişim
Güvenlik açıkları için: security@flowfish.io