Passer au contenu

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

Capgo utilise le 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'organisation entière jusqu'à un seul paquet.

Pour une présentation visuelle de la gestion des membres dans le tableau de bord, voir Organisation.


Chaque rôle appartient à une étendue qui détermine les ressources auxquelles il accorde accès.

ÉtendueS'applique àExemple d'utilisation
OrganisationToute l'org et tous ses applicationsVotre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de factures
ApplicationUne seule application et ses canauxUn prestataire travaillant sur une seule application obtient le rôle d'App Developer
CanauxUn canal unique au sein d'une applicationUn ingénieur QA ne gère que le staging canaux
BundleUne version de bundle uniqueUn réviseur a besoin d'accès en lecture à une version de release spécifique

Un membre peut tenir un rôle par cible de portée — 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 accès à l'ensemble de l'organisation.

RôleNom interneDescription
Administrateur principalorg_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.
Administrateurorg_adminGestion totale — gérer les membres, les applications, les canaux. Impossible de supprimer l'org, de mettre à jour les factures, de transférer les applications ou de promouvoir les utilisateurs à Administrateur principal.
Gestionnaire des facturesorg_billing_adminAccès aux factures uniquement : afficher et mettre à jour les informations de facturation, les factures et les journaux de comptes de facturation. Pas d'accès aux applications ou aux membres.
Membreorg_memberAccès en lecture seule à l'org et à tous ses apps.
PermissionDescriptionSuper AdministrateurAdministrateurGestionnaire de facturationMembre
org.readVoir l'organisation
org.update_settingsModifier le nom, le logo et l'adresse e-mail de gestion de l'org
org.deleteSupprimer définitivement l'organisation
org.read_membersAfficher la liste des membres
org.invite_userInviter de nouveaux membres
org.update_user_rolesChanger les rôles des membres (l'administrateur ne peut pas promouvoir à Super Administrateur — bloqué par la hiérarchie des rôles)
org.read_billingAfficher les informations de facturation et le plan actuel
org.update_billingMettre à jour le moyen de paiement et le plan
org.read_invoicesAfficher les factures
org.read_auditAfficher l'activité de l'organisation
org.read_billing_auditAfficher le journal d'audit spécifique à la facturation

Limité à une seule application. Utilisez-les lorsque l'un de vos membres d'équipe devrait travailler uniquement sur une application, et non sur toute l'organisation.

RôleNom interneDescription
Admin d'applicationapp_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_developerCharger des bundles, gérer des appareils, déclencher des builds natives, mettre à jour les paramètres de canal. Pas de suppression, pas de modifications des paramètres de l'application, pas de création de canal.
Téléchargeur d'applicationapp_uploaderAccès en lecture + télécharger de nouvelles versions de bundles.
Lecteur d'applicationapp_readerLecture seule — statistiques, bundles, canaux, journaux, appareils.
PermissionDescriptionApp AdminAdministrateur d'appApp DeveloperDéveloppeur d'app
app.readApp Uploader
app.update_settingsChargeur d'app
app.read_bundlesApp Reader
app.upload_bundleLecteur d'app
app.create_channelView app details, stats, et métadonnées
app.read_channelsVoir les détails, statistiques et métadonnées de l'app
app.read_logsEdit app settings
app.manage_devicesÉditer les paramètres de l'app
app.read_devicesVoir la liste des appareils
app.build_nativeDéclencher une construction cloud native
app.read_auditVoir le journal d'activité de l'application
app.update_user_rolesGérer les affectations de rôle à l'échelle de l'application
bundle.deleteSupprimer un bundle

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

RôleNom interneDescription
Administrateur de canalchannel_adminContrôle total d'un canal : paramètres, promotion/retour en arrière de lots, gestion de dispositifs forcés.
Voyant de canalchannel_readerLecture seule — lot actuel, historique, dispositifs forcés, journal d'audit.
PermissionDescriptionAdministrateur de canalVoyant de canal
channel.readAfficher le canal et son lot actuel
channel.update_settingsÉditez les paramètres du canal (télécommandes de plateforme, 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_auditAfficher le journal d'activité du canal

Restreint à une seule version du bundle. Rarement nécessaire — la plupart des équipes utilisent des rôles d'application au lieu de cela.

RôleNom interneDescription
Administrateur de bundlebundle_adminLecture, mise à jour des métadonnées et suppression d'un bundle spécifique.
Voyant de bundlebundle_readerAccès en lecture seule à un bundle spécifique.

Surcharge des permissions de canal (Tableau de bord)

Section intitulée « 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 survolages sont configurés à partir de l'onglet Accès du tableau de bord en cliquant sur le bouton de permissions de canal (icône bouclier) à côté d'un utilisateur. Voir Organisation — Survol des permissions de canal pour un guide visuel.

PermissionDescriptionComportement par défaut
LireAfficher le canal et son bundle actuelHérité du rôle d'application
HistoriqueAfficher 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é du rôle d'application

Chaque permission peut être définie sur :

  • Default — hérite des rôles de l'application (par défaut)
  • Allow — accorde explicitement, quel que soit le rôle de l'application
  • Deny — bloque explicitement, quel que soit le rôle de l'application

Cela vous permet, par exemple, de donner à un lecteur d'applications la possibilité d'associer des lots sur le staging canal sans les promouvoir en développeur d'applications.


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 app_admin peut, ce qui à son tour peut faire tout ce que channel_admin peut, 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 au niveau de l'organe peut faire tout ce que Administrateur d'application peut, sur chaque application dans l'organe.
  • Un App Admin peut faire tout ce que peut faire un Channel Admin sur chaque canal dans cette application.
  • Un Développeur d'application peut faire tout ce que peut faire un Chargé de téléchargement d'application et encore plus.

La hiérarchie ne s'applique que dans le sens descendant — un channel_admin ne jamais acquiert de permissions d'org niveau, même si elles détiennent également un rôle d'application.


Plutôt que d'attribuer des rôles à chaque utilisateur individuellement, vous pouvez créer des groupes et attribuer des rôles au groupe. Chaque membre du groupe hérite automatiquement de ces rôles.

  • Un groupe appartient à une organisation — il ne peut pas couvrir plusieurs organisations.
  • Les groupes peuvent conserver des liens de rôle à n'importe quel champ : organisation, application, canal ou ensemble. Par exemple, un groupe peut être affecté au rôle de Développeur d'application sur l'application A et au rôle de Administrateur de canal sur le canal de l'application B. staging 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 à
  • plusieurs groupes , et les permissions de tous les groupes sont additives.Les permissions basées sur les groupes ne s'appliquent qu'à
  • __CAPGO_KEEP_0__ principaux utilisateurs — les API clés 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ôle individuels1 groupe + 3 liens de rôle
Quelqu'un rejoint l'équipe QAAjouter 3 liens de rôle manuellementAjoutez-les au groupe
Quelqu'un quitte l'équipe QASupprimer 3 liens de rôle manuellementSupprimez-les du groupe

Tous les points de terminaison de groupe nécessitent une authentication 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 permission.

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 permission (Administrateur supérieur ou Administrateur).

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 tous ses liens 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ôle assigné
org_super_adminAdministrateur supérieur
org_adminAdministrateur
org_billing_adminGestionnaire de facturation
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 notre roadmap — 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 Accès de Contrôle de la référence pour planifier les opérations de tableau de bord et API , connectez-le avec API Vue d'ensemble pour les détails d'implémentation dans API Aperçu, 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 Ensembles pour les détails d'implémentation dans Ensembles.