Référence de contrôle d'accès
Copiez un prompt de configuration avec les étapes d'installation et la guide markdown complète pour ce plugin.
Capgo utilise Contrôle d'accès basé sur le rôle (RBAC) pour gérer ce que chaque membre de l'équipe peut faire. Les rôles sont organisés par portée — de l'ensemble de l'organisation jusqu'à un seul bundle.
Pour une présentation visuelle de la gestion des membres dans le tableau de bord, voir Organisation.
Portées de rôle
Sous-titre « Portées de rôle »Chaque rôle appartient à une portée qui détermine à quoi il accorde accès.
| Portée | Portée | Exemple d'utilisation |
|---|---|---|
| Organisation | L'ensemble de l'org et tous ses applications | Votre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de facturation |
| Application | Une seule application et ses canaux | Un prestataire travaillant sur une application obtient Développeur d'application |
| Canaux | Un seul canal au sein d'une application | Un ingénieur QA ne gère que le staging canal |
| Pack | Une seule version de pack | A un reviewer nécessite accès en lecture à une version spécifique |
Un membre peut détenir un rôle par cible de portée — par exemple, un rôle d'org, un rôle sur l'application A et un rôle différent sur l'application B.
Rôles d'organisation
Section intitulée “Rôles d'organisation”Ces rôles sont attribués lors de l'invitation d'un membre. Ils accordent l'accès à l'ensemble de l'organisation.
| Rôle | Nom interne | Description |
|---|---|---|
| Administrateur supérieur | org_super_admin | Équivalent à propriétaire. Contrôle total, y compris la suppression de l'org, la gestion des factures et le transfert d'applications. Attribué automatiquement au créateur de l'org. |
| Administrateur | org_admin | Administration complète — gérer les membres, les applications, les canaux. Impossible de supprimer l'org, de mettre à jour la facturation, de transférer les applications ou de promouvoir les utilisateurs en Super Administrateur. |
| Gestionnaire de facturation | org_billing_admin | Accès facturation uniquement : afficher et mettre à jour les informations de facturation, les factures et les journaux de suivi de facturation. Pas d'accès aux applications ou aux membres. |
| Membre | org_member | Accès en lecture seule à l'org et à toutes ses applications. |
Matrice de permissions de l'org
Section intitulée « Matrice de permissions de l'org »| Permission | Description | Super Administrateur | Administrateur | Gestionnaire des factures | Membre |
|---|---|---|---|---|---|
org.read | Voir l'organisation | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Modifier le nom, le logo et l'adresse e-mail de gestion de l'organisation | ✅ | ✅ | ❌ | ❌ |
org.delete | Supprimer définitivement l'organisation | ✅ | ❌ | ❌ | ❌ |
org.read_members | Voir la liste des membres | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Inviter de nouveaux membres | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Changer les rôles des membres (l'administrateur ne peut pas promouvoir à Super Administrateur — bloqué par la hiérarchie des rôles) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | Voir les informations de facturation et le plan actuel | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Mettre à jour le moyen de paiement et le plan | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Voir les factures | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Voir le journal d'activité de l'organisation | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Afficher le journal d'audit spécifique à la facturation | ✅ | ✅ | ✅ | ❌ |
peut faire, dans tous les applications et canaux.
Rôles d'application : Section intitulée « Rôles d'application »Attribué à une seule application. Utilisez-ces rôles lorsque l'un des membres de l'équipe devrait travailler uniquement sur une application, et non sur toute l'organisation.
| Rôle | Nom interne | Description |
|---|---|---|
| Administrateur d'application | app_admin | Contrôle total d'une application — canaux, appareils, rôles d'utilisateur pour l'application. Impossible de supprimer ou de transférer l'application (ce sont des opérations au niveau de l'organisation). |
| Développeur d'application | app_developer | Téléversez des bundles, gérez des appareils, déclenchez des builds natives, mettez à jour les paramètres des canaux. Pas de suppression, pas de modifications des paramètres de l'application, pas de création de canaux. |
| Téléverseur d'application | app_uploader | Accès en lecture + téléversement de nouvelles versions de bundle. |
| Lecteur d'application | app_reader | Accès en lecture uniquement — statistiques, bundles, canaux, journaux, appareils. |
| Aperçu de l'application | app_preview | Cycle de vie de CI lié à l'aperçu de l'application et à l'organisation : téléchargez un bundle et créez un canal de prévisualisation. La création de ce canal accorde automatiquement les droits de cycle de vie uniquement pour celui-ci. |
Matrice de permissions de l'application
Matrice de permissions de l'application| Permission | Description | Administrateur de l'application | Développeur de l'application | Chargeur de l'application | Lecteur de l'application |
|---|---|---|---|---|---|
app.read | Afficher les détails de l'application, les statistiques et les métadonnées | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Éditer les paramètres de l'application | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Afficher la liste des ensembles téléchargés | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Télécharger une nouvelle version d'un ensemble | ✅ | ✅ | ✅ | ❌ |
app.create_channel | Créer un nouveau canal | ✅ | ❌ | ❌ | ❌ |
app.read_channels | Afficher les canaux | ✅ | ✅ | ✅ | ✅ |
app.read_logs | Afficher les journaux de livraison de mise à jour | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | Attribuer, définir en priorité ou délier les appareils | ✅ | ✅ | ❌ | ❌ |
app.read_devices | Afficher la liste des appareils | ✅ | ✅ | ✅ | ✅ |
app.build_native | Déclencher une construction cloud native | ✅ | ✅ | ❌ | ❌ |
app.read_audit | Afficher le journal d'activité au niveau de l'application | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | Gérer les affectations de rôle au niveau de l'application | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Supprimer un ensemble | ✅ | ❌ | ❌ | ❌ |
Ensemble des permissions d'affichage de l'application
Section intitulée « Ensemble des permissions d'affichage de l'application »Utilisez Affichage de l'application (app_preview) pour une clé CI liée à l'organisation et à l'application qui gère le cycle de vie d'une prévisualisation de PR sans accès large à l'application ou à l'organisation.
Le app_preview seuls ces droits d'application sont accordés :
| Permission | Permet |
|---|---|
app.read | Lire l'application sélectionnée |
app.read_bundles | Lire les bundles téléchargés |
app.upload_bundle | Télécharger un bundle |
app.create_channel | Créer un canal |
Lorsqu'une clé d'aperçu d'application crée un canal, Capgo attribue automatiquement à cette clé une clé enfant channel_preview seuls ces droits du canal sont accordés :
| Permission | Permet |
|---|---|
channel.read | Lire le canal créé par la clé |
channel.promote_bundle | Configure la mise en ligne de la clé de ce canal |
channel.delete | Supprimer ce canal |
Parce que app_preview conservent app.read, la clé peut lister les métadonnées du canal sélectionné dans l'application. La liaison automatique de l'enfant est un limites de gestion : elle ne concède pas les mutations de cycle de vie pour un canal que la clé n'a pas créé. __CAPGO_KEEP_0__ enregistre la clé de prévisualisation qui a créé chaque canal et mis en ligne chaque bundle. Par conséquent, une clé de prévisualisation d'application peut créer chaque canal de prévisualisation non public dont elle a besoin, promouvoir sa propre mise en ligne, et supprimer atomiquement ce canal et ce bundle avec
Capgo records the preview key that created each channel and uploaded each bundle. Therefore an App Preview key can create each non-public preview channel it needs, promote its own bundle, and atomically delete that channel and bundle with channel delete --delete-bundleNe comprend pas
, la gestion des appareils ou des rôles app.update_settings, la gestion des appareils forcée, ou générique channel.update_settings, channel.rollback_bundleSet the key’s own uploaded bundle on that channel bundle.delete.
Rôles de canal
Section intitulée « Rôles de canal »Limité à un seul canal. Utile pour donner un accès ciblé à un canal de version spécifique.
| Rôle | Nom interne | Description |
|---|---|---|
| Administrateur de canal | channel_admin | Contrôle total d'un canal : paramètres, promotion/retour en arrière de bundles, gestion de dispositifs forcés. |
| Voyeur de canal | channel_reader | Lecture seule — le bundle actuel, l'historique, les dispositifs forcés, le journal d'audit. |
| Prévisualisation de canal | channel_preview | Attribué automatiquement à la clé App Preview qui a créé le canal : lecture, promotion de son propre bundle et suppression de ce canal. |
Matrice de droits du canal
Matrice de droits du canal| Permission | Description | Administrateur du canal | Voyeur du canal | Aperçu du canal |
|---|---|---|---|---|
channel.read | Afficher le canal et son bundle actuel | ✅ | ✅ | ✅ |
channel.update_settings | Modifier les paramètres du canal (tournures de plateforme, politique de mise à jour…) | ✅ | ❌ | ❌ |
channel.delete | Supprimer le canal | ✅ | ❌ | ✅ |
channel.read_history | Afficher l'historique des affectations de bundle | ✅ | ✅ | ❌ |
channel.promote_bundle | Définir le bundle actif sur le canal | ✅ | ❌ | ✅ |
channel.rollback_bundle | Revenir à un bundle précédent | ✅ | ❌ | ❌ |
channel.manage_forced_devices | Forcez des appareils spécifiques à ce canal | ✅ | ❌ | ❌ |
channel.read_forced_devices | Afficher la liste des appareils contraints | ✅ | ✅ | ❌ |
channel.read_audit | Afficher le journal d'activité du canal | ✅ | ✅ | ❌ |
Bundle des rôles
Titre de la section « Bundle des rôles »Attribué à une seule version de bundle. Rarement nécessaire — la plupart des équipes utilisent des rôles d'application au lieu de cela.
| Rôle | Nom interne | Description |
|---|---|---|
| Administrateur de bundle | bundle_admin | Lecture, mise à jour des métadonnées et suppression d'un bundle spécifique. |
| Voyant de bundle | bundle_reader | Accès en lecture seule à un bundle spécifique. |
Survol des permissions de canal (Tableau de bord)
Sous-titre « Survol des permissions de canal (Tableau de bord) »Dans le tableau de bord, l'accès au canal est déterminé par le rôle de l'application de l'utilisateur par défaut. Pour un contrôle plus granulaire, vous pouvez surpasser les permissions de canal spécifiques par utilisateur ou groupe sans modifier leur rôle d'application.
Les survol sont configurés à partir du rôle de l'application Accès Ouvrez la section en cliquant sur le bouton de permissions de canal (icône bouclier) à côté d'un utilisateur. Consultez Organisation — Surcharge des permissions de canal pour une présentation visuelle.
Permissions surchargables
Sous-section intitulée « Permissions surchargables »| Permission | Description | Comportement par défaut |
|---|---|---|
| Lire | Afficher le canal et son bundle actuel | Hérité du rôle d'application |
| Historique | Afficher l'historique d'affectation du bundle | Hérité du rôle d'application |
| Associer un bundle | Définir ou modifier le bundle actif sur le canal | Hérité du rôle d'application |
Chaque permission peut être définie sur :
- Par défaut — hériter du rôle d'application (par défaut)
- Autoriser — accorder explicitement, en fonction du rôle d'application
- Interdire — bloquez explicitement, quel que soit le rôle de l'application
Cela vous permet, par exemple, de donner à un Lecteur d'application la possibilité de lier des lots sur le staging canal sans les promouvoir en Développeur d'application.
Hiérarchie des rôles
Sous-titre « Hiérarchie des rôles »Les rôles forment une hiérarchie. Un rôle parent hérite de toutes les autorisations de ses enfants. Cela signifie que org_admin peut faire tout ce que app_admin peut faire, qui à son tour peut faire tout ce que channel_admin peut faire, et ainsi de suite.
Super Admin (org_super_admin) └── Admin (org_admin) └── App Admin (app_admin) ├── App Developer (app_developer) │ └── App Uploader (app_uploader) │ └── App Reader (app_reader) ├── Bundle Admin (bundle_admin) │ └── Bundle Viewer (bundle_reader) └── Channel Admin (channel_admin) └── Channel Viewer (channel_reader)Comment ça marche en pratique :
- Un Administrateur à niveau d'organisation peut faire tout ce que peut faire un Administrateur d'application sur chaque application de l'organisation.
- Un Administrateur d'application sur une application spécifique peut faire tout ce que peut faire un Administrateur de canal sur chaque canal de cette application.
- Un Développeur d'application peut faire tout ce que peut faire un Développeur d'application de chargement peut faire plus.
La hiérarchie ne s'écoule que en aval — un channel_admin ne gagne jamais de permissions d'org, même s'ils détiennent également un rôle d'application.
Groupes
Sous-titre « Groupes »Au lieu d'attribuer des rôles à chaque utilisateur individuellement, vous pouvez créer des groupes et affecter des rôles au groupe. Chaque membre du groupe hérite automatiquement de ces rôles.
Comment fonctionnent les groupes
Section intitulée « Comment fonctionnent les groupes »- Un groupe appartient à une organisation — il ne peut pas couvrir plusieurs organisations.
- Les groupes peuvent conserver des liens de rôle à n'importe quel niveau: organisation, application, canal ou paquet. Par exemple, un groupe peut être affecté du Rôle développeur d'application rôle sur l'application A et le Rôle administrateur de canal rôle sur le
stagingcanal de l'application B. - Lorsque les autorisations d'un utilisateur sont évaluées, toutes ses adhésions de groupe sont résolues de manière transparente. Si l'un de ses groupes accorde la permission requise, l'accès est autorisé.
- Un utilisateur peut appartenir à plusieurs groupes, et les autorisations de tous les groupes sont additives.
- Les autorisations basées sur les groupes ne s'appliquent qu'aux principaux d'utilisateur — les clés API ne héritent pas des rôles de groupe.
Quand utiliser les groupes
Section intitulée « Quand utiliser les groupes »| Scénario | Sans groupes | Avec groupes |
|---|---|---|
| 5 ingénieurs QA ont besoin d'accès au développeur pour 3 applications | 15 liens de rôle individuels | 1 groupe + 3 liens de rôle |
| Quelqu'un rejoint l'équipe QA | Ajouter 3 liens de rôle manuellement | Ajouter-les au groupe |
| Quelqu'un quitte l'équipe QA | Supprimer 3 liens de rôle manuellement | Supprimer-les du groupe |
Gérer les groupes via API
Section intitulée “Gestion des groupes via API””Toutes les endpoints de groupe nécessitent une authentification et sont servis sous /private/groups.
Lister les groupes
Section intitulée “Lister les groupes””curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Exige org.read_members la permission.
Créer un groupe
Section intitulée “Créer un groupe””curl -X POST "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Quality assurance engineers" }'Exige org.update_user_roles la permission (Super Administrateur ou Permission d'administration).
Mettre à jour un groupe
Section intitulée « Mettre à jour un groupe »curl -X PUT "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Updated description" }'Supprimer un groupe
Section intitulée « Supprimer un groupe »curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"La suppression d'un groupe supprime également toutes ses liaisons de rôle. Les membres ne sont pas supprimés de l'organisation.
Lister les membres du groupe
Fenêtre de terminalcurl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Section intitulée « Ajouter un membre à un groupe »
Fenêtre de terminalcurl -X POST "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "user_id": "<USER_UUID>" }'Supprimer un membre d'un groupe
Section intitulée « Lister les membres du groupe »
Section intitulée « Supprimer un membre d'un groupe »curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"Attribuer des rôles via API
Section intitulée « Attribuer des rôles via API »Lister les membres
Section intitulée « Listez les membres »curl -X GET "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>" }'Réponse :
[ { "uid": "user-uuid", "email": "alice@example.com", "image_url": "https://...", "role": "org_admin", "is_tmp": false }]Inviter un membre
Section intitulée « Inviter un membre »curl -X POST "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com", "invite_type": "org_admin" }'Valeurs acceptées pour invite_type:
| Valeur | Rôle attribué |
|---|---|
org_super_admin | Administrateur supérieur |
org_admin | Administrateur |
org_billing_admin | Gestionnaire de facturation |
org_member | Membre |
Retirer un membre
Titre de la section “Retirer un membre”curl -X DELETE "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com" }'Attribution de rôles via CLI
Titre de la section “Attribution de rôles via CLI”Liste des organisations
Titre de la section “Liste des organisations”npx @capgo/cli organization list --apikey <API_KEY>Lister les membres
Section intitulée « Lister les membres »npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>Rôles personnalisés
Section intitulée « Rôles personnalisés »Les rôles intégrés couvrent la plupart des structures d'équipe. La création de rôles personnalisés est prévue dans notre roadmap — si cela est quelque chose dont votre équipe a besoin, nous vous invitons à nous contacterVotre cas d'utilisation contribuera directement à notre priorisation de cette fonctionnalité.
Continuez de la section de Contrôle d'accès
Titre de la section « Continuez de la section de Contrôle d'accès »Si vous utilisez Contrôle d'accès pour planifier les tableaux de bord et les opérations API, connectez-le à API Vue d'ensemble pour les détails d'implémentation dans API Vue d'ensemble, Introduction pour les détails d'implémentation dans Introduction, Clés API pour les détails d'implémentation dans Clés API, Appareils pour le détail d'implémentation dans Appareils, et Ensembles pour le détail d'implémentation dans Ensembles.