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


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

ÉchelleS'applique àCas d'utilisation
StructureL'ensemble de l'org et tous ses applicationsVotre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de factures
ApplicationUne seule application et ses canauxA un contratiste travaillant sur une seule application obtient le rôle d'App Developer
ChaîneUne seule chaîne au sein d'une applicationUn ingénieur QA ne gère que la chaîne staging Chaîne
Une seule version de bundleUn réviseur a besoin d'accès en lecture à une seule version de release spécifiqueUn membre peut tenir

un rôle par cible de portée — par exemple, un rôle d'organisation, un rôle sur App A et un rôle différent sur App B. Rôles d'organisation


__CAPGO_KEEP_0__

Rôles de l'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ô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 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 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_membersVoir 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_billingVoir les informations de facturation et le plan actuel
org.update_billingMettre à jour le moyen de paiement et le plan
org.read_invoicesVoir les factures
org.read_auditVoir l'historique d'activité de l'organisation
org.read_billing_auditVoir le journal d'audit spécifique à la facturation

Limité à une seule application. Utilisez-ces lorsque un membre 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 les appareils, déclencher des builds natives, mettre à jour les paramètres de canal. Aucune suppression, aucune modification des paramètres de l'application, aucune création de canal.
Téléchargeur d'applicationapp_uploaderAccès en lecture + télécharger de nouvelles versions de bundles.
Lecture seule — statistiques, bundles, canaux, journaux, appareils.app_readerAperçu de l'application
Cycle de vie de l'aperçu lié à l'organisation et à l'application : télécharger un bundle et créer un canal d'aperçu. La création de ce canal accorde automatiquement les droits de cycle de vie uniquement pour celui-ci.app_previewMatrice de permissions de l'application

Section intitulée « Matrice de permissions de l'application »

Permission
App permission matrixDescriptionAdmin de l'applicationDéveloppeur de l'applicationChargement d'une nouvelle version de l'applicationLecteur de l'application
app.readAfficher les détails, les statistiques et les métadonnées de l'application
app.update_settingsÉditer 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_devicesAttribuez, surchargez ou débranchez les 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_rolesGérer les affectations de rôle à l'échelle de l'application
bundle.deleteSupprimer un ensemble

Utiliser App Preview (app_preview) pour une clé CI liée à une organisation et une application qui gère le cycle de vie d'une prévisualisation de PR sans accès large à l'application ou à l'organisation.

La app_preview la liaison ne concède que ces permissions d'applications :

PermissionPermet
app.readLire l'application sélectionnée
app.read_bundlesLire les bundles téléchargés
app.upload_bundleCharger un bundle
app.create_channelCréer un canal

Lorsqu'une clé d'App Preview crée un canal, Capgo donne automatiquement à cette clé une clé enfant channel_preview Liaison pour le nouveau canal uniquement :

PermissionPermet
channel.readLire le canal créé par la clé
channel.promote_bundleDéfinir la clé de chargement de son propre bundle sur ce canal
channel.deleteSupprimer ce canal

Parce que app_preview retient app.read, la clé peut lister les métadonnées du canal sélectionné dans l'application. L'liaison automatique de la clé 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 été créée.

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 dont elle a besoin, promouvoir son propre bundle et supprimer atomiquement ce canal et ce bundle avec channel delete --delete-bundle ; elle ne peut pas faire ces choses à un canal par défaut/main existant, à un canal d'une autre clé de prévisualisation ou à un bundle d'une autre clé.

Caution app.update_settingsAttention channel.update_settings, channel.rollback_bundleChaque liaison d'application de prévisualisation reste liée à l'organisation propriétaire de l'application sélectionnée. Le rôle omet un rôle organisationnel ; il ne supprime pas l'association organisationnelle. La révocation ou l'expiration de la liaison d'application supprime l'accès au cycle de vie effectif de la clé. bundle.delete.


Limité à un seul canal. Utile pour donner un accès ciblé à une version spécifique d'un canal.

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.
Aperçu de canalchannel_previewAttribué automatiquement à la clé d'aperçu d'application qui a créé le canal : lecture, promotion de son propre bundle et suppression de ce canal.
PermissionDescriptionAdministrateur de canalVoyant de canalAperçu de la chaîne
channel.readAfficher la chaîne et son bundle actuel
channel.update_settingsÉditer les paramètres de la chaîne (touilles de plateforme, politique d'actualisation…)
channel.deleteSupprimer la chaîne
channel.read_historyAfficher l'historique d'affectation de bundle
channel.promote_bundleDéfinir le bundle actif sur la chaîne
channel.rollback_bundleRevenir à un bundle précédent
channel.manage_forced_devicesForcer des appareils spécifiques à cette chaîne
channel.read_forced_devicesAfficher la liste des appareils forçés
channel.read_auditAfficher le journal d'activité de la chaîne

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

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

Par défaut, l'accès au canal est déterminé par le rôle de l'application de l'utilisateur dans le tableau de bord. 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 depuis 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. Consultez Organisation — Survol des permissions de canal pour un guide visuel.

PermissionDescriptionComportement par défaut
LectureAfficher le canal et son bundle actuelHérité du rôle d'application
HistoireAfficher l'historique des affectations de bundleHérité du rôle d'application
Associer un bundleAttribuer ou modifier le bundle actif sur le canalInhé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, quel que soit le rôle d'application
  • Dénier — bloquer explicitement, quel que soit le rôle d'application

Cela vous permet, par exemple, de donner à un Lecteur d'application la capacité de lier des ensembles 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 tous les droits 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 au niveau de l'organe peut faire tout ce que App Administrateur peut faire sur chaque application dans l'org.
  • Un Administrateur d'application sur une application spécifique peut faire tout ce que peut faire un Administrateur de canal peut faire sur chaque canal dans cette application.
  • Un Développeur d'application peut faire tout ce que peut faire un Administrateur d'application de téléchargement peut faire plus.

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


Plutôt que 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 couvrir plusieurs organisations.
  • Les groupes peuvent détenir des liens de rôle à n'importe quel niveau : organisation, application, canal ou bundle. Par exemple, un groupe peut être attribué lerôle d'App développeur sur l'application A et le 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 à
  • plusieurs groupes
  • protectedTokens targetLanguageet les permissions de tous les groupes sont additives.
  • Les permissions basées sur le groupe 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 de testAjouter 3 liens de rôle manuellementLes ajouter au groupe
Quelqu'un quitte l'équipe de testSupprimer 3 liens de rôle manuellementLes retirer 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 la 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 la 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 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 principal
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 prévue dans notre roadmap — si cela est quelque chose dont votre équipe a besoin, nous contacter. Votre cas d'utilisation aidera directement à 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 planer le tableau 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, 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 Bundles pour les détails d'implémentation dans Bundles.