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.

Per una panoramica visiva della gestione dei membri nel pannello di controllo, vedi 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 appTuoi co-fondatori ottengono Super Amministratore; il tuo contabile ottiene Gestore fatturazione
AppUna singola app e i suoi canaliUn contrattore che lavora su un'applicazione ottiene lo status di App Developer
CanaleUn singolo canale all'interno di un'applicazioneUn ingegnere QA gestisce solo il staging canale
PaccoUna versione di pacchetto singolaUn revisore ha bisogno di 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.


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

RuoloNome internoDescrizione
Super Amministratoreorg_super_adminEquivalente di proprietario. Controllo completo, inclusa la possibilità di cancellare l'org, gestire la fatturazione e trasferire le app. Concesso automaticamente al creatore dell'org.
Amministratoreorg_adminAmministrazione completa — gestire membri, app, canali. Non è possibile cancellare l'org, aggiornare la fatturazione, trasferire le 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 alle app o ai membri.
Utenteorg_memberAccesso di sola lettura all'org e a tutti i suoi app.
AutorizzazioneDescrizioneAmministratore SuperioreAmministratoreResponsabile Gestione FattureMembro
org.readVisualizza l'org
org.update_settingsModifica nome, logo, email di gestione dell'org
org.deleteCancella permanentemente l'org
org.read_membersVisualizza la lista dei membri
org.invite_userInvita nuovi membri
org.update_user_rolesCambia i ruoli dei membri (l'amministratore non può promuovere a Super Amministratore — bloccato dalla gerarchia dei ruoli)
org.read_billingVisualizza le informazioni di fatturazione e il piano attuale
org.update_billingAggiorna il metodo di pagamento e il piano
org.read_invoicesVisualizza le fatture
org.read_auditVisualizza il registro di attività dell'organizzazione
org.read_billing_auditVisualizza il registro di audit specifico per la fatturazione

Limitato a un'app sola. Utilizzare questi quando un membro della squadra dovrebbe lavorare solo su un'app, non sull'intera organizzazione.

RuoloNome internoDescrizione
Amministratore dell'appapp_adminControllo totale di un'applicazione — canali, dispositivi, ruoli utente per l'applicazione. Non è possibile cancellare o trasferire l'app (queste sono operazioni a livello di organizzazione).
Applicazione sviluppatriceapp_developerCarica bundle, gestisci dispositivi, attiva costruzioni native, aggiorna impostazioni dei canali. Nessuna cancellazione, nessuna modifica delle impostazioni dell'app, nessuna creazione di canali.
Caricatore di applicazioniapp_uploaderAccesso di sola lettura + caricamento di nuove versioni dei bundle.
Letture solo — statistiche, bundle, canali, log, dispositivi.app_readerAnteprima dell'applicazione
Ciclo di vita della preview dell'organizzazione e dell'applicazione: caricare un bundle e creare un canale di anteprima. La creazione di quel canale concede automaticamente i diritti di ciclo di vita solo per esso.app_previewMatrice dei permessi dell'applicazione

Sottosezione intitolata “Matrice dei permessi dell'applicazione”

Permesso
App permission matrixDescrizioneAmministratore dell'appDevelopatore dell'appCaricatore dell'appLettore dell'app
app.readVisualizza dettagli, statistiche e metadati dell'app
app.update_settingsModifica le impostazioni dell'app
app.read_bundlesVisualizza la lista dei bundle caricati
app.upload_bundleCarica una nuova versione del bundle
app.create_channelCreare un nuovo canale
app.read_channelsVisualizza i canali
app.read_logsVisualizza i registri di consegna degli aggiornamenti
app.manage_devicesAssegna, sovrappone o disconnetti dispositivi
app.read_devicesVisualizza la lista dei dispositivi
app.build_nativeAvvia una costruzione cloud nativa
app.read_auditVisualizza il registro di attività a livello di app
app.update_user_rolesGestisci assegnazioni di ruoli a livello di app
bundle.deleteElimina un bundle

Impostazione di permessi di anteprima dell'applicazione

Sezione intitolata “Impostazione di permessi di anteprima dell'applicazione”

Usa Anteprima dell'applicazione (app_preview) per una chiave di CI legata all'organizzazione e all'applicazione che gestisce il ciclo di vita dell'anteprima di una PR senza accesso ampio all'applicazione o all'organizzazione.

Il app_preview la condivisione concede solo questi permessi dell'applicazione:

PermessoConsente
app.readLeggi l'app selezionata
app.read_bundlesLeggi i bundle caricati
app.upload_bundleCarica un bundle
app.create_channelCrea un canale

Quando una chiave App Preview crea un canale, Capgo dà automaticamente a quella chiave una chiave figlia channel_preview per il nuovo canale solo:

AutorizzazioneConsenti
channel.readLeggi il canale creato dalla chiave
channel.promote_bundleImposta il bundle caricato dalla chiave su quel canale
channel.deleteElimina quel canale

Poiché app_preview conserva app.readla chiave può enumerare i metadati del canale selezionato nell'app. L'assegnazione figlia automatica è un Gestione Limite: non concede mutazioni di ciclo di vita per un canale 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 che necessita, promuovere il proprio bundle e cancellare atomicamente quel canale e bundle con channel delete --delete-bundlenon include

gestione del dispositivo o del ruolo app.update_settingsgestione del dispositivo forzata o generica channel.update_settings, channel.rollback_bundleAttento bundle.delete.


Sottosezione intitolata “Ruoli dei canali”

Channel roles

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

RuoloNome internoDescrizione
Canale Amministratorechannel_adminControllo completo di un canale: impostazioni, promuovi/riporta bundle, gestisci dispositivi obbligatori.
Canale Visualizzatorechannel_readerSolo lettura — bundle corrente, storia, dispositivi obbligatori, registro di audit.
Canale Anteprimachannel_previewAssegnato automaticamente al chiave anteprima dell'applicazione che ha creato il canale: lettura, promuovi il proprio bundle e cancella quel canale.
PermessoDescrizioneAmministratore del canaleVisualizzatore del canaleAnteprima del canale
channel.readVisualizza il canale e il suo bundle corrente
channel.update_settingsModifica le impostazioni del canale (toggle di piattaforma, politica di aggiornamento…)
channel.deleteCancella il canale
channel.read_historyVisualizza la cronologia 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

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

RuoloNome internoDescrizione
Amministratore del pacchettobundle_adminLeggi, aggiorna i metadati e cancella un pacchetto specifico.
Visualizzatore del pacchettobundle_readerAccesso di sola lettura a una specifica raccolta.

Nell'area di controllo, 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.

Gli override sono configurati dalla scheda Accesso del tuo app, cliccando sul pulsante delle autorizzazioni del canale (icona scudo) accanto a un utente. Vedi Organizzazione — Override delle autorizzazioni del canale 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 canaleInerente dal ruolo dell'applicazione

Ogni autorizzazione può essere impostata su:

  • Predefinito — ereditare dal ruolo dell'applicazione (il valore 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 dell'applicazione la possibilità di associare pacchetti sul staging canale senza promuoverli a sviluppatore dell'applicazione.


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 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)

