Riferimento al Controllo degli Accessi
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Capgo utilizza il controllo degli accessi basato sul ruolo (RBAC) per gestire cosa ogni membro del team può fare. I ruoli sono organizzati per ambito — dall'intera organizzazione fino a un singolo pacchetto.
Per una panoramica visiva della gestione dei membri nel pannello di controllo, vedere Organizzazione.
Scopi dei ruoli
Sottosezione intitolata “Scopi dei ruoli”Ogni ruolo appartiene a uno scopo che determina a cosa si riferisce l'accesso.
| Scopo | contexto: Pagina/area: Supporto / sezione di supporto premium o sezione di supporto del footer. Ruolo: Intestazione di sezione o pagina. Visualizzato in: pagina support-policy.astro. Chiave di messaggio `support_policy_scope_title` (Titolo dello scopo di supporto della politica). | Esempio di utilizzo |
|---|---|---|
| Organizzazione | Tutta l'organizzazione e tutte le sue app | Tu dai ruolo di Super Amministratore al tuo co-fondatore; il tuo contabile riceve il ruolo di Gestore delle fatture |
| App | Una singola app e i suoi canali | Un contractor che lavora su una app riceve il ruolo di Sviluppatore di app |
| Canale | Un singolo canale all'interno di un'app | Un ingegnere QA gestisce solo il staging canale |
| Pacchetto | Ambito di versione singolo | Un revisore ha bisogno di accesso in lettura a una versione specifica di rilascio |
Un membro può detenere un ruolo per ambito di destinazione — ad esempio, un ruolo di organizzazione, un ruolo su App A e un ruolo diverso su App B.
Ruoli di organizzazione
Sottosezione intitolata “Ruoli di organizzazione”Questi ruoli sono assegnati quando si invita un membro. Concedono l'accesso all'intera organizzazione.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore Superiore | org_super_admin | Paragono dell'organizzazione. Controllo completo, incluso la possibilità di eliminare l'organizzazione, gestire la fatturazione e trasferire le app. Viene concesso automaticamente al creatore dell'organizzazione. |
| Amministratore | org_admin | Amministrazione completa — gestire membri, app, canali. Non è possibile eliminare l'organizzazione, aggiornare la fatturazione, trasferire le app o promuovere gli utenti a Super Amministratore. |
| Gestore fatturazione | org_billing_admin | Accesso solo alla fatturazione: visualizzare e aggiornare le informazioni sulla fatturazione, le fatture e i registri di audit della fatturazione. Nessun accesso alle app o ai membri. |
| Membro | org_member | Matrice di permessi dell'organizzazione |
Permessi dell'organizzazione
Descrizione dei permessi| Super Amministratore | Matrice dei permessi dell'organizzazione | Descrizione dei permessi | Amministratore | Gestore fatturazione | Membro |
|---|---|---|---|---|---|
org.read | Visualizza l'organizzazione | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Modifica nome, logo e indirizzo email di gestione dell'organizzazione | ✅ | ✅ | ❌ | ❌ |
org.delete | Cancella permanentemente l'organizzazione | ✅ | ❌ | ❌ | ❌ |
org.read_members | Visualizza la lista dei membri | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Invita nuovi membri | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Cambia ruoli dei membri (l'amministratore non può promuovere a Super Amministratore — bloccato dalla gerarchia dei ruoli) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | Visualizza informazioni di fatturazione e piano attuale | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Aggiorna metodo di pagamento e piano | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Visualizza fatture | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Visualizza il registro delle attività dell'organizzazione | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Visualizza il registro di audit specifico per la fatturazione | ✅ | ✅ | ✅ | ❌ |
può fare, su tutti gli app e i canali.
Titolo della sezione “Ruoli dell'app”Limitato a un singolo app. Utilizza questi quando un membro del team dovrebbe lavorare solo su un'app, non sull'intera organizzazione.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore dell'app | app_admin | Pieno controllo di un'app — canali, dispositivi, ruoli degli utenti per l'app. Non è possibile cancellare o trasferire l'app (queste sono operazioni a livello di organizzazione). |
| Sviluppatore dell'app | app_developer | Carica bundle, gestisci dispositivi, attiva costruzioni native, aggiorna impostazioni dei canali. Nessuna cancellazione, nessuna modifiche alle impostazioni dell'app, nessuna creazione di canali. |
| Caricatore di bundle dell'app | app_uploader | Accesso di sola lettura + caricamento di nuove versioni dei bundle. |
| Lettrice dell'app | app_reader | Letture solo — statistiche, pacchetti, canali, log, dispositivi. |
| Anteprima dell'app | app_preview | Ciclo di vita della CI legato all'organizzazione e all'app: caricare un pacchetto e creare un canale di anteprima. La creazione di quel canale concede automaticamente i diritti di ciclo di vita solo per esso. |
Matrice di permessi dell'app
Sottosezione intitolata “Matrice di permessi dell'app”| Permesso | Descrizione | Amministratore dell'app | Sviluppatore dell'app | Caricatore dell'app | Letture dell'app |
|---|---|---|---|---|---|
app.read | Visualizza i dettagli dell'app, le statistiche e i metadati | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Modifica le impostazioni dell'app | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Visualizza l'elenco dei bundle caricati | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Carica una nuova versione del bundle | ✅ | ✅ | ✅ | ❌ |
app.create_channel | Crea un nuovo canale | ✅ | ❌ | ❌ | ❌ |
app.read_channels | Visualizza i canali | ✅ | ✅ | ✅ | ✅ |
app.read_logs | Visualizza i registri di consegna degli aggiornamenti | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | Assegna, sovrascrivi o disconnetti dispositivi | ✅ | ✅ | ❌ | ❌ |
app.read_devices | Visualizza l'elenco dei dispositivi | ✅ | ✅ | ✅ | ✅ |
app.build_native | Avvia un build cloud nativo | ✅ | ✅ | ❌ | ❌ |
app.read_audit | Visualizza il registro di attività dell'app | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | Gestisci le assegnazioni di ruoli a livello di app | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Cancella un bundle | ✅ | ❌ | ❌ | ❌ |
Set di autorizzazioni per anteprima dell'app
Sezione intitolata “Set di autorizzazioni per anteprima dell'app”Usa Anteprima dell'app (app_preview) per una chiave CI a livello di organizzazione e app che gestisce il ciclo di vita dell'anteprima di una PR senza accesso ampio a livello di app o organizzazione.
La app_preview concede solo questi permessi di livello di app:
| Permesso | Consente |
|---|---|
app.read | Leggi l'app selezionata |
app.read_bundles | Leggi i bundle caricati |
app.upload_bundle | Carica un bundle |
app.create_channel | Creare un canale |
When an App Preview key creates a channel, Capgo automatically gives that key a child channel_preview Permesso
| Consente | __CAPGO_KEEP_0__ |
|---|---|
channel.read | Leggi il canale creato dalla chiave |
channel.promote_bundle | Imposta il bundle caricato dalla chiave stessa su quel canale |
channel.delete | Cancella quel canale |
Poiché app_preview conserva app.read, la chiave può enumerare i metadati del canale nella selezionata app. La binding automatica dei figli è un limite di gestione : non concede mutazioni di ciclo di vita per un canale che la chiave non ha creato.
Capgo registra la chiave di anteprima che ha creato ogni canale e caricato ogni bundle. Quindi una chiave di anteprima dell'applicazione può creare ogni canale di anteprima non pubblico di cui ha bisogno, promuovere il proprio bundle e cancellare atomicamente quel canale e bundle con channel delete --delete-bundle; non può fare quelle cose a un canale predefinito/main esistente, a un canale di un'altra chiave di anteprima o a un bundle di un'altra chiave.
Non include app.update_settings, la gestione dei dispositivi o dei ruoli, channel.update_settings, channel.rollback_bundleAttenzione bundle.delete.
Sottosezione intitolata “Ruoli di canale”
Limitato a un singolo canale. Utile per fornire accesso mirato a un canale di rilascio specifico.Attenzione
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore del canale | channel_admin | Controllo completo di un canale: impostazioni, promuovi/riporta bundle, gestisci dispositivi obbligati. |
| Visualizzatore del canale | channel_reader | Letto solo — bundle corrente, storia, dispositivi obbligati, registro degli accessi. |
| Anteprima del canale | channel_preview | Assegnato automaticamente alla chiave App Preview che ha creato il canale: lettura, promuovi il proprio bundle e cancella quel canale. |
Matrice di autorizzazioni del canale
Sezione intitolata “Matrice di autorizzazioni del canale”| Permesso | Descrizione | Amministratore del canale | Visualizzatore del canale | Anteprima del canale |
|---|---|---|---|---|
channel.read | Visualizza il canale e il suo bundle corrente | ✅ | ✅ | ✅ |
channel.update_settings | Modifica le impostazioni del canale (toggle di piattaforma, politica di aggiornamento…) | ✅ | ❌ | ❌ |
channel.delete | Cancella il canale | ✅ | ❌ | ✅ |
channel.read_history | Visualizza la cronologia delle assegnazioni del bundle | ✅ | ✅ | ❌ |
channel.promote_bundle | Imposta il bundle attivo sul canale | ✅ | ❌ | ✅ |
channel.rollback_bundle | Ritorna a un bundle precedente | ✅ | ❌ | ❌ |
channel.manage_forced_devices | Forza dispositivi specifici a questo canale | ✅ | ❌ | ❌ |
channel.read_forced_devices | Elenca i dispositivi forzati | ✅ | ✅ | ❌ |
channel.read_audit | Elenca l'attività del canale | ✅ | ✅ | ❌ |
Ruoli del bundle
Titolo della sezione “Ruoli del bundle”Limitato a una versione del bundle. Raramente necessario — la maggior parte delle squadre utilizza invece ruoli a livello di app.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore del pacchetto | bundle_admin | Leggi, aggiorna i metadati e cancella un pacchetto specifico. |
| Visualizzatore del pacchetto | bundle_reader | Accesso di sola lettura a un pacchetto specifico. |
Override delle autorizzazioni del canale (Pannello di controllo)
Sottotitolo del sezione “Override delle autorizzazioni del canale (Pannello di controllo)”Sulla dashboard, l'accesso al canale è determinato dal ruolo dell'applicazione dell'utente di default. Per un controllo più dettagliato, puoi sovrascrivere le autorizzazioni del canale specifiche per utente o gruppo senza modificare il ruolo dell'applicazione.
Le sovrascritture sono configurate dall'applicazione nel Accesso tab cliccando sul pulsante delle autorizzazioni del canale (icona della protezione) accanto a un utente. Vedi Organizzazione — Sovrascrittura delle autorizzazioni del canale per una guida visiva.
Le autorizzazioni sovrascrivibili
Sottosezione intitolata "Autorizzazioni sovrascrivibili"| Autorizzazione | Descrizione | Comportamento predefinito |
|---|---|---|
| Leggi | Visualizza il canale e il suo bundle corrente | Inherited from app role |
| Storia | Visualizza la storia dell'assegnazione del bundle | Inherited from app role |
| Associare bundle | Imposta o cambia il bundle attivo sul canale | Inherited from app role |
Ogni autorizzazione può essere impostata su:
- Predefinito — eredita dall'ruolo dell'applicazione (predefinito)
- Consenti — concede esplicitamente, indipendentemente dall'ruolo dell'applicazione
- Negare — blocca esplicitamente, indipendentemente dal ruolo dell'app
Questo ti consente, ad esempio, di dare a un lettore di App la possibilità di associare bundle sul staging canale senza promuoverli a sviluppatore di App.
Gerarchia dei ruoli
Sezione intitolata “Gerarchia dei ruoli”Il ruolo forma una gerarchia. Un ruolo padre eredita tutti i permessi dei suoi figli. Ciò significa che un org_admin può fare tutto ciò che può fare un app_admin che in turn può fare tutto ciò che può fare un channel_admin che in turn può fare tutto ciò che può fare un
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)Come funziona nella pratica:
- Un Amministratore all'organo di governo può fare tutto ciò che un Amministratore dell'app può fare, su ogni app nell'organo.
- Un Amministratore dell'app su un'app specifica può fare tutto ciò che un Amministratore del canale può fare, su ogni canale in quell'app.
- Un Un sviluppatore di App può fare tutto ciò che può fare un Un caricatore di App più.
La gerarchia fluisce solo in basso — un channel_admin mai acquisisce permessi di livello organizzativo, neanche se detiene anche un ruolo di livello app.
Invece di assegnare ruoli a ogni utente individualmente, puoi creare gruppi e assegna ruoli al gruppo. Ogni membro del gruppo eredita automaticamente quei ruoli.
Come funzionano i gruppi
Sottosezione intitolata “Come funzionano i gruppi”- Un gruppo appartiene a un'organizzazione – non può coprire più di un'org.
- I gruppi possono contenere vincoli di ruolo a qualsiasi ambito: org, app, canale o bundle. Ad esempio, un gruppo può essere assegnato il Ruolo sviluppatore dell'app ruolo su App A e il Amministratore del canale ruolo sul
stagingcanale di App B. - Quando vengono valutate le autorizzazioni di un utente, tutti i suoi appartenimenti ai gruppi vengono risolti in modo trasparente. Se qualsiasi gruppo di cui fa parte concede la permessi richiesto, l'accesso è consentito.
- Un utente può appartenere a più gruppi, e i permessi di tutti i gruppi sono cumulativi.
- I permessi basati sui gruppi si applicano solo ai principali utente — le chiavi API non ereditano ruoli di gruppo.
Quando utilizzare i gruppi
Sezione intitolata “Quando utilizzare i gruppi”| Scenario | Senza gruppi | Con gruppi |
|---|---|---|
| 5 ingegneri QA hanno bisogno di accesso al ruolo di sviluppatore per 3 app | 15 vincoli di ruolo individuali | 1 gruppo + 3 vincoli di ruolo |
| Qualcuno entra a far parte del team QA | Aggiungere 3 vincoli di ruolo manualmente | Aggiungerli al gruppo |
| Qualcuno lascia il team QA | Rimuovere 3 vincoli di ruolo manualmente | Rimuoverli dal gruppo |
Gestione dei gruppi tramite API
Sezione intitolata “Gestione dei gruppi tramite API”Tutti gli endpoint dei gruppi richiedono l'autenticazione e sono serviti sotto /private/groups.
Elenco dei gruppi
Sezione intitolata “Elenco dei gruppi”curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Richiede org.read_members permesso.
Crea un gruppo
Sezione intitolata “Crea un gruppo”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" }'Richiede org.update_user_roles permesso (Super Amministratore o Amministratore).
Aggiorna un gruppo
Finestra del terminalecurl -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" }'Sezione intitolata “Elimina un gruppo”
o plugin Appflowcurl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"La cancellazione di un gruppo elimina anche tutti i relativi vincoli di ruolo. I membri non vengono eliminati dall'organizzazione.
Elenco membri del gruppo
Sezione intitolata “Elenco membri del gruppo”curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Aggiungi un membro a un gruppo
Sezione intitolata “Aggiungi un membro a un gruppo”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'utente deve già essere un membro dell'organizzazione. Aggiungere un membro esistente è un'operazione senza effetti.
Rimuovere un membro da un gruppo
Sezione intitolata “Rimuovere un membro da un gruppo”curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"Assegnazione di ruoli tramite API
Sezione intitolata “Assegnazione di ruoli tramite API”Elenco membri
Sezione intitolata “Elenco membri”curl -X GET "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>" }'Risposta:
[ { "uid": "user-uuid", "email": "alice@example.com", "image_url": "https://...", "role": "org_admin", "is_tmp": false }]Invita un membro
Sezione intitolata “Invita un membro”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" }'Valori accettati per invite_type:
| Valore | Ruolo assegnato |
|---|---|
org_super_admin | Amministratore Superiore |
org_admin | Amministratore |
org_billing_admin | Responsabile della fatturazione |
org_member | Membro |
Rimuovi un membro
Sottosezione intitolata “Rimuovi un membro”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" }'Assegnazione di ruoli tramite CLI
Sottosezione intitolata “Assegnazione di ruoli tramite CLI”Elenco delle organizzazioni
Sottosezione intitolata “Elenco delle organizzazioni”npx @capgo/cli organization list --apikey <API_KEY>Elenco membri
Sottosezione intitolata “Elenco membri”npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>Ruoli personalizzati
Sottosezione intitolata “Ruoli personalizzati”I ruoli predefiniti coprono la struttura di squadra più comune. La creazione di ruoli personalizzati è prevista per il nostro roadmap — se questo è qualcosa che il tuo team necessita, ContattaciIl tuo caso d'uso aiuterà direttamente a priorizzare questa funzionalità.
Continua da Access Control Reference
Sezione intitolata “Continua da Access Control Reference”Se stai utilizzando Access Control Reference per pianificare dashboard e API operazioni, connettilo con API Overview per i dettagli di implementazione in API Overview Introduzione per i dettagli di implementazione in Introduzione API Keys per i dettagli di implementazione in API Chiavi, Dispositivi per i dettagli di implementazione in Dispositivi, e Pacchetti per i dettagli di implementazione in Pacchetti.