Saltare al contenuto

Riferimento al Controllo degli Accessi

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 guida visiva per la gestione dei membri nel pannello di controllo, vedi Organizzazione.


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

Ambitocontext: Pagina/Area: Pagina di 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 della politica di supporto).Esempio di utilizzo
OrganizzazioneL'intera organizzazione e tutti i suoi appIl tuo co-fondatore ottiene Super Amministratore; il tuo contabile ottiene Gestore della fatturazione
AppUna singola app e i suoi canaliUn consulente che lavora su un'app ottiene Sviluppatore di app
CanaleUn singolo canale all'interno di un'appUn ingegnere QA gestisce solo il staging canale
PacchettoAmbito di versione singolaUn 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 equivalente. Controllo totale, compreso la possibilità di eliminare l'organizzazione, gestire la fatturazione e trasferire le app. 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 autorizzazioni dell'organizzazione

Autorizzazione

Descrizione
Super AmministratoreTabella delle autorizzazioni dell'organizzazioneAutorizzazioneAmministratoreGestore fatturazioneMembro
org.readVisualizza l'organizzazione
org.update_settingsModifica nome, logo e indirizzo email di gestione dell'organizzazione
org.deleteElimina permanentemente l'organizzazione
org.read_membersVisualizza la lista dei membri
org.invite_userInvita nuovi membri
org.update_user_rolesCambia ruolo 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, in tutti gli app e canali.

Sezione intitolata “Ruoli dell'app”

Limitata 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_adminControllo completo 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.
Lettore dell'appapp_readerLetture solo per statistiche, bundle, canali, log e dispositivi.
Vista anteprima dell'appapp_previewCiclo di vita della CI legato all'organizzazione e all'app: 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.

Matrice di permessi dell'app

Matrice di permessi dell'app
PermessoDescrizioneAmministratore dell'appSviluppatore dell'appCaricatore dell'appLettore 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 dell'app
bundle.deleteElimina 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.

Il 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_channelCrea un canale

Quando una chiave di anteprima dell'app crea un canale, Capgo dà automaticamente a quella chiave una sottoscrizione figlia per il nuovo canale solo: channel_preview Permesso

ConsenteprotectedTokens
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. L'assegnazione 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 che ha bisogno, promuovere il proprio bundle e cancellare atomicamente quel canale e bundle con channel delete --delete-bundlenon può fare quelle cose a un canale predefinito/main esistente, a un canale di un'altra chiave di anteprima o al bundle di un'altra chiave.

Non include app.update_settings, la gestione del dispositivo o del ruolo, channel.update_settings, channel.rollback_bundlegestione dispositivi forzata, o generici bundle.delete.


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

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 di anteprima dell'app che ha creato il canale: lettura, promuovi il proprio bundle e cancella quel canale.

Matrice di autorizzazioni del canale

Matrice di autorizzazioni del canale
AutorizzazioneDescrizioneAmministratore 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.deleteElimina il canale
channel.read_historyVisualizza la cronologia delle assegnazioni del bundle
channel.promote_bundleImposta il bundle attivo sul canale
channel.rollback_bundleRitorna indietro a 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 sola versione di bundle. Raramente necessario — la maggior parte delle squadre utilizza invece ruoli a livello di app.

FunzioneNome internoDescrizione
Amministratore del pacchettobundle_adminLeggi, aggiorna i metadati e cancella un pacchetto specifico.
Visualizza pacchettobundle_readerOverride delle autorizzazioni del canale (Pannello di controllo)

sovrascrivere le autorizzazioni del canale specifiche per utente o gruppo senza modificare il ruolo dell'applicazione. Override delle autorizzazioni del canale (Dashboard)

Le sovrascritture sono configurate dall'applicazione nel suo Accesso tab cliccando sul pulsante delle autorizzazioni del canale (icona della protezione) accanto a un utente. Vedi Organizzazione — Sovrascrittura delle autorizzazioni del canale Permessi sovrascrivibili

Sezione intitolata “Permessi sovrascrivibili”

Permesso
DescrizioneComportamento predefinitoLeggi
Visualizza il canale e il suo bundle correntedal canale e il suo bundle correnteEreditato dal ruolo dell'applicazione
StoriaVisualizza la cronologia 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 — eredita dal ruolo dell'applicazione (predefinito)
  • Consenti — concede esplicitamente, indipendentemente dal ruolo dell'applicazione
  • Negare — nega esplicitamente, indipendentemente dal ruolo dell'app

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

  • Un Amministratore all'organo di livello 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 può fare, più cose.

La gerarchia fluisce solo in basso — un channel_admin non acquisisce mai le autorizzazioni 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 dello sviluppatore dell'applicazione ruolo Amministratore del canale ruolo sul staging canale di App B.
  • Quando vengono valutate le autorizzazioni di un utente, tutti i suoi appartenenti a un gruppo 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 da 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 context:HTML testo frammento da una stringa UI Capgo più lunga (chiave genitrice `alternatives_cta_questions`). Pagina/area: Pagina di confronto delle alternative di aggiornamento in tempo reale di Capacitor. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina alternatives.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `alternatives_cta_questions` (Domande per l'azione di alternativa). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `appflow_cta_questions`). Pagina/area: Copia di marketing per il confronto e la migrazione di Appflow. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina ionic-appflow.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `appflow_cta_questions` (Domande per l'azione di Appflow). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `capwesome_cta_questions`). Pagina/area: Pagina di confronto di Capawesome. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina capwesome.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `capwesome_cta_questions` (Domande per l'azione di Capawesome). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `consulting_faq_subtitle`). Pagina/area: Pagina dei servizi di consulenza. Ruolo: Sottotitolo o didascalia di sezione. Visualizzato in: pagina consulting.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `consulting_faq_subtitle` (Sottotitolo FAQ dei servizi di consulenza). | Pagina/area: Copia di marketing per il confronto e la migrazione di Appflow. Ruolo: Etichetta UI breve o elemento di navigazione. Visualizzato in: pagina ionic-appflow.astro, pagina ionic-enterprise-plugins.astro, pagina solutions/ionic-enterprise-plugins.astro. Chiave del messaggio `appflow_plugins_or` (Appflow Plugins o).).

Amministratore

Aggiorna un gruppo
Sottotitolo della sezione “Aggiorna un gruppo”
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"
}'

Copia nel portale delle applicazioni

Cancella un gruppo
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. 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_adminAmministratore Superiore
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 struttura di squadra più comune. La creazione di ruoli personalizzati è nel nostro piano di lavoro — se questo è qualcosa che il tuo team ha bisogno di ContattaciIl tuo caso d'uso ci aiuterà a priorizzare questa funzionalità.

Se stai utilizzando Access Control Reference per pianificare dashboard e operazioni di API, 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 Bundle per i dettagli di implementazione in Bundle.