Saltare al contenuto

Access Control Reference

Capgo utilizza il controllo degli accessi basato sul ruolo (RBAC) per gestire cosa può fare ogni membro del team. I ruoli sono organizzati per ambito – dall'intera organizzazione fino a un singolo bundle.

Per una guida visiva alla gestione dei membri nel dashboard, vedere Organizzazione.


Ogni ruolo appartiene a uno scope che determina quali risorse concede l'accesso.

ScopeSi applica aEsempio di utilizzo
OrganizzazioneL'intera organizzazione e tutti i suoi appIl tuo co-fondatore ottiene Super Admin; il tuo contabile ottiene Billing Manager
AppUna singola app e i suoi canaliUn contractor che lavora su un'app riceve il ruolo di App Developer
CanaleUn singolo canale all'interno di un'appUn ingegnere QA gestisce solo il staging canale
BundleUna versione del bundleUn revisore ha accesso di sola lettura a una versione di rilascio specifica

Un membro può avere un ruolo per ambito di destinazione — ad esempio, un ruolo di organizzazione, un ruolo su App A e un ruolo diverso su App B.


Il ruolo viene assegnato quando si invita un membro. Concede l'accesso a tutta l'organizzazione.

RuoloNome internoDescrizione
Super Amministratoreorg_super_adminUguale al proprietario. Controllo totale, incluso la possibilità di eliminare l'org, gestire la fatturazione e trasferire le app. Viene automaticamente assegnato al creatore dell'org.
Amministratoreorg_adminAmministrazione completa — gestire membri, app, canali. Non è possibile eliminare l'org, aggiornare la fatturazione, trasferire le app o promuovere gli utenti a Super Amministratore.
Gestore Fatturazioneorg_billing_adminAccesso 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.
Membroorg_memberAccesso di sola lettura all'org e a tutti i suoi app.
AutorizzazioneDescrizioneSuper AmministratoreAmministratoreGestore fatturazioneMembro
org.readVisualizza l'organizzazione
org.update_settingsModifica nome, logo, indirizzo email di gestione dell'org
org.deleteElimina permanentemente l'organizzazione
org.read_membersVisualizza la lista dei membri
org.invite_userInvita nuovi membri
org.update_user_rolesCambia ruoli dei membri (l'amministratore non può promuovere a Super Amministratore — bloccato dalla gerarchia dei ruoli)
org.read_billingVisualizza informazioni di fatturazione e piano corrente
org.update_billingAggiorna metodo di pagamento e piano
org.read_invoicesVisualizza fatture
org.read_auditVisualizza registro di attività dell'organizzazione
org.read_billing_auditVisualizza registro di audit specifico per fatturazione

Limitato a un'applicazione singola. Utilizzare questi quando un membro del team dovrebbe lavorare solo su un'app, non sull'intera organizzazione.

RuoloNome internoDescrizione
Amministratore Appapp_adminControllo completo di un'applicazione — canali, dispositivi, ruoli utente per l'applicazione. Non è possibile cancellare o trasferire l'applicazione (queste sono operazioni a livello di organizzazione).
Sviluppatore Appapp_developerCarica bundle, gestisci dispositivi, attiva costruzioni native, aggiorna impostazioni del canale. Nessuna cancellazione, nessuna modifica delle impostazioni dell'app, nessuna creazione di canali.
Caricatore Appapp_uploaderAccesso di sola lettura + caricamento di nuove versioni del bundle.
Letture Appapp_readerSolo lettura — statistiche, bundle, canali, log, dispositivi.
AutorizzazioneDescrizioneAmministratore dell'appSviluppatore dell'appCaricatore dell'appLettrice dell'app
app.readVisualizza dettagli, statistiche e metadati dell'app
app.update_settingsModifica le impostazioni dell'app
app.read_bundlesVisualizza l'elenco dei bundle caricati
app.upload_bundleCarica una nuova versione del bundle
app.create_channelCrea un nuovo canale
app.read_channelsVisualizza i canali
app.read_logsVisualizza i registri di consegna degli aggiornamenti
app.manage_devicesAssegna, sovrascrivi o disconnetti dispositivi
app.read_devicesVisualizza l'elenco dei dispositivi
app.build_nativeAvvia un build cloud nativo
app.read_auditVisualizza il registro di attività dell'app
app.update_user_rolesGestisci assegnazioni di ruoli a livello di app
bundle.deleteElimina un bundle

Limitato a un singolo canale. Utile per concedere accesso mirato a un canale di rilascio specifico.

RuoloNome internoDescrizione
Amministratore del canalechannel_adminTutti i controlli su un canale: impostazioni, promuovi/riporta bundle, gestisci dispositivi obbligatori.
Visualizza il canalechannel_readerLetture solo — bundle corrente, storia, dispositivi obbligatori, registro di audit.
AutorizzazioneDescrizioneAmministratore del canaleVisualizza il canale e il suo bundle corrente
channel.readVisualizza il canale e il suo bundle corrente
channel.update_settingsModifica le impostazioni del canale (tasti di piattaforma, politica di aggiornamento…)
channel.deleteCancella il canale
channel.read_historyVisualizza la storia delle assegnazioni del pacchetto
channel.promote_bundleImposta il pacchetto attivo sul canale
channel.rollback_bundleRitorna a un pacchetto precedente
channel.manage_forced_devicesForza dispositivi specifici a questo canale
channel.read_forced_devicesVisualizza la lista dei dispositivi forzati
channel.read_auditVisualizza il registro di attività del canale

Limitato a una sola versione del pacchetto. Raramente necessario — la maggior parte delle squadre utilizza invece i ruoli di app.

FunzioneNome internoDescrizione
Amministratore di bundlebundle_adminLeggi, aggiorna i metadati e cancella un bundle specifico.
Visualizzatore di bundlebundle_readerAccesso di sola lettura a un bundle specifico.

Override delle autorizzazioni del canale (Pannello di controllo)

Sezione intitolata “Sovrapposizioni di autorizzazioni del canale (Dashboard)”

In dashboard, l'accesso al canale è determinato dal ruolo dell'applicazione dell'utente di default. Per un controllo più dettagliato, puoi sovraimporre autorizzazioni del canale specifiche per utente o gruppo senza modificare il loro ruolo dell'applicazione.

Il sovrapporsi sono configurati dalla scheda Accesso del'applicazione cliccando sul pulsante delle autorizzazioni del canale (icona scudo) accanto a un utente. Vedi Organizzazione — Sovrapposizioni delle autorizzazioni del canale per una guida visiva.

AutonomiaDescrizioneComportamento predefinito
LeggiVisualizza il canale e il suo bundle correnteEreditato dal ruolo dell'applicazione
StoriaVisualizza la storia delle assegnazioni del bundleEreditato dal ruolo dell'applicazione
Assegna bundleImposta o modifica il bundle attivo sul canaleEreditato dal ruolo dell'applicazione

Ogni autorizzazione può essere impostata su:

  • Predefinito — eredita dal ruolo dell'applicazione (il predefinito)
  • Consenti — concede esplicitamente, indipendentemente dal ruolo dell'applicazione
  • Nega — blocca esplicitamente, indipendentemente dal ruolo dell'applicazione

Questo ti consente, ad esempio, di dare a un lettore di App la possibilità di associare bundle sul canale senza promuoverli a sviluppatore di App. staging Gerarchia dei ruoli


Sezione intitolata “Gerarchia dei ruoli”

I ruoli formano una gerarchia. Un ruolo padre

eredita tutti i permessi This lets you, for example, give an App Reader the ability to associate bundles on the channel without promoting them to App Developer. di tutte le sue figlie. Ciò significa che un org_admin può fare tutto ciò che un app_admin può, il che a sua volta può fare tutto ciò che un channel_admin può, e così via.

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 in pratica:

  • Un Amministratore a livello di organizzazione può fare tutto ciò che un Amministratore dell'app può, su ogni app nell'organizzazione.
  • Un App Admin può fare tutto ciò che può fare un Channel Admin su ogni canale di quell'app.
  • Un App Developer può fare tutto ciò che può fare un App Uploader e ancora di più.

La gerarchia fluisce solo in basso — un channel_admin non acquisisce mai le autorizzazioni di livello organizzativo, anche se detiene anche un ruolo di livello applicativo.


Invece di assegnare ruoli a ogni utente individualmente, puoi creare gruppi e assegnare ruoli al gruppo. Ogni membro del gruppo eredita automaticamente quei ruoli.

  • Un gruppo appartiene a una sola organizzazione — non può coprire più organizzazioni.
  • I gruppi possono tenere vincoli di ruolo qualsiasi ambito: organizzazione, app, canale o bundle. Ad esempio, un gruppo può essere assegnato il ruolo di App Sviluppatore su App A e il ruolo di Amministratore del Canale su il canale di App B. staging Quando vengono valutate le autorizzazioni di un utente, tutte le sue appartenenze ai gruppi vengono risolte in modo trasparente. Se qualsiasi dei suoi gruppi concede la autorizzazione richiesta, l'accesso è consentito.
  • Un utente può appartenere a
  • gruppi diversi , e le autorizzazioni da tutti i gruppi sono additive.Gli autorizzazioni basate sui gruppi si applicano solo a
  • __CAPGO_KEEP_0__ principi di utente — API le chiavi non ereditano i ruoli di gruppo.
Caso di utilizzoSenza gruppiCon gruppi
5 ingegneri QA hanno bisogno di accesso al ruolo di sviluppatore per 3 app15 vincoli di ruolo individuali1 gruppo + 3 vincoli di ruolo
Qualcuno entra a far parte del team QAAggiungere 3 vincoli di ruolo manualmenteAggiungili al gruppo
Qualcuno lascia l'equipe di QAElimina 3 legami di ruolo manualmenteEliminali dal gruppo

Tutti gli endpoint dei gruppi richiedono l'autenticazione e sono serviti sotto /private/groups.

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

Richiede org.read_members permesso.

Finestra del terminale
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 il permesso (Super Amministratore o Amministratore).

Finestra del terminale
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"
}'
Finestra del terminale
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \
-H "authorization: <API_KEY>"

Eliminare un gruppo elimina anche tutti i relativi vincoli di ruolo. Gli utenti non vengono eliminati dall'organizzazione.

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

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

Fermata di sistema
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
}
]
Fermata di sistema
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:

ValoreRuolo assegnato
org_super_adminSuper Amministratore
org_adminAmministratore
org_billing_adminGestore fatturazione
org_memberMembro
Finestra del terminale
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"
}'

Finestra del terminale
npx @capgo/cli organization list --apikey <API_KEY>
Finestra del terminale
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

Il ruoli predefiniti coprono la maggior parte delle strutture di squadra. La creazione di ruoli personalizzati è nella nostra roadmap — se il tuo team ne ha bisogno, contattaci. Il tuo caso d'uso aiuterà direttamente a priorizzare questa funzionalità.

Se stai utilizzando Access Control Reference per pianificare le operazioni di dashboard e API , connettilo con API Overview per i dettagli di implementazione in API Overview, Introduzione per i dettagli di implementazione in Introduzione, API Chiavi per i dettagli di implementazione in API Chiavi, Dispositivi per i dettagli di implementazione in Dispositivi, e Bundle per i dettagli di implementazione in Bundle.