Aller au contenu principal

Sécurisation des espaces de noms locataires avec la fonctionnalité d’autorisation restreinte dans Chaos Mesh

· 4 minutes de lecture
Anurag Paliwal
Contributor of Chaos Mesh
Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Outils d'ingénierie du chaos
Outils d'ingénierie du chaos

Un cluster multi-locataire est partagé par plusieurs utilisateurs et/ou charges de travail désignés comme "locataires". Les opérateurs de clusters multi-locataires doivent isoler les locataires les uns des autres pour minimiser les dommages qu'un locataire compromis ou malveillant pourrait causer au cluster et aux autres locataires.

Multilocation au niveau du cluster

Lorsque vous concevez une architecture multi-locataire, vous devez considérer les couches d'isolation des ressources dans Kubernetes : cluster, espace de noms, nœud, Pod et conteneur.

Bien que Kubernetes ne puisse garantir une isolation parfaitement sécurisée entre locataires, il propose des fonctionnalités suffisantes pour des cas d'usage spécifiques. Vous pouvez séparer chaque locataire et ses ressources Kubernetes dans ses propres espaces de noms. Kubernetes prend en charge plusieurs clusters virtuels s'appuyant sur le même cluster physique. Ces clusters virtuels sont appelés espaces de noms. Les espaces de noms sont conçus pour être utilisés dans des environnements avec de nombreux utilisateurs répartis sur plusieurs équipes ou projets.

Cluster équipé de Chaos Mesh

Vous avez conçu votre cluster Kubernetes pour héberger plusieurs services locataires. Vous avez suivi les meilleures pratiques de sécurité pour Kubernetes : chaque service locataire s'exécute dans ses propres espaces de noms, les utilisateurs de ces services locataires disposent d'un accès approprié uniquement pour leurs espaces de noms respectifs, etc.

Vous avez activé Chaos Mesh (Chaos Mesh est une plateforme d'ingénierie du chaos cloud-native qui orchestre le chaos dans des environnements Kubernetes) sur le cluster afin que vos services locataires puissent effectuer différentes activités de chaos pour garantir la résilience de leur application/système. Vous avez également accordé des droits spécifiques de Chaos Mesh à ces utilisateurs de services locataires afin qu'ils puissent gérer les ressources Chaos Mesh via le RBAC.

Supposons qu'un utilisateur locataire souhaite effectuer des opérations de suppression de pod dans son espace de noms, par exemple chaos-mesh. Pour ce faire, l'utilisateur a créé le fichier YAML Chaos Mesh suivant :

apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: pod-kill
namespace: chaos-mesh
spec:
action: pod-kill
mode: one
selector:
namespaces:
- tidb-cluster-demo
labelSelectors:
'app.kubernetes.io/component': 'tikv'
scheduler:
cron: '@every 1m'

L'utilisateur dispose des droits requis sur l'espace de noms chaos-mesh, mais n'a pas de droits sur l'espace de noms tidb-cluster-demo. Lorsque l'utilisateur applique ce fichier YAML via kubectl, il crée la ressource Chaos Mesh pod-kill dans l'espace de noms chaos-mesh. Comme visible dans la section selector, l'utilisateur a spécifié un autre espace de noms (tidb-cluster-demo), ce qui signifie que les pods sélectionnés pour cette opération de chaos proviendront de tidb-cluster-demo, et non de celui auquel il a accès (chaos-mesh). Cela signifie que cet utilisateur peut impacter un autre espace de noms pour lequel il n'a pas les droits. Problème !!!

Depuis la version Chaos Mesh 1.1.3, ce problème de sécurité est résolu grâce à une fonctionnalité d'autorisation restreinte. Désormais, lorsque l'utilisateur applique ce fichier YAML, le système affiche une erreur similaire à :

Error when creating "pod/pod-kill.yaml": admission webhook "vauth.kb.io" denied the request: ... is forbidden on namespace
tidb-cluster-demo

Problème résolu !

Notez que si l'utilisateur dispose des droits requis sur l'espace de noms tidb-cluster-demo, aucune erreur ne se produira.

Pour plus de tutoriels

Si vous souhaitez imposer qu'aucun utilisateur ne puisse créer de chaos entre espaces de noms, consultez mon précédent article : Sécurisation des services locataires lors de l'utilisation de Chaos Mesh avec OPA.

Pour conclure

Si Chaos Mesh vous intéresse et que vous souhaitez en savoir plus, vous êtes invité à rejoindre le canal Slack ou à soumettre vos pull requests et issues sur son dépôt GitHub.