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 les rôles (RBAC) pour gérer ce que chaque membre d'équipe peut faire. Les rôles sont organisés par portée — du niveau de l'organisation entière jusqu'à un seul bundle.
Pour une présentation visuelle de la gestion des membres dans le tableau de bord, voir Organisation.
Étendues de rôle
Section intitulée « Étendues de rôle »Chaque rôl’appartient à une étendue qui détermine à quel ressource il accorde accès.
| Étendue | S'applique à | Exemple d'utilisation |
|---|---|---|
| Organisation | L'ensemble de l'org et tous ses applications | Votre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de factures |
| Application | A une seule application et ses canaux | A contractor working on one app gets App Developer |
| Canal | Un canal unique au sein d'une application | A une seule version de bundle staging channel |
| Bundle | un rôle par cible de portée | Un réviseur a besoin d'accès en lecture à une version spécifique. |
A une seule application et ses canaux A une seule version de bundle — par exemple, un rôle d'organisation, un rôle sur l'application A et un rôle différent sur l'application B.
Rôles d'organisation
Titre de la section « 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 |
|---|---|---|
| Super Admin | org_super_admin | Propriétaire équivalent. Contrôle total y compris la suppression de l'org, la gestion des factures et la transfert d'applications. Accorde automatiquement au créateur de l'org. |
| Admin | org_admin | Full administration — manage members, apps, channels. Cannot delete the org, update billing, transfer apps, or promote users to Super Admin. |
| Gestionnaire des factures | org_billing_admin | Billing-only access: view and update billing info, invoices, and billing audit logs. No access to apps or members. |
| Membre | org_member | Accès en lecture seule à l'organisation et à tous ses applications. |
Matrice de permissions de l'organisation
Matrice de permissions de l'organisation| Permission | Description | Super Admin | Admin | Gestionnaire de factures | Membre |
|---|---|---|---|---|---|
org.read | Afficher l'organisation | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Edit org name, logo, management email | ✅ | ✅ | ❌ | ❌ |
org.delete | Supprimer définitivement l'organisation | ✅ | ❌ | ❌ | ❌ |
org.read_members | Afficher la liste des membres | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Inviter de nouveaux membres | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Change member roles (Admin cannot promote to Super Admin — blocked by role hierarchy) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | View billing info and current plan | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Mise à jour du mode de paiement et du plan | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Afficher les factures | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Afficher le journal d'activité de l'organisation | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Afficher le journal d'audit lié aux factures | ✅ | ✅ | ✅ | ❌ |
App roles
Rôles d'applicationScoped to a single app. Use these when a team member should only work on one app, not the whole organization.
| Role | Nom interne | Rôl’interne |
|---|---|---|
| App Admin | 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échargez des bundles, gérez les appareils, déclenchez des builds natifs, modifiez les paramètres de canal. Aucune suppression, aucune modification des paramètres d'application, aucune création de canal. |
| Téléchargeur d'application | app_uploader | Read access + upload new bundle versions. |
| App Reader | app_reader | Lecture seule — statistiques, paquets, canaux, journaux, appareils. |
| App Preview | app_preview | Cycle de vie de l'CI lié à l'organisation et à l'application : téléversez un ensemble 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 d'application
Matrice de permissions d'application| Autorisation | Description | App Admin | Développeur d'application | App Uploader | App Reader |
|---|---|---|---|---|---|
app.read | Détails de l'application, statistiques et métadonnées | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Modifier les paramètres de l'application | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Voir la liste des ensembles téléchargés | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Charger une nouvelle version de bundle | ✅ | ✅ | ✅ | ❌ |
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 | Attribuez, remplacez ou débranchez des 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é de l'application | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | Manage app-scoped role assignments | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Supprimer un bundle | ✅ | ❌ | ❌ | ❌ |
ensemble de permissions App Preview
Section intitulée « ensemble de permissions App Preview »Utilisez App Preview (app_preview) pour une clé CI liée à une organisation et une application qui gère un cycle de prévisualisation de PR sans accès large à l'application ou à l'organisation.
Le app_preview liaison ne concède que ces permissions d'application :
| Permission | Permet |
|---|---|
app.read | de lire l'application sélectionnée |
app.read_bundles | Lisez les ensembles de fichiers téléchargés |
app.upload_bundle | Téléchargez un ensemble de fichiers |
app.create_channel | Créez un canal |
Lorsqu'une clé d'App Preview crée un canal, Capgo attribue automatiquement à cette clé une clé enfant channel_preview pour le nouveau canal uniquement :
| Permission | Permet |
|---|---|
channel.read | Lire le canal créé par la clé |
channel.promote_bundle | Fixer l'ensemble de fichiers téléchargé par la clé sur ce canal |
channel.delete | Supprimer ce canal |
Car app_preview retient app.readou la clé peut énumérer les métadonnées du canal sélectionné dans l'application. La liaison automatique d'un enfant est un gestion limites : elle ne concède pas les mutations de cycle de vie pour un canal dont la clé n'a pas créé.
Capgo enregistre la clé de prévisualisation qui a créé chaque canal et téléchargé chaque bundle. Par conséquent, une clé de prévisualisation d'application peut créer chaque canal de prévisualisation non public qu'elle nécessite, promouvoir son propre bundle et supprimer atomiquement ce canal et ce bundle avec channel delete --delete-bundleIl ne peut pas faire cela à un canal par défaut existant, un canal de clé de prévisualisation ou un bundle d'une autre clé.
ne comprend pas app.update_settingsla gestion des appareils ou des rôles, channel.update_settings, channel.rollback_bundlela gestion forcé des appareils, ou bundle.delete.
rôles de canal
Section intitulée « Rôles de canal »Limité à un seul canal. Utile pour accorder 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. |
| Voyant de canal | channel_reader | Lecture seule — bundle actuel, historique, dispositifs forcés, 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 de canal
Sous-section intitulée « Matrice de droits de canal »| Droit | Description | Administrateur de canal | Voyeur de canal | Prévisualisation de canal |
|---|---|---|---|---|
channel.read | Afficher le canal et son bundle actuel | ✅ | ✅ | ✅ |
channel.update_settings | Modifier les paramètres du canal (téléchargeables, politique d'actualisation…) | ✅ | ❌ | ❌ |
channel.delete | Supprimer le canal | ✅ | ❌ | ✅ |
channel.read_history | Afficher l'historique d'affectation du 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 | Forcer des appareils spécifiques à ce canal | ✅ | ❌ | ❌ |
channel.read_forced_devices | Afficher la liste des appareils forcés | ✅ | ✅ | ❌ |
channel.read_audit | Consulter le journal d'activité du canal | ✅ | ✅ | ❌ |
Rôles de bundle
Section intitulée « Rôles de bundle »Scoped to a single bundle version. Rarely needed — most teams use app-level roles instead.
| Rôle | Nom interne | Description |
|---|---|---|
| Administrateur de bundle | bundle_admin | Lecture, mise à jour des métadonnées et suppression d'un bundle spécifique. |
| Voyeur de Bundle | bundle_reader | Accès en lecture à un bundle spécifique. |
Permissions de canal d'override (Tableau de bord)
Sous-titre « Surcharge de droits de canal (Tableau de bord) »Dans l'interface de dashboard, l'accès au canal est déterminé par le rôle d'application de l'utilisateur par défaut. Pour un contrôle plus granulaire, vous pouvez surcharger les droits de canal spécifiques par utilisateur ou groupe sans modifier leur rôle d'application.
Les surcharges sont configurées à partir de l'onglet Accès Cliquez sur le bouton de permissions du canal (icône bouclier) à côté d'un utilisateur. Organisation — Surcharge des droits de canal pour une présentation visuelle.
Permissions personnalisables
Section intitulée « Permissions personnalisables »| Permission | Description | Comportement par défaut |
|---|---|---|
| Lecture | Voir le canal et son bundle actuel | Hérité du rôle d'application |
| Historique | Voir l'historique des affectations de bundle | Hérité du rôle d'application |
| Associer un bundle | Définir ou modifier le bundle actif sur le canal | Hérité de l'application |
Chaque permission peut être définie comme :
- Par défaut — hériter de l'application (la valeur par défaut)
- Autoriser — accorder explicitement, en dépit du rôle d'application
- Refuser — bloquer explicitement, en dépit du rôle d'application
Cela vous permet, par exemple, de donner à un lecteur d'application la capacité d'associer des lots. staging canal sans les promouvoir en développeur d'application.
Hiérarchie de rôle
Section intitulée “Hiérarchie des rôles”Les rôles forment une hiérarchie. Un rôle parent hérite de tous les droits de ses enfants. Cela signifie que org_admin peut faire tout ce que peut faire app_admin qui, à son tour, peut faire tout ce que peut faire channel_admin 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 Admin au niveau de l'organe peut faire tout ce que peut faire App Admin peut, sur chaque application de l'organisme.
- Un App Admin une application spécifique peut faire tout Administrateur de canal peut, sur chaque canal dans cette application.
- Un Développeur d'application peut faire tout ce qu'un Administrateur d'application de téléchargement peut, encore plus.
La hiérarchie ne s'écoule que vers le bas — un channel_admin jamais acquiert des permissions d'org niveau, même si elle détient également un rôle d'application.
Groupe
Sous-titre « Groupe »À la place d'attribuer des rôles à chaque utilisateur individuellement, vous pouvez créer groupe et attribuer des rôles au groupe. Chaque membre du groupe hérite automatiquement de ces rôles.
Comment fonctionnent les groupes
Sous-titre « Comment fonctionnent les groupes »- Un groupe appartient à une organisation — elle ne peut pas s'étendre sur plusieurs organisations.
- Les groupes peuvent conserver les liens de rôl’à toute portée : organisation, application, canal ou bundle. Par exemple, un groupe peut être affecté du Rôle développeur d'application rôle sur l'application A et le Rôl’administrateur de canal rôle sur le
stagingcanal de l'application B. - Lorsque les permissions 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 à groupes multiples, et les permissions de tous les groupes sont additives.
- Seuls les droits liés aux groupes s'appliquent à principaux d'utilisateurs — 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 Développeur à 3 applications | 15 liens de rôl’individuels | 1 groupe + 3 liens de rôle |
| Quelqu'un rejoint l'équipe QA | Ajouter 3 liens de rôle manuellement | Les ajouter au groupe |
| Quelqu'un quitte l'équipe QA | Supprimer 3 liens de rôle manuellement | Les supprimer du groupe |
Gérer les groupes via API
Section intitulée “Gérer les 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 une autorisation.
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 autorisation (Super Admin ou Admin).
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
Section intitulée « Lister les membres du groupe »curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Ajouter un membre à un groupe
Sous-titre « Ajouter un membre à un groupe »curl -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>" }'L'utilisateur doit déjà être membre de l'organisation. L'ajout d'un membre existant est une opération sans effet.
Retirer un membre d'un groupe
Sous-titre « Retirer 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 « Lister 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ôl’attribué |
|---|---|
org_super_admin | Super Admin |
org_admin | Admin |
org_billing_admin | Gestionnaire des factures |
org_member | Membre |
Supprimer un membre
Section intitulée « Supprimer 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
Section intitulée « Attribution de rôles via CLI »Liste des organisations
Section intitulée « Liste des organisations »npx @capgo/cli organization list --apikey <API_KEY>Liste des membres
Section intitulée « Liste des 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 nos plans — si cela est quelque chose dont votre équipe a besoin. nous contacter. Votre cas d'utilisation aidera directement à nous prioriser cette fonctionnalité.
Continuez de l'Accès de Contrôle de la référence
Section intitulée « Continuez de l'Accès de Contrôle de la référence »Si vous utilisez Référence de Contrôle d'Accès pour planifier le tableau de bord et les opérations API, connectez-l’avec 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, API Clés pour les détails d'implémentation dans API Clés, Appareils pour les détails d'implémentation dans Appareils, et Paquets pour les détails d'implémentation dans Paquets.