Zum Inhalt springen

Access Control Reference

Capgo uses Zugriffssteuerung auf der Grundlage von Rollen (RBAC) um zu bestimmen, was jeder Teammitglied tun kann. Rollen werden nach Umfang – von der gesamten Organisation bis hin zu einer einzelnen Pakete.

Für eine visuelle Durchführung der Mitgliederverwaltung im Dashboard siehe Organisation.


Jede Rolle gehört zu einem Bereich, der bestimmt, welcher Ressource sie Zugriff gewährt.

BereichGilt fürBeispielanwendung
OrganisationDie gesamte Organisation und alle ihre AppsIhr Mitgründer erhält Super Admin; Ihr Buchhalter erhält Billing Manager
AppEine einzelne App und ihre KanäleEin Auftragnehmer, der an einer App arbeitet, erhält App-Entwickler
KanalEin einzelner Kanal innerhalb einer AppEin QA-Engineer verwaltet nur den staging Kanal
PaketEine einzelne PaketversionEin Rezensent benötigt Leserecht für eine bestimmte Veröffentlichung

Ein Mitglied kann eine Rolle pro Zielbereich haben — zum Beispiel eine Organisationrolle, eine Rolle auf App A und eine andere Rolle auf App B.


Diese Rollen werden zugewiesen, wenn ein Mitglied eingeladen wird. Sie gewähren Zugriff auf die gesamte Organisation.

RolleInterne BezeichnungBeschreibung
Super Adminorg_super_adminÄquivalent zum Besitzer. Vollständiger Kontrolleinschluss, einschließlich Löschung der Organisation, Verwaltung der Abrechnung und Übertragung von Apps. Automatisch der Organisationsersteller zugewiesen.
Verwaltungorg_adminVollzugriff — Mitglieder, Apps, Kanäle verwalten. Die Organisation kann nicht gelöscht, die Rechnung aktualisiert, Apps übertragen oder Benutzer zum Super Admin befördert werden.
Rechnungsverwalterorg_billing_adminRechnungszugriff: Rechnungsinformationen, Rechnungen und Rechnungsprotokolle anzeigen und aktualisieren. Kein Zugriff auf Apps oder Mitglieder.
Mitgliedorg_memberLeserecht auf die Organisation und alle ihre Apps.
RechtBeschreibungSuper AdminVerwaltungRechnungsverwaltungMitglied
org.readOrganisation ansehen
org.update_settingsOrganisationsname, Logo und E-Mail-Adresse der Verwaltung bearbeiten
org.deleteOrganisation dauerhaft löschen
org.read_membersMitgliederliste ansehen
org.invite_userNeue Mitglieder einladen
org.update_user_rolesMitgliederrollen ändern (Admin kann nicht zum Super Admin befördern – durch Rollen-Hierarchie blockiert)
org.read_billingRechnungsinformationen und aktuelles Abonnement ansehen
org.update_billingZahlungsmethode und Abonnement aktualisieren
org.read_invoicesRechnungen ansehen
org.read_auditOrganisationsaktivitätsprotokoll ansehen
org.read_billing_auditRechnungsspezifische Audit-Protokolle anzeigen

Gespeichert auf ein einzelnes App. Verwenden Sie diese, wenn ein Teammitglied nur an einer App arbeiten soll, nicht an der gesamten Organisation.

RolleInternes NameBeschreibung
App-Administratorapp_adminVollständige Kontrolle über eine App — Kanäle, Geräte, Benutzerrollen für die App. Kann die App nicht löschen oder übertragen (diese sind Organisationsebenenoperationen).
App-Entwicklerapp_developerHochladen von Paketen, Geräte verwalten, native Builds auslösen, Kanal-Einstellungen aktualisieren. Keine Löschung, keine Änderungen der App-Einstellungen, keine Kanal-Erstellung.
App-Hochloaderapp_uploaderLeserecht + Hochladen neuer Paketversionen.
App-Leserapp_readerNur-Lesezugriff — Statistiken, Pakete, Kanäle, Protokolle, Geräte.
ZugriffsrechtBeschreibungApp-AdministratorApp-EntwicklerApp-HochloaderApp-Leser
app.readApp-Daten ansehen, Statistiken und Metadaten
app.update_settingsApp-Einstellungen bearbeiten
app.read_bundlesBundles, die hochgeladen wurden, anzeigen
app.upload_bundleEine neue Bundle-Version hochladen
app.create_channelEinen neuen Kanal erstellen
app.read_channelsKanäle anzeigen
app.read_logsUpdate-Lieferungsprotokolle anzeigen
app.manage_devicesGeräte zuweisen, überschreiben oder entkoppeln
app.read_devicesGeräteliste anzeigen
app.build_nativeEin native Cloud-Build auslösen
app.read_auditAnwendungsaktivitätsprotokoll anzeigen
app.update_user_rolesAnwendungsbeschränkte Rollenzuweisungen verwalten
bundle.deleteEine Bundle löschen

