Passer au contenu

Contrôle d'accès

Capgo utilise contrôle d'accès basé sur le rôle (RBAC) 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 à quel ressource il accorde accès.

PortéeS'applique àExemple d'utilisation
OrganisationL'ensemble de l'org et tous ses applicationsVotre 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
CanauxUn seul canal au sein d'une applicationUn ingénieur QA ne gère que le staging canal
PackUne seule version de packUn évaluateur a besoin d'accès en lecture à une version spécifique

Un membre peut détenir un rôle par cible de portée — par exemple, un rôle d'org, un rôle sur App A et un rôle différent sur App B.


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

RôleNom interneDescription
Administrateur supérieurorg_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.
Administrationorg_adminAdministration complète — gérer les membres, les applications, les canaux. Impossible de supprimer l'org, de mettre à jour la facturation, de transférer les applications, ou de promouvoir les utilisateurs en Super Administrateur.
Gestionnaire de facturationorg_billing_adminD'accès facturation 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_memberD'accès en lecture seule à l'org et à toutes ses applications.
PermissionDescriptionSuper AdministrateurAdministrateurGestionnaire de facturationMembre
org.readVoir 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_membersVoir la liste des membres
org.invite_userInviter de nouveaux membres
org.update_user_rolesChanger les rôles des membres (le administrateur ne peut pas promouvoir à Super Admin — 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 le journal d'activité de l'organisation
org.read_billing_auditAfficher le journal d'audit spécifique aux factures

Répertorié à un seul application. Utilisez-ces lorsque membre d'équipe devrait travailler uniquement sur une application, pas 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_developerCharger des ensembles, gérer des appareils, déclencher des builds natifs, 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.
Chargement d'applicationapp_uploaderAccès en lecture + charger de nouvelles versions d'ensemble.
Lecteur d'applicationapp_readerAccès en lecture uniquement — statistiques, ensembles, canaux, journaux, appareils.
PermissionDescriptionAdministrateur d'applicationDéveloppeur d'applicationChargé de publication d'applicationLecteur d'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 de fichiers publiés
app.upload_bundlePublier une nouvelle version de l'ensemble de fichiers
app.create_channelCréer un nouveau canal
app.read_channelsVoir les canaux
app.read_logsVoir les journaux de livraison de mise à jour
app.manage_devicesAttribuer, surcharger ou délier les appareils
app.read_devicesVoir la liste des appareils
app.build_nativeDéclencher une construction cloud native
app.read_auditVoir 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 bundles, gestion de dispositifs forcés.
Voyeur de canalchannel_readerLecture seule — bundle actuel, historique, dispositifs forcés, journal d'audit.
PermissionDescriptionAdministrateur du canalVoyant du canal
channel.readAfficher le canal et son bundle actuel
channel.update_settingsModifier 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

Limités à une version de bundle unique. Rarement nécessaires — la plupart des équipes utilisent des rôles d'application au lieu de ceux-ci.

RôleNom interneDescription
Administrateur de bundlebundle_adminLisez, mettez à jour les métadonnées et supprimez un ensemble spécifique.
Visualiseur d'ensemblebundle_readerAccès en lecture seule à un ensemble 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 une présentation visuelle.

PermissionDescriptionComportement 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
Associate 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 par défaut (la valeur par défaut)
  • Autoriser — accorder explicitement, en dépit du rôle d'application
  • Interdire — 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 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 peut faire tout ce que peut faire

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)

Copier dans le presse-papier

  • Comment ça marche en pratique : Un administrateur à l'échelle de l'organisation, peuvent faire tout ce que peut faire un App Admin sur chaque application de l'organisation.
  • Un App Admin sur une application spécifique peut faire tout ce que peut faire un Channel Admin sur chaque canal de cette application.
  • Un App Developer peut faire tout ce que peut faire un App Uploader peut, encore plus.

La hiérarchie ne s'écoule que en bas — un channel_admin n'obtient jamais les permissions d'un niveau d'organisation, même s'ils détiennent également un rôle d'appareil.


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 — il ne peut pas couvrir plusieurs organisations.
  • Les groupes peuvent contenir des liens de rôle à n'importe quel niveau: organisation, application, canal ou bundle. Par exemple, un groupe peut être affecté au rôle Développeur d'application sur l'application A et au rôle 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é.
  • __CAPGO_KEEP_0__
  • A 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'aux
  • principaux d'utilisateurs — les __CAPGO_KEEP_0__ clés n'héritent pas des rôles de groupe. — API keys do not inherit group roles.

Section intitulée “Quand utiliser les groupes”

Scénario
Sans groupesAvec groupes5 ingénieurs QA ont besoin d'accès Développeur à 3 applications
5 ingénieurs QA ont besoin d'un 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 manuellementAjouter-les au groupe
Quelqu'un quitte l'équipe QASupprimer 3 liens de rôle manuellementSupprimer-les 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 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 de 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>
Onglet 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é.

If vous utilisez __CAPGO_KEEP_0__ Référence du Contrôle d'Accès pour planifier les opérations de tableau de bord et API se connecter à 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 Clés API pour les détails d'implémentation dans Clés API Appareils pour les détails d'implémentation dans Appareils Ensembles pour les détails d'implémentation dans les Bundles.