Genehmigung des Service-Mesh durch den Gesandten
Envoy-authz ist eine Middleware von Envoy, die externe RBAC & ABAC-Autorisierung durch Kasbin durchführt. Diese Middleware verwendet die externe Autorisierungs-API des Envoy über einen gRPC-Server. Dieser Proxy würde in jeder Art von Gesandtennetzen wie Istio eingesetzt werden.
Anforderungen
- Gesandte 1.17+
- Istio oder jede Art von Service-Netz
- grpc Abhängigkeiten
Abhängigkeiten werden durch go.mod
verwaltet.
Arbeiten von Middleware
- Ein Client würde eine http-Anfrage stellen.
- Envoy-Proxy würde diese Anfrage an den grpc-Server senden.
- Der grpc Server autorisiert dann die Anfrage basierend auf Casbin-Richtlinien.
- Wenn die Anfrage autorisiert wird, wird sie durch oder anderweitig versandt, sie wird abgelehnt.
Der grpc Server basiert auf Protokollpuffer von external_auth.proto von Envoy.
// Eine generische Schnittstelle, um Autorisierungsprüfung bei eingehenden
// Anfragen an einen vernetzten Dienst durchzuführen.
service Authorization {
// Autorisierungsprüfung basierend auf den Attributen der
// eingehenden Anfrage durchführen und gibt den Status `OK` oder nicht `OK` zurück.
rpc Check(v2.CheckRequest) liefert (v2.CheckResponse);
}
Aus der obigen Proto-Datei müssen wir Check()
Dienst im Autorisierungsserver verwenden.
Auslastung
- Define the Casbin policies under config files by following this guide.
You can verify/test your policies on online casbin-editor.
- Starte den Autorisierungsserver indem du läuft:-
$ go build .
$ ./authz
- Lade die Gesandte Konfiguration:-
$ envoy -c authz.yaml -l info
Sobald der Gesandte beginnt, fängt er an, Anfragen für den Genehmigungsprozess abzufangen.
Integration in Istio
Sie müssen benutzerdefinierte Kopfzeilen senden, die Benutzernamen in den JWT Token OF Headern enthalten, damit diese Middleware funktioniert. Sie können die offiziellen Istio Docs überprüfen, um weitere Informationen über die Änderung Anfrage-Header
zu erhalten.