Gespeichert in einem einzelnen Kanal. Nützlich für die Bereitstellung eines gezielten Zugriffs auf einen bestimmten Release-Kanal.

RolleInternes NameBeschreibung
Kanal-Adminchannel_adminVollzugriff auf einen Kanal: Einstellungen, Bündel promoten/Rollbacks, zwingende Geräte verwalten.
Kanal-Betrachterchannel_readerLeserecht — aktuelles Bündel, Historie, zwingende Geräte, Audit-Log.
BerechtigungBeschreibungKanal-AdministratorKanal-Besucher
channel.readDer Kanal und seine aktuelle Bundle anzeigen
channel.update_settingsKanal-Einstellungen bearbeiten (Plattform-Toggle, Update-Politik…)
channel.deleteKanal löschen
channel.read_historyBundle-Zuweisungsgeschichte anzeigen
channel.promote_bundleAktives Bundle auf dem Kanal setzen
channel.rollback_bundleZurückrollen auf ein vorheriges Bundle
channel.manage_forced_devicesSpezifische Geräte auf diesen Kanal zwingen
channel.read_forced_devicesZur Liste der zwingenden Geräte gehen
channel.read_auditKanal-Aktivitäts-Protokoll anzeigen

Gespeichert für eine einzelne Paketversion. Selten benötigt — die meisten Teams verwenden stattdessen App-Rollen.

RolleInterne BezeichnungBeschreibung
Paket-Adminbundle_adminLese, aktualisiere Metadaten und lösche eine bestimmte Bundle.
Bundle Viewerbundle_readerLeserecht auf eine bestimmte Bundle.

Kanalberechtigungsüberschreibungen (Dashboard)

Überschrift: “Kanalberechtigungsüberschreibungen (Dashboard)”

In der Dashboard wird der Zugriff auf einen Kanal durch die Rolle des Benutzers im App durch Standard vorgegeben. Für eine feinere Kontrolle kannst du spezifische Kanalberechtigungen pro Benutzer oder Gruppe ohne Änderung seiner App-Rolle überschreiben.

Die Überschreibungen werden von der App aus Zugriff konfiguriert, indem du auf den Button für Kanalberechtigungen (Schild-Icon) neben einem Benutzer klickst. Siehe Organisation — Überschreibung von Kanalberechtigungen für eine visuelle Anleitung.

BerechtigungBeschreibungStandardverhalten
LesenBündel der Kanal und seiner aktuellen Konfiguration anzeigenVom App-Rollen geerbt
HistorieBündelzuweisungshistorie anzeigenVom App-Rollen geerbt
Associate BundleBundle auf dem Kanal setzen oder änderngeerbt von der App-Rolle

Jede Berechtigung kann auf:

  • Standard — von der App-Rolle erben (der Standard)
  • Erlauben — explizit gewähren, unabhängig von der App-Rolle
  • Verweigern — explizit ablehnen, unabhängig von der App-Rolle

Mit diesem ermöglichen Sie zum Beispiel, einem App-Leser die Möglichkeit zu geben, staging Bundles auf dem Kanal zu verknüpfen, ohne sie zu App-Entwickler zu befördern.


Rollen bilden eine Hierarchie. Eine übergeordnete Rolle erbt alle Berechtigungen ihre Kinder. Das bedeutet, dass eine org_admin alles tun kann, was eine app_admin kann, die wiederum alles tun kann, was eine channel_admin kann, und so weiter.

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)

Wie es in der Praxis funktioniert:

  • Ein Admin auf der Ebene der Organisation kann alles tun, was ein App Admin kann, auf jeder App in der Organisation.
  • Ein App Admin auf einer bestimmten App kann alles tun, was ein Channel Admin kann, auf jedem Kanal in dieser App.
  • Ein App-Entwickler kann alles tun, was ein App-Uploader kann, mehr.

Die Hierarchie fließt nur unten — ein channel_admin erhält nie Org-Ebene-Berechtigungen, selbst wenn sie auch eine App-Ebene-Rolle innehaben.


Anstatt Rollen jedem Benutzer einzeln zuzuweisen, können Sie Gruppen erstellen und Rollen der Gruppe zuweisen. Jeder Mitglied der Gruppe erhält diese Rollen automatisch. Wie Gruppen funktionieren

