Saltare al contenuto

Access Control Reference

Capgo uses Include installazione, sincronizzazione e la guida markdown della fonte. To gestire cosa ogni membro del team può fare. I ruoli sono organizzati per ambito — dall'intera organizzazione fino a un singolo bundle.

Per una panoramica visiva della gestione dei membri nella dashboard, vedere Organizzazione.


Ogni ruolo appartiene a uno scope che determina a cosa si riferisce il permesso di accesso.

AmbitoSi applica aEsempio di utilizzo
OrganizzazioneTutta l'organizzazione e tutte le sue appIl tuo co-fondatore riceve Super Amministratore; il tuo contabile riceve Gestore della fatturazione
AppUna singola app e i suoi canaliUn contractor che lavora su una sola app riceve Sviluppatore di app
CanaleUna singola versione del canale all'interno di un'appUn ingegnere QA gestisce solo il staging canale
PacchettoUna versione del pacchetto singolaUn revisore ha bisogno di accesso in lettura a una versione di rilascio specifica

A un membro può essere assegnato 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 di organizzazione viene assegnato quando si invita un membro. Concedono l'accesso all'intera organizzazione.

RuoloNome internoDescrizione
Amministratore superioreorg_super_adminEquivalente di proprietario. Controllo completo, incluso la possibilità di eliminare l'org, gestire la fatturazione e trasferire gli app. Viene automaticamente assegnato al creatore dell'org.
__CAPGO_KEEP_0__org_adminAmministrazione completa — gestisci membri, app, canali. Non è possibile eliminare l'organizzazione, aggiornare la fatturazione, trasferire le app o promuovere gli utenti a Super Admin.
Gestore fatturazioneorg_billing_adminAccesso solo fatturazione: visualizza e aggiorna le informazioni di fatturazione, le fatture e i registri di audit di fatturazione. Nessun accesso alle app o ai membri.
Membroorg_memberAccesso di sola lettura all'organizzazione e a tutte le sue app.
AutorizzazioneDescrizioneSuper AdminAmministratoreGestore fatturazioneMembro
org.readVisualizza l'organizzazione
org.update_settingsModifica nome, logo e indirizzo email di gestione dell'organizzazione
org.deleteCancella permanentemente l'organizzazione
org.read_membersVisualizza lista 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 attuale
org.update_billingAggiorna metodo di pagamento e piano
org.read_invoicesVisualizza fatture
org.read_auditVisualizza log di attività dell'organizzazione
org.read_billing_auditVisualizza log di audit specifico per fatturazione

Limitati a un'applicazione singola. Utilizzali quando un membro del team dovrebbe lavorare solo su un'applicazione, non sull'intera organizzazione.

FunzioneNome 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.
Letture dell'appapp_readerSolo lettura — statistiche, bundle, canali, log, dispositivi.

Matrice di autorizzazioni dell'app

Matrice di autorizzazioni dell'applicazione
AutorizzazioneDescrizioneAmministratore dell'applicazioneSviluppatore dell'applicazioneCaricatore dell'applicazioneLetture dell'applicazione
app.readVisualizza dettagli dell'applicazione, statistiche e metadati
app.update_settingsModifica le impostazioni dell'applicazione
app.read_bundlesVisualizza l'elenco dei bundle caricati
app.upload_bundleCarica una nuova versione del bundle
app.create_channelCreazione di un nuovo canale
app.read_channelsVisualizza canali
app.read_logsVisualizza registrazioni di aggiornamento di consegna
app.manage_devicesAssegna, sovrascrivi o disconnetti dispositivi
app.read_devicesVisualizza lista dispositivi
app.build_nativeAvvia un build cloud nativo
app.read_auditVisualizza registro di attività a livello di app
app.update_user_rolesGestisci assegnazioni di ruoli a livello di app
bundle.deleteElimina un bundle

Utenti di un canale specifico. Utile per fornire accesso mirato a un canale di rilascio specifico.

RuoloNome internoDescrizione
Amministratore del canalechannel_adminPieno controllo di un canale: impostazioni, promuovere/riportare bundle, gestire dispositivi obbligatori.
Visualizzatore del canalechannel_readerLetto solo — bundle corrente, storia, dispositivi obbligatori, registro di audit.
AutorizzazioneDescrizioneAmministratore del canaleVisualizza il canale e il suo bundle corrente
channel.readModifica le impostazioni del canale (toggle di piattaforma, politica di aggiornamento…)
channel.update_settingsCancella il canale
channel.deleteVisualizza la cronologia delle assegnazioni del bundle
channel.read_historyImposta il bundle attivo sul canale
channel.promote_bundleRipristina un bundle precedente
channel.rollback_bundleForza dispositivi specifici a questo canale
channel.manage_forced_devicesVisualizza la lista dei dispositivi forzati
channel.read_forced_devicesVisualizza il registro di attività del canale
channel.read_auditRuoli del bundle

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

