Saltare al contenuto

Riferimento al Controllo degli Accessi

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.


Ogni ruolo appartiene a uno scopo che determina a cosa si riferisce l'accesso.

Scopocontexto: 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
OrganizzazioneTutta l'organizzazione e tutte le sue appTu dai ruolo di Super Amministratore al tuo co-fondatore; il tuo contabile riceve il ruolo di Gestore delle fatture
AppUna singola app e i suoi canaliUn contractor che lavora su una app riceve il ruolo di Sviluppatore di app
CanaleUn singolo canale all'interno di un'appUn ingegnere QA gestisce solo il staging canale
PacchettoAmbito di versione singoloUn 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.


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

RuoloNome internoDescrizione
Amministratore Superioreorg_super_adminParagono 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.
Amministratoreorg_adminAmministrazione completa — gestire membri, app, canali. Non è possibile eliminare l'organizzazione, 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_memberMatrice di permessi dell'organizzazione

Permessi dell'organizzazione

Descrizione dei permessi
Super AmministratoreMatrice dei permessi dell'organizzazioneDescrizione dei permessiAmministratoreGestore 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 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 attuale
org.update_billingAggiorna metodo di pagamento e piano
org.read_invoicesVisualizza fatture
org.read_auditVisualizza il registro delle attività dell'organizzazione
org.read_billing_auditVisualizza 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.

RuoloNome internoDescrizione
Amministratore dell'appapp_adminPieno 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'appapp_developerCarica 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'appapp_uploaderAccesso di sola lettura + caricamento di nuove versioni dei bundle.
Lettrice dell'appapp_readerLetture solo — statistiche, pacchetti, canali, log, dispositivi.
Anteprima dell'appapp_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.
PermessoDescrizioneAmministratore dell'appSviluppatore dell'appCaricatore dell'appLetture dell'app
app.readVisualizza i dettagli dell'app, le statistiche e i metadati
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 le assegnazioni di ruoli a livello di app
bundle.deleteCancella un bundle

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:

PermessoConsente
app.readLeggi l'app selezionata
app.read_bundlesLeggi i bundle caricati
app.upload_bundleCarica un bundle
app.create_channelCreare 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.readLeggi il canale creato dalla chiave
channel.promote_bundleImposta il bundle caricato dalla chiave stessa su quel canale
channel.deleteCancella 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.


Attenzione

RuoloNome internoDescrizione
Amministratore del canalechannel_adminControllo completo di un canale: impostazioni, promuovi/riporta bundle, gestisci dispositivi obbligati.
Visualizzatore del canalechannel_readerLetto solo — bundle corrente, storia, dispositivi obbligati, registro degli accessi.
Anteprima del canalechannel_previewAssegnato automaticamente alla chiave App Preview 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_bundleRitorna a un bundle precedente
channel.manage_forced_devicesForza dispositivi specifici a questo canale
channel.read_forced_devicesElenca i dispositivi forzati
channel.read_auditElenca l'attività del canale

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

RuoloNome internoDescrizione
Amministratore del pacchettobundle_adminLeggi, aggiorna i metadati e cancella un pacchetto specifico.
Visualizzatore del pacchettobundle_readerAccesso 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.

AutorizzazioneDescrizioneComportamento predefinito
LeggiVisualizza il canale e il suo bundle correnteInherited from app role
StoriaVisualizza la storia dell'assegnazione del bundleInherited from app role
Associare bundleImposta o cambia il bundle attivo sul canaleInherited 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.


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.

  • 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 staging canale 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.
ScenarioSenza 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 manualmenteAggiungerli al gruppo
Qualcuno lascia il team QARimuovere 3 vincoli di ruolo manualmenteRimuoverli 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 permesso (Super Amministratore o Amministratore).

Aggiorna un gruppo

Finestra del terminale
Copia negli appunti
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"
}'

Sezione intitolata “Elimina un gruppo”

o plugin Appflow
Finestra del terminale
curl -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.

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 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
}
]
Fermata di 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_adminAmministratore Superiore
org_adminAmministratore
org_billing_adminResponsabile della fatturazione
org_memberMembro
Fermata 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 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à.

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.