Envoy (Autorisation Service Mesh)
envoy-authz est un service d'autorisation externe Envoy qui utilise Casbin pour RBAC/ABAC. Il implémente l'API gRPC d'authentification externe d'Envoy et fonctionne avec Istio ou tout autre maillage basé sur Envoy.
Prérequis
- Envoy 1.17 ou version ultérieure
- Istio ou un autre service mesh basé sur Envoy
- Dépendances gRPC
Les dépendances sont gérées via go.mod.
Fonctionnement
- Un client initie une requête HTTP
- Envoy intercepte la requête et la transmet au serveur d'autorisation gRPC
- Le serveur évalue la requête par rapport aux politiques Casbin
- Les requêtes autorisées sont traitées ; les requêtes non autorisées sont bloquées
Le serveur gRPC implémente la définition protobuf de l'external_auth.proto d'Envoy :
// A generic interface for performing authorization checks on incoming
// requests to a networked service.
service Authorization {
// Performs an authorization check based on the attributes associated with the
// incoming request and returns a status of `OK` or not `OK`.
rpc Check(v2.CheckRequest) returns (v2.CheckResponse);
}
Le serveur d'autorisation doit implémenter la méthode Check() définie ci-dessus.
Utilisation
- Configurez vos politiques Casbin dans les fichiers de configuration en suivant la documentation Casbin.
Vous pouvez tester vos politiques à l'aide de l'éditeur Casbin en ligne.
- Lancez le serveur d'autorisation :
go build .
./authz
- Appliquez la configuration Envoy :
envoy -c authz.yaml -l info
Une fois qu'Envoy démarre, il routera les requêtes entrantes via le middleware d'autorisation.
Intégration avec Istio
Pour activer ce middleware, configurez votre système afin de transmettre les informations d'identité utilisateur via des en-têtes personnalisés dans les jetons JWT ou les en-têtes de requête. Pour obtenir des instructions sur la modification des en-têtes de requête, consultez la documentation officielle Istio.
Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.