RuoloNome internoDescrizione
Amministratore del Pacchettobundle_adminLeggi, aggiorna i metadati e cancella un pacchetto specifico.
Visualizzatore di bundlebundle_readerAccesso di sola lettura a un bundle specifico.

Nell'area di controllo, l'accesso ai canali è determinato dal ruolo dell'applicazione dell'utente di default. Per un controllo più dettagliato, puoi sovrascrivere le autorizzazioni dei canali specifiche per utente o gruppo senza modificare il ruolo dell'applicazione.

Gli override sono configurati dalla scheda Accesso del pannello di controllo dell'applicazione cliccando sul pulsante delle autorizzazioni dei canali (icona scudo) accanto a un utente. Vedi Organizzazione — Override delle autorizzazioni dei canali per una guida visiva passo dopo passo.

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
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 (predefinito)
  • Consenti — concede esplicitamente, indipendentemente dal ruolo dell'applicazione
  • Neghi — nega esplicitamente, indipendentemente dal ruolo dell'applicazione

Ciò 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.


I ruoli formano 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 in pratica:

  • Un Amministratore all'org level può fare tutto ciò che può fare un App Admin può, su ogni app nell'organizzazione.
  • Un App Admin su un'app specifica può fare tutto ciò che un Channel Admin può, su ogni canale in quella app.
  • Un App Developer può fare tutto ciò che un App Uploader può, più ancora.

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


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 contenere legami di ruolo a qualsiasi ambito: organizzazione, app, canale o bundle. Ad esempio, un gruppo può essere assegnato il ruolo di sviluppatore dell'app 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 loro appartenenze ai gruppi vengono risolte in modo trasparente. Se qualsiasi dei loro gruppi concede la autorizzazione richiesta, l'accesso è consentito.
  • Un utente può appartenere a
  • i gruppi possono contenere legami di ruolo a __CAPGO_KEEP_0__ qualsiasi ambito __CAPGO_KEEP_1__ : organizzazione, app, canale o bundle. Ad esempio, un gruppo può essere assegnato il __CAPGO_KEEP_2__ ruolo di sviluppatore dell'app __CAPGO_KEEP_3__ su App A e il __CAPGO_KEEP_4__ ruolo di amministratore del canale __CAPGO_KEEP_5__ su il canale di App B. __CAPGO_KEEP_6__ Quando vengono valutate le autorizzazioni di un utente, tutte le loro appartenenze ai gruppi vengono risolte in modo trasparente. Se qualsiasi dei loro gruppi concede la autorizzazione richiesta, l'accesso è consentito. __CAPGO_KEEP_7__ Un utente può appartenere a __CAPGO_KEEP_8__ gruppi multipliLe autorizzazioni dei gruppi sono cumulative, ovvero le autorizzazioni dei gruppi e le autorizzazioni dei singoli utenti sono combinate.
  • Gli accessi basati su gruppo si applicano solo ai principali utente — le chiavi API non ereditano i ruoli dei gruppi.
Caso di studioSenza gruppiCon gruppi
5 ingegneri QA hanno bisogno di accesso sviluppatore a 3 app15 vincoli di ruolo individuali1 gruppo + 3 associazioni di ruolo
Qualcuno entra a far parte del team di QAAggiungi 3 associazioni di ruolo manualmenteAggiungili al gruppo
Qualcuno lascia il team di QARimuovi 3 associazioni di ruolo manualmenteRimuovili 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 la permessi.

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 la permessi (Super Amministratore o Amministratore).

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

Cancellando un gruppo vengono anche eliminate tutte le relative 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. L'aggiunta di 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"
}'

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

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

Se stai utilizzando Riferimento al Controllo degli Accessi per pianificare il dashboard e le API operazioni, connettilo con Panoramica di API per i dettagli di implementazione in Panoramica di API Introduzione per i dettagli di implementazione in Introduzione Chiavi di API per i dettagli di implementazione in Chiavi di API Dispositivi per i dettagli di implementazione in Dispositivi, e Pacchetti per i dettagli di implementazione in Pacchetti.