Abschnitt mit dem Titel „Wie Gruppen funktionieren“

__CAPGO_KEEP_0__
  • Ein Gruppe gehört zu einer Organisation an — sie kann nicht auf mehrere Orgs. ausgedehnt werden.
  • Gruppen können Rollenzuweisungen auf jeder Ebene speichern: Org, App, Kanal oder Bundle.Beispiel: Eine Gruppe kann dem App-Entwickler Rollen auf App A und dem Kanal-Admin Rollen auf dem staging Kanal von App B zugewiesen werden.
  • Wenn die Berechtigungen eines Benutzers ausgewertet werden, werden alle seine Gruppenmitgliedschaften transparent aufgelöst. Wenn eine seiner Gruppen die erforderliche Berechtigung gewährt, wird der Zugriff genehmigt.
  • A Benutzer kann mehreren Gruppen angehören und die Rechte aller Gruppen sind additiv.Gruppen-basierte Rechte gelten nur für
  • Benutzerprinzipale — __CAPGO_KEEP_0__ Schlüssel erben keine Gruppenrollen. — API keys do not inherit group roles.

Abschnitt mit dem Titel “Wann Gruppen zu verwenden”

Szenario
Ohne GruppenMit Gruppen5 QA-Engineure benötigen Entwickler-Zugriff auf 3 Apps
5 QA-Engineure benötigen Zugriff als Entwickler auf 3 Apps15 individuelle Rollenzuweisungen1 Gruppe + 3 Rollenzuweisungen
Jemand tritt dem QA-Team beiFügen Sie 3 Rollenzuweisungen manuell hinzuFügen Sie sie der Gruppe hinzu
Jemand verlässt das QA-TeamEntfernen Sie 3 Rollenzuweisungen manuellEntfernen Sie sie aus der Gruppe

Alle Gruppen-Endpunkte erfordern eine Authentifizierung und werden unter /private/groups.

Terminalfenster
curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \
-H "authorization: <API_KEY>"

Erforderliche org.read_members Berechtigung.

Terminalfenster
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"
}'

Erforderliche org.update_user_roles Berechtigung (Super Admin oder Administrator).

Ein Gruppenupdate durchführen

Abschnitt: Ein Gruppenupdate durchführen
Terminalfenster
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"
}'
Terminalfenster
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \
-H "authorization: <API_KEY>"

Bei der Löschung einer Gruppe werden auch alle zugehörigen Rollenzuweisungen entfernt. Mitglieder werden jedoch nicht aus der Organisation gelöscht.

Terminalfenster
curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \
-H "authorization: <API_KEY>"
Terminalfenster
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>" }'

Der Benutzer muss bereits Mitglied der Organisation sein. Die Hinzufügung eines bestehenden Mitglieds ist eine No-Operation.

Terminalfenster
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \
-H "authorization: <API_KEY>"

Terminalfenster
curl -X GET "https://api.capgo.app/organization/members" \
-H "authorization: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "orgId": "<ORG_ID>" }'

Antwort:

[
{
"uid": "user-uuid",
"email": "alice@example.com",
"image_url": "https://...",
"role": "org_admin",
"is_tmp": false
}
]
Terminalfenster
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"
}'

Gültige Werte für invite_type:

WertZugeteilte Rolle
org_super_adminSuper Administrator
org_adminAdministrator
org_billing_adminKostenstellenverwalter
org_memberMitglied
Terminalfenster
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"
}'

Rollen zuweisen über CLI

Abschnitt: Rollen zuweisen über CLI

Organisationen auflisten

Abschnitt: Organisationen auflisten
Terminalfenster
npx @capgo/cli organization list --apikey <API_KEY>
Terminalfenster
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

Die eingebauten Rollen decken die meisten Teamstrukturen ab. Die Erstellung von benutzerdefinierten Rollen steht auf unserem Roadmap – wenn Ihr Team diese Funktion benötigt, Kontaktieren Sie unsIhr Use Case wird uns direkt helfen, diese Funktion zu priorisieren.

Wenn Sie Zugriffssteuerungsreferenz um das Dashboard und API-Operationen zu planen, verbinden Sie es mit API-Übersicht für die Implementierungsdetails in API-Übersicht, Einführung für die Implementierungsdetails in Einführung, API-Schlüssel für die Implementierungsdetails in API-Schlüssel, Geräte für die Implementierungsdetails in Geräte, und Pakete für die Implementierungsdetails in Bundles.