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 pacchetto.

For a visual walkthrough of managing members in the dashboard, see Organizzazione.


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

ScopeSi applica aEsempio di utilizzo
OrganizzazioneTutta l'org e tutti i suoi appTuoi co-fondatori ottengono Super Admin; il tuo contabile ottiene Billing Manager
AppUna sola 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
PacchettoUna versione del pacchettoUn revisore ha bisogno di accesso in 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.


Questi ruoli vengono assegnati quando si invita un membro. Concedono l'accesso all'intera organizzazione.

RuoloNome internoDescrizione
Super Amministratoreorg_super_adminEquivalente di proprietario. Controllo completo, compreso la cancellazione dell'org, la gestione della fatturazione e la trasferimento degli app. Concesso automaticamente al creatore dell'org.
Amministratoreorg_adminAmministrazione completa — gestire membri, app, canali. Non è possibile cancellare l'org, aggiornare la fatturazione, trasferire gli app o promuovere gli utenti a Super Amministratore.
Responsabile della Fatturazioneorg_billing_adminAccesso solo alla fatturazione: visualizzare e aggiornare le informazioni sulla fatturazione, le fatture e i registri di audit della fatturazione. Nessun accesso agli app o 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, 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 singolo app. Utilizzare questi quando un membro del team dovrebbe lavorare solo su un'app, non sull'intera organizzazione.

RuoloNome internoDescrizione
Amministratore dell'appapp_adminControllo completo di un'app — canali, dispositivi, ruoli utente per l'app. Non è possibile cancellare o trasferire l'app (queste sono operazioni a livello di organizzazione).
Sviluppatore dell'appapp_developerCarica bundle, gestisci dispositivi, attiva costruzioni native, aggiorna impostazioni dei canali. Nessuna cancellazione, nessuna modifica delle impostazioni dell'app, nessuna creazione di canali.
Caricatore dell'appapp_uploaderAccesso di sola lettura + caricamento di nuove versioni dei bundle.
Lettore dell'appapp_readerSolo lettura — statistiche, bundle, canali, log, dispositivi.
PermessoDescrizioneAmministratore dell'appSviluppatore dell'appCaricatore dell'appLettore 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 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.readView the channel and its current bundle
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 bundle
channel.promote_bundleImposta il bundle attivo sul canale
channel.rollback_bundleRipristina un bundle precedente
channel.manage_forced_devicesForza dispositivi specifici a questo canale
channel.read_forced_devicesVisualizza l'elenco dei dispositivi forzati
channel.read_auditVisualizza il registro di attività del canale

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

FunzioneNome internoDescrizione
Amministratore di bundlebundle_adminLeggi, aggiorna i metadati e cancella un bundle specifico.
Visualizzatore di bundlebundle_readerAccesso in 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 ai canali è determinato dal ruolo dell'applicazione dell'utente di default. Per un controllo più dettagliato, puoi sovraimporre autorizzazioni di canale specifiche per utente o gruppo senza modificare il loro ruolo dell'applicazione.

Il sovrapposizionamento è configurato dalla scheda Accesso del tuo app, cliccando sul pulsante delle autorizzazioni del canale (icona scudo) accanto a un utente. Vedi Organizzazione — Sovrapposizioni delle autorizzazioni dei canali per una guida visiva.

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

Ogni autorizzazione può essere impostata su:

  • Predefinito — ereditare dal ruolo dell'applicazione (il predefinito)
  • Consenti — concedere esplicitamente, indipendentemente dal ruolo dell'applicazione
  • Nega — bloccare 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”

Il ruolo dei ruoli forma una gerarchia. Un ruolo padre

eredita tutti i permessi __CAPGO_KEEP_0__ 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 all'org level può fare tutto ciò che un App Amministratore può, su ogni app nell'org.
  • Un Amministratore dell'app su un'app specifica può fare tutto ciò che può fare un Amministratore del canale su ogni canale in quell'app.
  • Un Sviluppatore dell'app può fare tutto ciò che può fare un Caricatore dell'app può fare, più ancora.

L'organigramma fluisce solo in basso — un channel_admin non acquisisce mai i permessi 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ù di un'org.
  • I gruppi possono avere 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 accessi basati sui gruppi si applicano solo a
  • __CAPGO_KEEP_0__ utenti principali — API le chiavi non ereditano i ruoli di gruppo.
ScenarioSenza gruppiCon gruppi
5 ingegneri QA hanno bisogno di accesso sviluppatore a 3 app15 legami di ruolo individuali1 gruppo + 3 legami di ruolo
Qualcuno entra a far parte del team QAAggiungere 3 legami 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.

Fermata di 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 permesso (Amministratore superiore 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 tutte le sue associazioni di ruolo. I membri 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>"

Finestra del terminale
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
}
]
Finestra del terminale
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"
}'

Fermata di sistema
npx @capgo/cli organization list --apikey <API_KEY>
Fermata di sistema
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

Il ruoli integrati coprono la struttura di squadra più comune. La creazione di ruoli personalizzati è nel nostro piano di lavoro — se il tuo team ha bisogno di questo, 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.