può fare tutto ciò che può fare un

  • può fare tutto ciò che può fare un può fare tutto ciò che può fare un può fare tutto ciò che può fare un può fare tutto ciò che può fare un App Admin 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 , più ancora.

La gerarchia fluisce solo in questo modo. in discesa — un channel_admin mai guadagna 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 un'organizzazione Non può coprire più organizzazioni.
  • I gruppi possono contenere vincoli di ruolo a qualsiasi ambito: organizzazione, app, canale o pacchetto. Ad esempio, un gruppo può essere assegnato al Ruolo sviluppatore dell'app su App A e al Ruolo 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 uno dei suoi gruppi concede la autorizzazione richiesta, l'accesso è consentito.
  • Un utente può appartenere a
  • gruppi multiplo __CAPGO_KEEP_0__e le autorizzazioni dei permessi di tutti i gruppi sono additive.
  • Il permessi dei gruppi si applicano solo ai principali degli utenti — le chiavi API non ereditano i ruoli dei gruppi.
Caso di studioSenza gruppiCon gruppi
5 ingegneri QA hanno bisogno di accesso allo sviluppatore per 3 app15 vincoli di ruolo individuali1 gruppo + 3 vincoli di ruolo
Qualcuno entra a far parte del team di QAAggiungi 3 vincoli di ruolo manualmenteAggiungili al gruppo
Qualcuno lascia il team di QARimuovi 3 vincoli 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

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"
}'

Copia nel portapenne org.update_user_roles Richiedeil permesso ( Super Amministratore o il permesso di 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>"

L'eliminazione di un gruppo elimina anche tutte le relative associazioni 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>"

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 è nel nostro piano di lavoro — se questo è qualcosa che il tuo team necessita, contattaci. Il tuo caso d'uso aiuterà direttamente a priorizzare questa funzionalità.

Se stai utilizzando Access Control Reference per pianificare il dashboard e le API operazioni, 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.