---
title: "Permissions et RBAC"
description: "La liste exacte de ce que votre compte Kontainers peut et ne peut pas faire dans vos namespaces : ressources, verbes, ServiceAccount CI."
source_url:
  html: https://docs.blackswift.cloud/reference/permissions-et-rbac/
  md: https://docs.blackswift.cloud/reference/permissions-et-rbac.md
---

# Permissions et RBAC

> La liste exacte de ce que votre compte Kontainers peut et ne peut pas faire dans vos namespaces : ressources, verbes, ServiceAccount CI.

Cette page décrit les permissions **réellement déployées** pour un compte client
Kontainers, dans ses namespaces. C'est l'équivalent lisible de
`kubectl auth can-i --list`.

Deux identités coexistent :

- **votre compte utilisateur** (kubeconfig téléchargé depuis Rancher) — usage
  interactif ;
- **le ServiceAccount `bs-namespace-member`**, pré-provisionné dans chaque
  namespace — pensé pour la CI/CD.

## Workloads

| Ressource | Utilisateur | SA `bs-namespace-member` |
| --- | --- | --- |
| Pods, Deployments, StatefulSets, Jobs, CronJobs | CRUD complet | CRUD complet |
| ReplicaSets | CRUD complet | lecture seule |
| `deployments/scale`, `statefulsets/scale` | ✅ | ✅ |
| `pods/log`, `pods/exec`, `pods/portforward` | ✅ | ✅ |
| `pods/attach`, `pods/ephemeralcontainers` (`kubectl debug`) | ❌ | ✅ |

## Réseau et exposition

| Ressource | Utilisateur | SA |
| --- | --- | --- |
| Services | CRUD complet | CRUD complet |
| `services/proxy` | ❌ | ✅ |
| Ingresses | CRUD complet | CRUD complet |
| NetworkPolicies | lecture seule | lecture seule |

## Configuration et stockage

| Ressource | Utilisateur | SA |
| --- | --- | --- |
| ConfigMaps, Secrets | CRUD complet | CRUD complet |
| PersistentVolumeClaims | CRUD complet | CRUD complet |
| ServiceAccounts | CRUD complet | lecture seule |

## Certificats TLS (cert-manager)

| Ressource | Droits |
| --- | --- |
| Certificates, Issuers | CRUD complet |
| CertificateRequests, Orders, Challenges (ACME) | lecture seule |

Vous pouvez donc suivre l'émission d'un certificat Let's Encrypt de bout en bout :

```bash
kubectl get certificates,certificaterequests,orders,challenges -n <namespace>
```

## PostgreSQL managé (CNPG)

| Ressource | Droits |
| --- | --- |
| Clusters, Databases, Poolers, Backups, ScheduledBackups | CRUD complet |
| ImageCatalogs, Publications, Subscriptions, FailoverQuorums | lecture seule |

Un guide dédié PostgreSQL managé est à venir.

## Scaling et disponibilité

| Ressource | Droits |
| --- | --- |
| HorizontalPodAutoscalers | CRUD complet |
| PodDisruptionBudgets | CRUD complet |

## Observabilité et diagnostic

| Ressource | Droits |
| --- | --- |
| ServiceMonitors, PodMonitors (Prometheus) | CRUD complet |
| Events | lecture seule |
| ResourceQuotas, LimitRanges | lecture seule |
| Endpoints, EndpointSlices | lecture seule |
| ControllerRevisions | lecture seule |
| `metrics.k8s.io` (`kubectl top pods`) | lecture seule |

## Accès CI/CD

| Ressource | Droits |
| --- | --- |
| BlackswiftPermanentKubeconfigs | CRUD complet |

Permet de générer des kubeconfigs **non expirants** pour vos pipelines.
Voir *CI/CD avec le ServiceAccount* *(à venir)*.

## Lectures cluster-wide autorisées

- `storageclasses` (les 2 classes disponibles) ;
- `apiservices` ;
- `get` sur vos propres namespaces (pas de listing global).

## Ce que vous ne pouvez pas faire

- Lister les namespaces du cluster (`kubectl get ns` est refusé) — utilisez les
  namespaces nommés dans votre kubeconfig ;
- Accéder aux nœuds, PersistentVolumes, CRDs, ClusterRoles ;
- Créer ou modifier des NetworkPolicies ;
- `pods/proxy`, `deletecollection` ;
- Toute action hors de vos namespaces.

<Aside type="note">
Ces restrictions sont le socle de l'isolation multi-tenant de la plateforme —
voir [Le modèle Kontainers](https://docs.blackswift.cloud/comprendre/le-modele-kontainers.md). Si un droit vous
manque pour un cas d'usage légitime, parlez-en au
[support](https://docs.blackswift.cloud/depanner/contacter-le-support.md).
</Aside>

## Vérifier vous-même

```bash
# Qui suis-je ?
kubectl auth whoami

# Que puis-je faire dans mon namespace ?
kubectl auth can-i --list -n <votre-namespace>

# Test ciblé
kubectl auth can-i create clusters.postgresql.cnpg.io -n <votre-namespace>
```
