Zugriffssteuerungsreferenz
Einen Setup-Vorschlag mit den Installationsanweisungen und der vollständigen Markdown-Anleitung für diesen Plugin kopieren.
Capgo verwendet role-basierte Zugriffssteuerung (RBAC) um zu bestimmen, was jeder Teammitglied tun kann. Rollen sind nach Spielraum — vom gesamten Unternehmen bis hin zu einer einzelnen Paketversion.
Für eine visuelle Durchführung der Mitgliederverwaltung im Dashboard, siehe Organisation.
Rollenbereiche
Sektion mit dem Titel “Rollenbereiche”Jede Rolle gehört zu einem Bereich, der bestimmt, welche Ressource sie Zugriff gewährt.
| Bereich | context":"Seite/Bereich: Unterstützung / Premium-Unterstützungsseite oder Fußzeile-Unterstützungsabschnitt. Rolle: Abschnitt- oder Seiteüberschrift. Anzuzeigen in: Seite support-policy.astro. Nachrichten Schlüssel `support_policy_scope_title` (Unterstützungspolitik-Bereichstitel)." | Beispielanwendung |
|---|---|---|
| Organisation | Die gesamte Organisation und alle ihre Apps | Ihr Mitgründer erhält Super-Administrator; Ihr Buchhalter erhält Kassierer |
| App | Eine einzelne App und ihre Kanäle | Ein Auftragnehmer, der an einer App arbeitet, erhält Entwickler |
| Kanal | Ein einzelner Kanal innerhalb einer App | Ein QA-Engineer verwaltet nur den staging Kanal |
| Paket | Ein einzelnes Bundle-Version | Ein Rezensent benötigt Leserecht für eine bestimmte Veröffentlichung |
Ein Mitglied kann eine Rolle pro Zielbereich haben — zum Beispiel eine Rolle in der Organisation, eine Rolle auf App A und eine andere Rolle auf App B.
Organisationsrollen
Abschnitt mit dem Titel “Organisationsrollen”Diese Rollen werden bei der Einladung eines Mitglieds zugewiesen. Sie gewähren Zugriff auf die gesamte Organisation.
| Rolle | Internes Name | Beschreibung |
|---|---|---|
| Super Administrator | org_super_admin | Eigentümergleichwert. Vollzugriff einschließlich Löschung der Organisation, Verwaltung der Abrechnung und Übertragung von Apps. Wird automatisch dem Organisationsschöpfer zugewiesen. |
| Admin | org_admin | Vollzugriff — Mitglieder, Apps, Kanäle verwalten. Die Organisation kann nicht gelöscht, die Abrechnung aktualisiert, Apps übertragen oder Benutzer zum Super Admin befördert werden. |
| Abrechnungsverwalter | org_billing_admin | Abrechnungszugriff nur: Abrechnungsinfo, Rechnungen und Abrechnungsprotokolle anzeigen und aktualisieren. Kein Zugriff auf Apps oder Mitglieder. |
| Mitglied | org_member | Organisationsrechte-Tabelle |
Abschnitt mit dem Titel „Organisationsrechte-Tabelle“
Recht| Beschreibung | Super Admin | Eigentümergleichwert | Verwalter | Rechnungsverwaltung | Mitglied |
|---|---|---|---|---|---|
org.read | Organisation ansehen | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Organisationsname, Logo und E-Mail-Adresse der Verwaltung bearbeiten | ✅ | ✅ | ❌ | ❌ |
org.delete | Organisation dauerhaft löschen | ✅ | ❌ | ❌ | ❌ |
org.read_members | Mitgliederliste anzeigen | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Neue Mitglieder einladen | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Mitgliederrollen ändern (Admin kann nicht zu Super Admin befördern – durch Rollenstruktur blockiert) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | Rechnungsdaten und aktuelles Abonnement anzeigen | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Zahlungsmethode und Abonnement aktualisieren | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Rechnungen anzeigen | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Organisationsaktivitätsprotokoll anzeigen | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Rechnungsspezifisches Auditprotokoll anzeigen | ✅ | ✅ | ✅ | ❌ |
kann alles tun, was ein App-Administrator oder ein Super-Administrator tun kann, über alle Apps und Kanäle hinweg.
Abschnitt mit dem Titel ‘Anwendungsrollen’Gespeichert für eine einzelne Anwendung. Verwenden Sie diese, wenn ein Teammitglied nur an einer Anwendung arbeiten soll, nicht an der gesamten Organisation.
| Rolle | Interne Bezeichnung | Beschreibung |
|---|---|---|
| App-Administrator | app_admin | Vollständige Kontrolle über eine Anwendung — Kanäle, Geräte, Benutzerrollen für die Anwendung. Die Anwendung kann nicht gelöscht oder übertragen werden (diese sind Organisationsebenenoperationen). |
| App-Entwickler | app_developer | Bundles hochladen, Geräte verwalten, native Builds auslösen, Kanal-Einstellungen aktualisieren. Keine Löschung, keine Änderungen an App-Einstellungen, keine Kanal-Erstellung. |
| App-Hochloader | app_uploader | Leserecht + neue Bundle-Versionen hochladen. |
| App-Leser | app_reader | Leserecht — Statistiken, Pakete, Kanäle, Protokolle, Geräte. |
| App-Vorschau | app_preview | Organisations- und App-gesteuerte Vorschau- CI-Lebenszyklus: Hochladen eines Pakets und Erstellen eines Vorschaukanals. Die Erstellung dieses Kanals erteilt automatisch nur die Lebenszyklusrechte für ihn. |
App-Berechtigungs-Matrix
Berechtigungs-Matrix für Apps| Berechtigung | Beschreibung | App-Administrator | App-Entwickler | App-Hochloader | App-Leser |
|---|---|---|---|---|---|
app.read | Anzeige von App-Daten, -Statistiken und -Metadaten | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Einstellungen der App bearbeiten | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Die Liste der hochgeladenen Pakete anzeigen | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Ein neues Paketversion hochladen | ✅ | ✅ | ✅ | ❌ |
app.create_channel | Ein neuer Kanal erstellen | ✅ | ❌ | ❌ | ❌ |
app.read_channels | Kanäle anzeigen | ✅ | ✅ | ✅ | ✅ |
app.read_logs | Update-Übermittlungsprotokolle anzeigen | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | Geräte zuweisen, überschreiben oder entkoppeln | ✅ | ✅ | ❌ | ❌ |
app.read_devices | Geräteliste anzeigen | ✅ | ✅ | ✅ | ✅ |
app.build_native | Einen nativen Cloud-Build auslösen | ✅ | ✅ | ❌ | ❌ |
app.read_audit | App-basierte Aktivitätsprotokolle anzeigen | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | App-basierte Rollenzuweisungen verwalten | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Ein Paket löschen | ✅ | ❌ | ❌ | ❌ |
Zugriffsrechte für App-Vorschau
Abschnitt mit dem Titel ‘Zugriffsrechte für App-Vorschau’Verwenden App-Vorschau (app_preview) für eine Organisation- und App-gesicherte CI-Schlüssel, die ein PR-Vorschau-Lebenszyklus ohne umfassenden App- oder Organisationsebenen-Zugriff verwaltet.
Die app_preview die Bindung gewährt nur diese Anwendungsrechte:
| Zugriff | Ermöglicht |
|---|---|
app.read | Das ausgewählte App lesen |
app.read_bundles | Die hochgeladenen Pakete lesen |
app.upload_bundle | Ein Paket hochladen |
app.create_channel | Ein Kanal erstellen |
Wenn ein App-Vorschau-Schlüssel einen Kanal erstellt, Capgo gibt diesem Schlüssel automatisch einen Kinderecht für den neuen Kanal nur: channel_preview Zugriff
| Ermöglicht | Read the selected app |
|---|---|
channel.read | Lesen Sie den Kanal, der durch die Schlüssel erstellt wurde |
channel.promote_bundle | Setzen Sie die vom Schlüssel hochgeladene Bundle auf diesem Kanal |
channel.delete | Löschen Sie diesen Kanal |
Da app_preview beibehält app.read, kann der Schlüssel die Metadaten des Kanals in der ausgewählten App auflisten. Die automatische Kindbindung ist ein Grenze: sie gewährt keine Lebenszyklusmutationen für einen Kanal, den der Schlüssel nicht erstellt hat. __CAPGO_KEEP_0__ registriert den Vorabansichtsschlüssel, der jeden Kanal erstellt und jedes Bundle hochgeladen hat. Daher kann ein App-Vorabansichtsschlüssel jeden nicht öffentlichen Vorabansichtskanal erstellen, das eigene Bundle promotieren und diesen Kanal und das Bundle atomisch löschen,
Capgo records the preview key that created each channel and uploaded each bundle. Therefore an App Preview key can create each non-public preview channel it needs, promote its own bundle, and atomically delete that channel and bundle with channel delete --delete-bundleEs umfasst nicht
, Geräte- oder Rollenmanagement, app.update_settings, device or role management, channel.update_settings, channel.rollback_bundle, zwingende Geräteverwaltung oder allgemein bundle.delete.
Kanalrollen
Abschnitt mit dem Titel „Kanalrollen“Gespeichert auf einem einzelnen Kanal. Nützlich für die Bereitstellung von gezieltem Zugriff auf einen bestimmten Release-Kanal.
| Rolle | Interne Bezeichnung | Beschreibung |
|---|---|---|
| Kanaladministrator | channel_admin | Vollzugriff auf einen Kanal: Einstellungen, Promotion/Rollback von Paketen, Verwaltung von zwingendem Gerät. |
| Kanalbetrachter | channel_reader | Leserecht — aktuelles Paket, Historie, zwingendes Gerät, Audit-Protokoll. |
| Kanalvorschau | channel_preview | System-zugeordnet zum App-Vorschau-Schlüssel, der den Kanal erstellt hat: Leserecht, Promotion seines eigenen Pakets und Löschung dieses Kanals. |
Kanalberechtigungstabelle
Überschrift: Kanalberechtigungstabelle| Berechtigung | Beschreibung | Kanaladministrator | Kanalbetrachter | Kanalvorschau |
|---|---|---|---|---|
channel.read | Kanal und aktuelles Bundle anzeigen | ✅ | ✅ | ✅ |
channel.update_settings | Kanal-Einstellungen bearbeiten (Plattform-Toggle, Update-Politik…) | ✅ | ❌ | ❌ |
channel.delete | Kanal löschen | ✅ | ❌ | ✅ |
channel.read_history | Bundlesitzungsverlauf anzeigen | ✅ | ✅ | ❌ |
channel.promote_bundle | aktuelles Bundle auf dem Kanal setzen | ✅ | ❌ | ✅ |
channel.rollback_bundle | Zurückrollen zu einem vorherigen Bundle | ✅ | ❌ | ❌ |
channel.manage_forced_devices | Zwingen Sie bestimmte Geräte zu diesem Kanal | ✅ | ❌ | ❌ |
channel.read_forced_devices | Anzeigen der Liste der zwingend eingestellten Geräte | ✅ | ✅ | ❌ |
channel.read_audit | Anzeigen des Aktivitätsprotokolls des Kanals | ✅ | ✅ | ❌ |
Bundle-Rollen zuweisen
Rollen für ein BundleGeskoperter auf eine einzelne Bundle-Version. Selten benötigt — die meisten Teams verwenden stattdessen App-Rollen.
| Rolle | Interne Bezeichnung | Beschreibung |
|---|---|---|
| Bundle-Administrator | bundle_admin | Lesen, Metadaten aktualisieren und eine bestimmte Bundle löschen. |
| Bundle-Betrachter | bundle_reader | Leserecht auf eine bestimmte Bundle. |
Kanalberechtigungsüberwachung (Dashboard)
Abschnitt mit dem Titel “Kanalberechtigungsüberwachung (Dashboard)”In der Dashboard wird der Zugriff auf einen Kanal durch die Rolle der App des Benutzers standardmäßig bestimmt. Für eine feinere Kontrolle können Sie spezifische Kanalberechtigungen pro Benutzer oder Gruppe ohne Änderung der App-Rolle überschreiben. Überschreiben Sie spezifische Kanalberechtigungen pro Benutzer oder Gruppe ohne Änderung der App-Rolle.
Übernahmen werden von der App aus der Anwendungsoberfläche konfiguriert. Zugriff Zugriff Klicken Sie auf die Schaltfläche für Kanalberechtigungen (Schildsymbol) neben einem Benutzer, um die Konfiguration zu öffnen. Siehe Organisation — Übernahme von Kanalberechtigungen
Übernehmbare Berechtigungen
Abschnitt mit dem Titel| Berechtigung | Beschreibung | Standardverhalten |
|---|---|---|
| Lesen | Der Kanal und sein aktuelles Bundle anzeigen | Von der App-Rolle geerbt |
| Historie | Bundzuweisungshistorie anzeigen | Von der App-Rolle geerbt |
| Bund zuweisen | Aktuellen Bund auf dem Kanal setzen oder ändern | Von der App-Rolle geerbt |
Jede Berechtigung kann auf folgende Weise festgelegt werden:
- Standard — von der App-Rolle (der Standard) erben
- Erlauben — explizit erteilen, unabhängig von der App-Rolle
- Verweigern — explizit blockieren, unabhängig vom App-Rollenstatus
Mit dieser Funktion können Sie zum Beispiel einem App-Leser die Möglichkeit geben, Kanäle ohne die Rolle des App-Entwicklers zu erstellen. staging Rollenhierarchie
Abschnitt mit dem Titel ‘Rollenhierarchie’
Rollen bilden eine Hierarchie. Eine übergeordnete Rolleerbt alle Berechtigungen deren Kinder. Das bedeutet, dass ein alles tun kann, was ein org_admin tun kann, was wiederum ein app_admin tun kann, und so weiter. channel_admin — explizit blockieren, unabhängig vom App-Rollenstatus
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 Administrator auf der Ebene der Organisation kann alles tun, was ein App-Administrator auf jeder App in der Organisation kann.
- Ein App-Administrator auf einer bestimmten App kann alles tun, was ein Kanal-Administrator auf jedem Kanal in dieser App kann.
- Ein App-Entwickler alles, was ein App-Herausgeber mehr kann.
Die Hierarchie fließt nur abwärts — ein channel_admin nie erhält Organisations-Ebenen-Berechtigungen, selbst wenn sie auch eine App-Ebene-Rolle haben.
Stattdessen können Sie Rollen anstatt jedem Benutzer einzeln zuweisen, eine Gruppen und Rollen zuweisen an die Gruppe. Jeder Mitglied der Gruppe erhält diese Rollen automatisch.
Wie Gruppen funktionieren
Abschnitt mit dem Titel “Wie Gruppen funktionieren”- Eine Gruppe gehört zu einer Organisation — sie kann sich nicht auf mehrere Orgs erstrecken.
- Gruppen können Rollenzuweisungen auf jeder Ebenehaben: Org, App, Kanal oder Bundle. Zum Beispiel kann eine Gruppe dem App-Entwickler Rollen auf App A und dem Kanal-Admin Rolle auf dem
stagingKanal von App B. - Wenn die Berechtigungen eines Benutzers bewertet werden, werden alle seine Gruppenmitgliedschaften transparent aufgelöst. Wenn eine seiner Gruppen die erforderliche Berechtigung gewährt, wird der Zugriff gewährt.
- Ein Benutzer kann zu mehreren Gruppengehören und die Berechtigungen aller Gruppen additiv sind.
- Gruppen-basierte Berechtigungen gelten nur für Benutzerprinzipale — API Schlüssel erben keine Gruppenrollen.
Wann Gruppen zu verwenden sind
Wann Gruppen zu verwenden sind| Szenario | Ohne Gruppen | Mit Gruppen |
|---|---|---|
| 5 QA-Engineer benötigen Zugriff auf 3 Apps als Entwickler | 15 individuelle Rollenzuweisungen | 1 Gruppe + 3 Rollenzuweisungen |
| Jemand tritt der QA-Team bei | Fügen Sie 3 Rollenzuweisungen manuell hinzu | Fügen Sie sie der Gruppe hinzu |
| Jemand verlässt das QA-Team | Entfernen Sie 3 Rollenzuweisungen manuell | Entfernen Sie sie aus der Gruppe |
Gruppen über API verwalten
Abschnitt mit dem Titel „Gruppen über API verwalten“Alle Gruppen-Endpunkte erfordern eine Authentifizierung und werden unter /private/groups.
Gruppen auflisten
Abschnitt mit dem Titel „Gruppen auflisten“curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Erfordert org.read_members eine Berechtigung.
Gruppe erstellen
Abschnitt mit dem Titel „Gruppe erstellen“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" }'Benötigt org.update_user_roles Berechtigung (Super Admin oder Zugriff auf Appflow-Plugins oder).
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" }'Eine Gruppe löschen
Abschnitt: Eine Gruppe löschencurl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"Wenn ein Gruppe gelöscht wird, werden auch alle ihre Rolle-Zuweisungen entfernt. Mitglieder werden nicht aus der Organisation gelöscht.
Gruppenmitglieder auflisten
Abschnitt mit dem Titel „Gruppenmitglieder auflisten“curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Mitglied einer Gruppe hinzufügen
Abschnitt mit dem Titel „Mitglied einer Gruppe hinzufügen“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. Ein bestehendes Mitglied hinzufügen ist eine No-Operation.
Ein Mitglied aus einer Gruppe entfernen
Sektion mit dem Titel “Ein Mitglied aus einer Gruppe entfernen”curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"Rollen zuweisen über API
Sektion mit dem Titel “Rollen zuweisen über API”Mitgliederliste
Abschnitt mit dem Titel “Mitglieder auflisten”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 }]Ein Mitglied einladen
Abschnitt mit dem Titel “Ein Mitglied einladen”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" }'Zulässige Werte für invite_type:
| Wert | Zugeordnete Rolle |
|---|---|
org_super_admin | Super Admin |
org_admin | Admin |
org_billing_admin | Rechnungsverwaltung |
org_member | Mitglied |
Mitglied entfernen
Abschnitt: "Mitglied entfernen"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"npx @capgo/cli organization list --apikey <API_KEY>Mitglieder auflisten
Abschnitt mit dem Titel "Mitglieder auflisten"npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>Benutzerdefinierte Rollen
Abschnitt mit dem Titel "Benutzerdefinierte Rollen"Die eingebauten Rollen decken die meisten Teamstrukturen ab. Die Erstellung von benutzerdefinierten Rollen steht auf unserem Roadmap – wenn dies etwas ist, das Ihr Team benötigt, Kontaktiere unsIhr Use Case wird uns dabei helfen, diese Funktion zu priorisieren.
Weiter zu Access Control Reference
Abschnitt: Weiter zu Access Control ReferenceWenn Sie Access Control Reference verwenden, um Dashboard und __CAPGO_KEEP_0__-Operationen zu planen, verbinden Sie es mit API-Übersicht für die Implementierungsdetails in API-Übersicht for the implementation detail in API Overview, für die Implementierungsdetails in Einführung __CAPGO_KEEP_0__-Schlüssel API Keys für die Implementierungsdetails in API Schlüsseln Geräte für die Implementierungsdetails in Geräten und Bundles für die Implementierungsdetails in Bundles.