Passer à la navigation

Référence de contrôle d'accès

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.


Chaque rôl’appartient à une étendue qui détermine à quel ressource il accorde accès.

ÉtendueS'applique àExemple d'utilisation
OrganisationL'ensemble de l'org et tous ses applicationsVotre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de factures
ApplicationA une seule application et ses canauxA contractor working on one app gets App Developer
CanalUn canal unique au sein d'une applicationA une seule version de bundle staging channel
Bundleun rôle par cible de portéeUn 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.


Ces rôles sont attribués lors de l'invitation d'un membre. Ils accordent l'accès à l'ensemble de l'organisation.

RôleNom interneDescription
Super Adminorg_super_adminProprié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.
Adminorg_adminFull administration — manage members, apps, channels. Cannot delete the org, update billing, transfer apps, or promote users to Super Admin.
Gestionnaire des facturesorg_billing_adminBilling-only access: view and update billing info, invoices, and billing audit logs. No access to apps or members.
Membreorg_memberAccès en lecture seule à l'organisation et à tous ses applications.

Matrice de permissions de l'organisation

Matrice de permissions de l'organisation
PermissionDescriptionSuper AdminAdminGestionnaire de facturesMembre
org.readAfficher l'organisation✅✅✅✅
org.update_settingsEdit org name, logo, management email✅✅❌❌
org.deleteSupprimer définitivement l'organisation✅❌❌❌
org.read_membersAfficher la liste des membres✅✅❌✅
org.invite_userInviter de nouveaux membres✅✅❌❌
org.update_user_rolesChange member roles (Admin cannot promote to Super Admin — blocked by role hierarchy)✅✅❌❌
org.read_billingView billing info and current plan✅✅✅❌
org.update_billingMise à jour du mode de paiement et du plan✅❌✅❌
org.read_invoicesAfficher les factures✅✅✅❌
org.read_auditAfficher le journal d'activité de l'organisation✅✅❌❌
org.read_billing_auditAfficher le journal d'audit lié aux factures✅✅✅❌

Scoped to a single app. Use these when a team member should only work on one app, not the whole organization.

RoleNom interneRôl’interne
App Adminapp_adminContrô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'applicationapp_developerTé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'applicationapp_uploaderRead access + upload new bundle versions.
App Readerapp_readerLecture seule — statistiques, paquets, canaux, journaux, appareils.
App Previewapp_previewCycle 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
AutorisationDescriptionApp AdminDéveloppeur d'applicationApp UploaderApp Reader
app.readDétails de l'application, statistiques et métadonnées✅✅✅✅
app.update_settingsModifier les paramètres de l'application✅❌❌❌
app.read_bundlesVoir la liste des ensembles téléchargés✅✅✅✅
app.upload_bundleCharger une nouvelle version de bundle✅✅✅❌
app.create_channelCréer un nouveau canal✅❌❌❌
app.read_channelsAfficher les canaux✅✅✅✅
app.read_logsAfficher les journaux de livraison de mise à jour✅✅✅✅
app.manage_devicesAttribuez, remplacez ou débranchez des appareils✅✅❌❌
app.read_devicesAfficher la liste des appareils✅✅✅✅
app.build_nativeDéclencher une construction cloud native✅✅❌❌
app.read_auditAfficher le journal d'activité de l'application✅✅✅✅
app.update_user_rolesManage app-scoped role assignments✅❌❌❌
bundle.deleteSupprimer un bundle✅❌❌❌

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 :

PermissionPermet
app.readde lire l'application sélectionnée
app.read_bundlesLisez les ensembles de fichiers téléchargés
app.upload_bundleTéléchargez un ensemble de fichiers
app.create_channelCré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 :

PermissionPermet
channel.readLire le canal créé par la clé
channel.promote_bundleFixer l'ensemble de fichiers téléchargé par la clé sur ce canal
channel.deleteSupprimer 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.


Limité à un seul canal. Utile pour accorder un accès ciblé à un canal de version spécifique.

RôleNom interneDescription
Administrateur de canalchannel_adminContrôle total d'un canal : paramètres, promotion/retour en arrière de bundles, gestion de dispositifs forcés.
Voyant de canalchannel_readerLecture seule — bundle actuel, historique, dispositifs forcés, journal d'audit.
Prévisualisation de canalchannel_previewAttribué automatiquement à la clé App Preview qui a créé le canal : lecture, promotion de son propre bundle et suppression de ce canal.
DroitDescriptionAdministrateur de canalVoyeur de canalPrévisualisation de canal
channel.readAfficher le canal et son bundle actuel✅✅✅
channel.update_settingsModifier les paramètres du canal (téléchargeables, politique d'actualisation…)✅❌❌
channel.deleteSupprimer le canal✅❌✅
channel.read_historyAfficher l'historique d'affectation du bundle✅✅❌
channel.promote_bundleDéfinir le bundle actif sur le canal✅❌✅
channel.rollback_bundleRevenir à un bundle précédent✅❌❌
channel.manage_forced_devicesForcer des appareils spécifiques à ce canal✅❌❌
channel.read_forced_devicesAfficher la liste des appareils forcés✅✅❌
channel.read_auditConsulter le journal d'activité du canal✅✅❌

Scoped to a single bundle version. Rarely needed — most teams use app-level roles instead.

RôleNom interneDescription
Administrateur de bundlebundle_adminLecture, mise à jour des métadonnées et suppression d'un bundle spécifique.
Voyeur de Bundlebundle_readerAccè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.

PermissionDescriptionComportement par défaut
LectureVoir le canal et son bundle actuelHérité du rôle d'application
HistoriqueVoir l'historique des affectations de bundleHérité du rôle d'application
Associer un bundleDéfinir ou modifier le bundle actif sur le canalHé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.


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.


À 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.

  • 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 staging canal 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.
ScénarioSans groupesAvec groupes
5 ingénieurs QA ont besoin d'accès Développeur à 3 applications15 liens de rôl’individuels1 groupe + 3 liens de rôle
Quelqu'un rejoint l'équipe QAAjouter 3 liens de rôle manuellementLes ajouter au groupe
Quelqu'un quitte l'équipe QASupprimer 3 liens de rôle manuellementLes supprimer du groupe

Toutes les endpoints de groupe nécessitent une authentification et sont servis sous /private/groups.

Fenêtre de terminal
curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \
-H "authorization: <API_KEY>"

Exige org.read_members une autorisation.

Fenêtre de terminal
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).

Fenêtre de terminal
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"
}'
Fenêtre de terminal
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.

Fenêtre de terminal
curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \
-H "authorization: <API_KEY>"
Fenêtre de terminal
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.

Fenêtre de terminal
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \
-H "authorization: <API_KEY>"

Fenêtre de terminal
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
}
]
Fenêtre de terminal
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:

ValeurRôl’attribué
org_super_adminSuper Admin
org_adminAdmin
org_billing_adminGestionnaire des factures
org_memberMembre
Fenêtre de terminal
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"
}'

Fenêtre de terminal
npx @capgo/cli organization list --apikey <API_KEY>
Fenêtre de terminal
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

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.