Sauter au contenu

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

Capgo uses Prêt à utiliser pour gérer ce que chaque membre d'équipe peut faire. Les rôles sont organisés par portée — de l'ensemble de l'organisation 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 portée qui détermine à quelles ressources il accorde accès.

PortéeS'applique àExemple d'utilisation
OrganisationThe entire org and all its appsVotre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de facturation
ApplicationUne seule application et ses canauxUn entrepreneur de contrat travaillant sur une application obtient Développeur d'application
CanalUn seul canal au sein d'une applicationUn ingénieur QA ne gère que le staging canal
PackUne seule version de packUn réviseur a besoin d'accès en lecture à une version de release spécifique

A un membre peut être associé à un rôle par champ cible — 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
Administrateur supérieurorg_super_adminÉquivalent à un 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.
Rôle sur l'application A et un rôle différent sur l'application Borg_adminAdministration complète — 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 en Super Admin.
Gestionnaire des facturesorg_billing_adminAccès factures 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.
Membreorg_memberAccès en lecture seule à l'org et à toutes ses applications.
PermissionDescriptionSuper AdministrateurAdministrateurGestionnaire des facturesMembre
org.readAfficher l'organisation
org.update_settingsModifier le nom, le logo et l'adresse e-mail de gestion de l'organisation
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 (un administrateur ne peut pas promouvoir un 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 le journal d'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
Administrateur 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_developerTélécharger 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 d'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.
PermissionDescriptionAdministrateur d'applicationDéveloppeur d'applicationChargement d'applicationLecteur d'application
app.readAfficher les détails, statistiques et métadonnées de l'application
app.update_settingsModifier les paramètres de l'application
app.read_bundlesAfficher la liste des ensembles chargés
app.upload_bundleCharger une nouvelle version de l'ensemble
app.create_channelCréer un nouveau canal
app.read_channelsAfficher les canaux
app.read_logsAfficher les journaux de livraison de mise à jour
app.manage_devicesAttribuer, surcharger ou délier les appareils
app.read_devicesAfficher la liste des appareils
app.build_nativeDéclencher une construction cloud native
app.read_auditAfficher le journal d'activité du niveau d'application
app.update_user_rolesGérer les affectations de rôle au niveau d'application
bundle.deleteSupprimer un bundle

Limités à un seul canal. Utile pour donner 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 lots, gestion de dispositifs forcés.
Voyeur de canalchannel_readerLecture seule — lot actuel, historique, dispositifs forcés, journal d'audit.
PermissionDescriptionAdministrateur de canalVoyant de canal
channel.readAfficher le canal et son bundle actuel
channel.update_settingsÉditer les paramètres du canal (tournis de plateforme, politique de mise à jour…)
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

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

RôleNom interneDescription
Administrateur de bundlebundle_adminLire, mettre à jour les métadonnées et supprimer un bundle spécifique.
Afficheur de Bundlebundle_readerAccès en lecture seule à un bundle spécifique.

Dans le tableau de bord, 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 surpasser les permissions de canal spécifiques par utilisateur ou groupe sans modifier leur rôle d'application.

Les survol 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.

AutorisationDescriptionComportement par défaut
LectureAfficher 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 :

  • Par défaut — hériter du rôle d'application (la valeur par défaut)
  • Autoriser — accorder explicitement, en fonction du rôle d'application
  • Interdire — bloquer explicitement, en fonction du rôle d'application

Cela vous permet, par exemple, de donner à un Lecteur d'application la possibilité de lier des bundles sur le staging canal sans les promouvoir en Développeur d'application.


Les rôles forment une hiérarchie. Un rôle parent hérite de toutes les permissions de ses enfants. Cela signifie que org_admin peut faire tout ce que peut faire app_admin 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 Administrateur au niveau de l'org peut faire tout ce que peut faire App Admin peut, sur chaque application dans l'organisation.
  • Un App Admin sur une application spécifique peut faire tout ce que peut faire un Channel Admin sur chaque canal dans cette application.
  • Un App Developer peut faire tout ce que peut faire un App Uploader et en plus.

La hiérarchie ne s'écoule que vers le bas en bas — un channel_admin jamais obtient des permissions au niveau d'organisation, même si elle détient également un rôle au niveau de l'application.


Au lieu 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. Comment fonctionnent les groupes Section intitulée « Comment fonctionnent les groupes »

Un groupe appartient à

__CAPGO_KEEP_0__
  • __CAPGO_KEEP_1__ une organisation — elle ne peut pas couvrir plusieurs organisations.
  • Les groupes peuvent détenir des liaisons de rôle à n'importe quel niveau : organisation, application, canal ou bundle. Par exemple, un groupe peut être affecté durôle d'App développeur sur l'application A et du rôle d'administrateur de canal sur le 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é. staging Un utilisateur peut appartenir à
  • un ou plusieurs groupes.
  • Les groupes peuvent détenir des rôles à différents niveaux : organisation, application, canal ou bundle. groupes multiplesles permissions de tous les groupes sont additives.
  • les permissions basées sur les groupes ne s'appliquent qu'à principaux d'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 manuellementLes ajouter au groupe
Quelqu'un quitte l'équipe QASupprimer 3 liens de rôle manuellementLes supprimer du groupe

Tous les points de terminaison 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 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 une permission (Administrateur supérieur 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ôle attribué
org_super_adminAdministrateur supérieur
org_adminAdministrateur
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 sur notre feu de route — si cela est quelque chose que votre équipe nécessite, nous contacter. Votre cas d'utilisation aidera directement à nous prioriser cette fonctionnalité.

Si vous utilisez Référence de Contrôle d'accès pour planifier le tableau de bord et les opérations API, connectez-le à Résumé de API pour les détails d'implémentation dans Résumé de API, Introduction pour les détails d'implémentation dans Introduction, Clés de API pour les détails d'implémentation dans Clés de API, Appareils pour les détails d'implémentation dans Appareils, et Ensembles pour les détails d'implémentation dans Ensembles.