Rollenbasierte Zugriffskontrolle in OpenShift implementiert granulare Autorisierungsmechanismen durch berechtigungsbasierte Zugriffskontrollmodelle mit Rollendefinition, Berechtigungszuweisung und Richtliniendurchsetzung. Diese RBAC-Frameworks ermöglichen die Umsetzung des Prinzips der minimalen Berechtigungen und organisatorische Sicherheits-Governance für sichere Multi-Tenant-Plattformoperationen.
OpenShifts RBAC-Architektur trennt Benutzer, Rollen und Berechtigungen durch Abstraktionsebenen, die flexible Berechtigungszuweisungen ohne direkte Benutzer-zu-Berechtigung-Zuordnung ermöglichen. Diese rollenbasierte Zugriffskontrolle reduziert die administrative Komplexität für umfangreiches Berechtigungsmanagement.
Die Berechtigungsgranularität umfasst Ressourcentyp, Ressourceninstanz, Namespace-Bereich und Aktionsspezifität für feinabgestimmte Zugriffskontrolle. Dieses mehrdimensionale Berechtigungsmodell ermöglicht präzise Autorisierungsrichtlinien.
[Diagramm: RBAC-Architektur mit Rollen, Berechtigungen und Bindungen]
Subjects (Subjekte) sind Entitäten, die Aktionen ausführen können - Benutzer, Gruppen oder Service-Accounts. Sie sind die “Wer” in der Autorisierungsgleichung.
Roles (Rollen) definieren Sammlungen von Berechtigungen. Sie spezifizieren, welche Aktionen auf welchen Ressourcen ausgeführt werden dürfen.
RoleBindings verknüpfen Subjects mit Rollen und definieren damit, wer welche Berechtigungen hat.
Resources (Ressourcen) sind die OpenShift/Kubernetes-Objekte, auf die zugegriffen werden soll - Pods, Services, Deployments, etc.
Verbs (Verben) sind die Aktionen, die auf Ressourcen ausgeführt werden können - get, list, create, update, delete, etc.
OpenShift verwendet ein additives Berechtigungsmodell - Berechtigungen werden gewährt, nicht verweigert. Wenn keine explizite Berechtigung vorhanden ist, wird der Zugriff verweigert. Dies folgt dem Prinzip der minimalen Berechtigungen.
Rollenhierarchie-Unterstützung implementiert Rollenvererbungsmechanismen für die Abbildung von Organisationsstrukturen und Berechtigungsvererbung. Diese hierarchische RBAC unterstützt komplexe organisatorische Berechtigungsmodelle.
OpenShift unterscheidet zwischen zwei Arten von Rollen: Cluster Roles und (Namespace-spezifische) Roles.
Cluster Roles definieren plattformweite Berechtigungen für namespace-übergreifende Operationen und Cluster-Administrationsaufgaben. Diese globalen Rollen ermöglichen administrativen Zugriff und Plattform-Management-Funktionen.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]Namespace Roles beschränken Berechtigungen auf spezifische Namespaces für projektbezogene Zugriffskontrolle. Diese lokalen Rollen implementieren Sicherheitsgrenzen auf Projektebene und Multi-Tenancy-Unterstützung.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: development
name: pod-manager
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "create", "update", "delete"]Custom-Rollenerstellung ermöglicht organisationsspezifische Rollendefinitionen mit maßgeschneiderten Berechtigungssätzen für einzigartige Geschäftsanforderungen. Diese benutzerdefinierten Rollen unterstützen flexible Autorisierungsmodelle.
Beispiel für eine Custom Role:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: production
name: deployment-manager
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "create", "update", "patch"]
- apiGroups: [""]
resources: ["configmaps", "secrets"]
verbs: ["get", "list"]
resourceNames: ["app-config", "app-secrets"]RBAC unterstützt verschiedene Arten von Subjects, die jeweils unterschiedliche Anwendungsfälle abdecken.
User Role Bindings verknüpfen einzelne Benutzer mit Rollen für direkte Berechtigungszuweisung. Diese direkten Benutzerzuweisungen bieten granulare Kontrolle für spezifische Benutzeranforderungen.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-binding
namespace: development
subjects:
- kind: User
name: alice@company.com
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-manager
apiGroup: rbac.authorization.k8s.ioGroup Role Bindings ermöglichen kollektive Berechtigungszuweisung durch gruppenmitgliedschaftsbasierte Rollenzuweisung. Diese gruppenbasierten Zuweisungen reduzieren den administrativen Aufwand für große Benutzergruppen.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admins
subjects:
- kind: Group
name: cluster-administrators
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.ioService Account Role Bindings gewähren automatisierten Systemen und Anwendungen spezifische Berechtigungen für Systemintegration. Diese Service-Zuweisungen unterstützen DevOps-Automatisierung und Inter-Service-Kommunikation.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: monitoring-binding
namespace: monitoring
subjects:
- kind: ServiceAccount
name: prometheus
namespace: monitoring
roleRef:
kind: ClusterRole
name: prometheus
apiGroup: rbac.authorization.k8s.ioOpenShift implementiert verschiedene Berechtigungsbereiche, um Sicherheitsgrenzen zu definieren und Multi-Tenancy zu unterstützen.
Namespace-basierte Berechtigungen beschränken Zugriff auf spezifische Namespaces für Sicherheitsisolation auf Projektebene. Diese Bereichsbeschränkungen implementieren Multi-Tenant-Sicherheitsgrenzen.
Cluster-basierte Berechtigungen ermöglichen plattformweiten Zugriff für administrative Operationen und namespace-übergreifendes Management. Diese globalen Berechtigungen sind für die Plattformadministration erforderlich.
Ressourcenspezifische Berechtigungen definieren granulare Zugriffskontrolle für einzelne Ressourcentypen und -instanzen. Diese Ressourcengranularität ermöglicht feinabgestimmte Autorisierungsrichtlinien.
| Verb | Bedeutung | Anwendungsfall |
|---|---|---|
get |
Einzelne Ressource abrufen | Details anzeigen |
list |
Mehrere Ressourcen auflisten | Übersichten erstellen |
create |
Neue Ressourcen erstellen | Deployment von Anwendungen |
update |
Bestehende Ressourcen ändern | Konfigurationsänderungen |
patch |
Teilweise Änderungen | Selective Updates |
delete |
Ressourcen löschen | Cleanup-Operationen |
watch |
Änderungen überwachen | Real-time Monitoring |
OpenShift stellt mehrere vordefinierte Rollen bereit, die häufige Berechtigungsmuster abdecken.
| Rolle | Bereich | Berechtigungen | Zielgruppe |
|---|---|---|---|
| cluster-admin | Cluster | Vollständige Cluster-Administration | Platform-Administratoren |
| admin | Namespace | Vollständige Projekt-Administration | Projekt-Manager |
| edit | Namespace | Ressourcen erstellen/ändern (keine RBAC) | Entwickler |
| view | Namespace | Nur-Lese-Zugriff | Stakeholder, Monitoring |
| self-provisioner | Cluster | Projekte erstellen | Benutzer mit Projekt-Erstellungsrechten |
Die Admin-Rolle gewährt vollständigen administrativen Zugriff innerhalb zugewiesener Namespaces für komplettes Projektmanagement. Diese administrative Rolle ermöglicht Projektebenen-Administration ohne cluster-weiten Zugriff.
Admin-Berechtigungen umfassen: - Alle Ressourcen in einem Namespace verwalten - RBAC-Einstellungen innerhalb des Namespaces ändern - Quotas und Limits anzeigen (aber nicht ändern) - Andere Benutzer zu Projekten hinzufügen
Die Edit-Rolle ermöglicht Ressourcenänderungszugriff ohne administrative Privilegien für entwicklerorientiierte Operationen. Diese Entwicklerrolle unterstützt Anwendungsentwicklungs-Workflows ohne Sicherheitsrisiko.
Edit-Berechtigungen umfassen: - Pods, Services, Deployments erstellen und ändern - ConfigMaps und Secrets verwalten - Routes und Builds erstellen - Keine RBAC-Änderungen oder Benutzer-Management
Die View-Rolle bietet Nur-Lese-Zugriff für Monitoring und Audit-Zwecke ohne Änderungsmöglichkeiten. Diese Beobachterrolle unterstützt Compliance-Monitoring und Systemobservability.
View-Berechtigungen beschränken sich auf: - Ressourcen anzeigen und auflisten - Logs lesen - Metriken abrufen - Keine Erstellung oder Änderung von Ressourcen
SCCs erweitern RBAC um Container-Sicherheitsrichtlinien und definieren, unter welchen Sicherheitsbedingungen Container ausgeführt werden dürfen.
SCC-Zuweisungssteuerung definiert Container-Sicherheitsrichtlinien basierend auf Benutzerrollen und Service-Account-Berechtigungen. Diese Sicherheitsrichtlinienintegration erweitert RBAC um Container-Sicherheits-Governance.
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
name: custom-scc
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowPrivilegedContainer: false
allowedCapabilities: null
runAsUser:
type: MustRunAsNonRootPrivilege-Escalation-Verhinderung implementiert Kontrollen gegen unbefugte Rechteausweitung durch SCC-Richtliniendurchsetzung. Dieser Escalation-Schutz gewährleistet die Integrität von Sicherheitsgrenzen.
| SCC Name | Zweck | Sicherheitsniveau |
|---|---|---|
| restricted | Standard für die meisten Workloads | Hoch |
| anyuid | Container als beliebige UID laufen lassen | Mittel |
| hostaccess | Host-Ressourcen-Zugriff | Niedrig |
| privileged | Vollständige Container-Privilegien | Sehr niedrig |
OpenShift bietet umfangreiche Audit-Funktionen für RBAC-Compliance und Sicherheitsmonitoring.
Berechtigungs-Audit-Trails protokollieren alle Autorisierungsentscheidungen für Compliance-Berichterstattung und Sicherheitsanalyse. Diese Audit-Logs unterstützen regulatorische Compliance und Sicherheitsmonitoring.
# RBAC-Events in Audit-Logs anzeigen
oc adm node-logs --role=master --path=audit/audit.log | \
grep '"objectRef":.*"resource":".*binding"'Zugriffs-Review-Prozesse implementieren regelmäßige Berechtigungsvalidierung für die Identifizierung ungenutzter oder übermäßiger Berechtigungen. Diese Zugriffs-Reviews gewährleisten die Einhaltung des Prinzips der minimalen Berechtigungen.
Wichtige Review-Fragen: - Welche Benutzer haben administrative Berechtigungen? - Gibt es ungenutzte Rollenbindungen? - Entsprechen die Berechtigungen den aktuellen Jobrollen? - Sind temporäre Berechtigungen noch aktiv?
Rollen-Nutzungsanalysen analysieren Rollenzuweisungsmuster und Berechtigungsnutzung für Optimierungsmöglichkeiten. Diese Analysen unterstützen RBAC-Optimierung und Sicherheitsverbesserungen.
OpenShift implementiert verschiedene Strategien für sichere Multi-Tenancy durch RBAC-basierte Isolation.
Mandanten-Isolationsmechanismen implementieren vollständige Berechtigungstrennung zwischen verschiedenen Mandanten oder Organisationen. Diese Isolationskontrollen gewährleisten Multi-Tenant-Sicherheitsgrenzen.
Standardmäßig können Benutzer nur auf Projekte zugreifen, für die sie explizite Berechtigungen haben. Diese Isolation erfolgt automatisch durch OpenShifts RBAC-System.
Mandanten-übergreifende Berechtigungsfreigabe ermöglicht kontrollierten Zugriff zwischen Mandanten für Kollaborationsszenarien. Diese selektive Freigabe unterstützt mandanten-übergreifende Zusammenarbeit.
# Beispiel: Shared Service Account für monitoring
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cross-tenant-monitoring
subjects:
- kind: ServiceAccount
name: monitoring-sa
namespace: tenant-a
- kind: ServiceAccount
name: monitoring-sa
namespace: tenant-b
roleRef:
kind: ClusterRole
name: monitoring-reader
apiGroup: rbac.authorization.k8s.ioOpenShift kann RBAC-Informationen mit externen Identity- und Policy-Systemen synchronisieren.
LDAP-Gruppen-Integration synchronisiert externe Gruppenmitgliedschaften mit OpenShift-Rollenzuweisungen für konsistentes Berechtigungsmanagement. Diese LDAP-Integration unterstützt die Nutzung bestehender Enterprise-Identity-Infrastrukturen.
Active Directory-Integration ermöglicht Windows-Domain-basierte Rollenzuweisung für Hybrid-Umgebungs-Berechtigungsmanagement. Diese AD-Integration unterstützt Windows-Ökosystem-Integration.
Custom Authorization Webhooks implementieren externe Autorisierungslogik für spezialisierte Berechtigungsanforderungen. Diese Webhook-Integration ermöglicht komplexe Autorisierungsmodelle.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionWebhook
metadata:
name: custom-rbac-webhook
webhooks:
- name: rbac.example.com
clientConfig:
service:
name: rbac-webhook
namespace: rbac-system
path: "/validate"
rules:
- operations: ["CREATE", "UPDATE"]
apiGroups: ["rbac.authorization.k8s.io"]
resources: ["rolebindings", "clusterrolebindings"]OpenShift bietet verschiedene Tools für RBAC-Diagnose und Fehlerbehebung.
# Berechtigungen eines Benutzers prüfen
oc auth can-i create pods --as=alice@company.com
# Alle Berechtigungen eines Service Accounts anzeigen
oc auth can-i --list --as=system:serviceaccount:default:builder
# Detaillierte Berechtigung für spezifische Ressource
oc auth can-i get secrets/mysecret -n production --as=bob@company.comZugriffs-verweigert-Analysen implementieren detaillierte Protokollierung für Autorisierungsfehler mit Lösungsanleitungen. Diese Fehleranalyse beschleunigt die Behebung von Berechtigungsproblemen.
Häufige RBAC-Probleme und Lösungen:
| Problem | Ursache | Lösung |
|---|---|---|
| “Forbidden” beim API-Zugriff | Fehlende Berechtigung für Verb/Ressource | RoleBinding mit entsprechender Rolle erstellen |
| Service Account kann nicht deployen | Fehlende SCC-Berechtigung | Service Account zu passender SCC hinzufügen |
| User sieht keine Projekte | Keine Projekt-Berechtigungen | User zu Projekt-Rolle hinzufügen |
| Cross-Namespace-Zugriff verweigert | ClusterRole statt Role benötigt | ClusterRoleBinding verwenden |
Rollen-Konflikt-Erkennung identifiziert widersprüchliche Berechtigungszuweisungen und Policy-Inkonsistenzen. Diese Konfliktserkennung gewährleistet RBAC-Modell-Konsistenz.
# Effektive Berechtigungen für einen Benutzer anzeigen
oc describe rolebinding,clusterrolebinding --all-namespaces | \
grep -A 10 -B 5 "alice@company.com"
# Service Account Berechtigungen analysieren
oc get rolebinding,clusterrolebinding -o wide | \
grep "system:serviceaccount:monitoring:prometheus"Prinzip der minimalen Berechtigungen: Gewähren Sie nur die minimal notwendigen Berechtigungen für die jeweilige Aufgabe. Beginnen Sie mit restriktiven Berechtigungen und erweitern Sie bei Bedarf.
Gruppenbasierte Zuweisungen: Verwenden Sie Gruppenmitgliedschaften anstelle direkter Benutzerzuweisungen für einfachere Verwaltung und Konsistenz.
Regelmäßige Audits: Führen Sie regelmäßige Reviews der Berechtigungen durch, um ungenutzte oder übermäßige Berechtigungen zu identifizieren.
Dokumentation: Dokumentieren Sie Custom Roles und ihre Anwendungsfälle für zukünftige Referenz und Compliance.
Namespace-Isolation: Nutzen Sie Namespaces konsequent für Mandanten-Isolation und begrenzen Sie Cross-Namespace-Berechtigungen auf das notwendige Minimum.
Service Account Management: Erstellen Sie spezifische Service Accounts für verschiedene Anwendungen anstatt den default Service Account zu verwenden.
Testing: Testen Sie RBAC-Konfigurationen in Entwicklungsumgebungen, bevor Sie sie in der Produktion implementieren.