Questo documento descrive le opzioni di controllo dell'accesso disponibili in Pub/Sub.
Panoramica
Pub/Sub utilizza Identity and Access Management (IAM) per il controllo degli accessi.
IAM ti consente di concedere ruoli specifici a utenti, gruppi e service account, assegnando loro le autorizzazioni necessarie per svolgere le loro attività. Puoi concedere questi ruoli IAM utilizzando la consoleGoogle Cloud o l'API IAM.
In Pub/Sub, controllo dell'accesso può essere configurato a livello di progetto e di singola risorsa. Ecco alcuni esempi di utilizzo controllo dell'accesso di Pub/Sub:
Concedi l'accesso in base alle singole risorse, anziché per l'intero progetto cloud.
Concedi l'accesso con funzionalità limitate, ad esempio solo per pubblicare messaggi in un argomento o solo per utilizzare i messaggi di una sottoscrizione, ma non per eliminare l'argomento o la sottoscrizione.
Concedi l'accesso a tutte le risorse Pub/Sub all'interno di un progetto a un gruppo di sviluppatori.
Se hai accesso di sola visualizzazione a una singola risorsa, ad esempio un argomento o una sottoscrizione, non puoi visualizzare la risorsa utilizzando la console Google Cloud . In alternativa, puoi utilizzare Google Cloud CLI per visualizzare la risorsa.
Per una descrizione dettagliata di IAM e delle sue funzionalità, consulta la documentazione di IAM. In particolare, consulta Concessione, modifica e revoca dell'accesso alle risorse.
Tipi di ruoli in Pub/Sub
Come altri prodotti Google Cloud , Pub/Sub supporta tre tipi di ruoli:
Ruoli di base: i ruoli di base sono ruoli altamente permissivi che esistevano prima dell'introduzione di IAM. Per saperne di più sui ruoli di base, consulta Ruoli di base.
Ruoli predefiniti: i ruoli predefiniti forniscono un accesso granulare a risorseGoogle Cloud specifiche. Per saperne di più sui ruoli predefiniti, consulta Ruoli predefiniti. I ruoli predefiniti di Pub/Sub sono inclusi in una parte successiva di questa sezione.
Ruoli personalizzati: i ruoli personalizzati ti aiutano ad applicare il principio del privilegio minimo. Per saperne di più sui ruoli personalizzati, consulta Ruoli personalizzati.
Autorizzazioni Pub/Sub richieste
Le sezioni seguenti elencano le autorizzazioni Pub/Sub necessarie per accedere alle diverse risorse Pub/Sub.
Autorizzazioni richieste per gli argomenti
La tabella seguente illustra le autorizzazioni richieste per ogni metodo dell'API Pub/Sub relativo agli argomenti. Mostra quale autorizzazione IAM è necessaria per chiamare ogni metodo, insieme a una descrizione di ciò che fa il metodo.
| Metodo | Descrizione | Autorizzazione obbligatoria |
|---|---|---|
projects.topics.create
|
Crea l'argomento specificato con il nome specificato. | pubsub.topics.create sul progetto Cloud contenente |
projects.topics.delete
|
Elimina l'argomento con il nome specificato. | pubsub.topics.delete
sull'argomento richiesto |
projects.topics.get
|
Recupera la configurazione di un argomento. | pubsub.topics.get
sull'argomento richiesto |
projects.topics.getIamPolicy
|
Recupera la policy di controllo dell'accesso IAM per un argomento. | pubsub.topics.getIamPolicy
sull'argomento richiesto |
projects.topics.list
|
Elenca tutti gli argomenti. | pubsub.topics.list
sul progetto Cloud richiesto |
projects.topics.patch
|
Aggiorna un argomento esistente. | pubsub.topics.update
sull'argomento richiesto |
projects.topics.publish
|
Aggiunge uno o più messaggi all'argomento. | pubsub.topics.publish
sull'argomento richiesto |
projects.topics.setIamPolicy
|
Imposta la policy di controllo dell'accesso IAM per un argomento. | pubsub.topics.setIamPolicy
sull'argomento richiesto |
projects.topics.testIamPermissions
|
Restituisce le autorizzazioni di cui dispone un chiamante per la risorsa specificata. | Nessuno |
Autorizzazioni richieste per gli abbonamenti
La tabella seguente illustra le autorizzazioni richieste per ogni metodo dell'API Pub/Sub relativo alle sottoscrizioni. Mostra l'autorizzazione IAM necessaria per chiamare ogni metodo, insieme a una descrizione di ciò che fa il metodo.
| Metodo | Descrizione | Autorizzazione obbligatoria |
|---|---|---|
projects.subscriptions.acknowledge
|
Conferma i messaggi associati agli ack_id in AcknowledgeRequest. | pubsub.subscriptions.consume
sull'abbonamento richiesto |
projects.subscriptions.create
|
Crea una sottoscrizione a un determinato argomento. | pubsub.subscriptions.create sul progetto Cloud contenente e pubsub.topics.attachSubscription sull'argomento richiesto.
Per creare una sottoscrizione S nel progetto A collegata a un argomento T nel progetto B, è necessario concedere le autorizzazioni appropriate sia nel progetto A sia nell'argomento T. In questo caso, le informazioni sull'identità dell'utente possono essere acquisite negli audit log del Progetto B. |
projects.subscriptions.delete
|
Elimina una sottoscrizione esistente. | pubsub.subscriptions.delete
sull'abbonamento richiesto |
projects.subscriptions.detach
|
Scollega una sottoscrizione da un argomento. | pubsub.topics.detachSubscription sull'argomento a cui è collegata la sottoscrizione. |
projects.subscriptions.get
|
Recupera i dettagli di configurazione di un abbonamento. | pubsub.subscriptions.get
sull'abbonamento richiesto |
projects.subscriptions.getIamPolicy
|
Recupera la policy di controllo dell'accesso IAM per una sottoscrizione. | pubsub.subscriptions.getIamPolicy
sull'abbonamento richiesto |
projects.subscriptions.list
|
Elenca gli abbonamenti corrispondenti. | pubsub.subscriptions.list
sul progetto Cloud richiesto |
projects.subscriptions.modifyAckDeadline
|
Modifica la scadenza di conferma per un messaggio specifico. | pubsub.subscriptions.consume
sull'abbonamento richiesto |
projects.subscriptions.modifyPushConfig
|
Modifica il pushConfig per una sottoscrizione specificata. | pubsub.subscriptions.update
sull'abbonamento richiesto |
projects.subscriptions.patch
|
Aggiorna un abbonamento esistente. | pubsub.subscriptions.update
sull'abbonamento richiesto |
projects.subscriptions.pull
|
Esegue il pull dei messaggi dal server. | pubsub.subscriptions.consume
sull'abbonamento richiesto |
projects.subscriptions.seek
|
Cerca una sottoscrizione esistente in un momento specifico o in uno snapshot. | pubsub.subscriptions.consume
sulla sottoscrizione richiesta e pubsub.snapshots.seek
sullo snapshot richiesto, se presente. |
projects.subscriptions.setIamPolicy
|
Imposta la policy di controllo dell'accesso IAM per una sottoscrizione. | pubsub.subscriptions.setIamPolicy
sull'abbonamento richiesto |
projects.subscriptions.testIamPermissions
|
Restituisce le autorizzazioni di cui dispone un chiamante per la risorsa specificata. | Nessuno |
Autorizzazioni richieste per gli schemi
La tabella seguente illustra le autorizzazioni richieste per ogni metodo dell'API Pub/Sub relativo agli schemi. Mostra l'autorizzazione IAM necessaria per chiamare ogni metodo, insieme a una descrizione di ciò che fa il metodo.
| Metodo | Descrizione | Autorizzazione obbligatoria |
|---|---|---|
projects.schemas.commit
|
Esegue il commit di una nuova revisione dello schema. | pubsub.schemas.commit
nello schema richiesto |
projects.schemas.create
|
Crea uno schema. | pubsub.schemas.create sul progetto Cloud contenente |
projects.schemas.delete
|
Elimina uno schema. | pubsub.schemas.delete
nello schema richiesto |
projects.schemas.deleteRevision
|
Elimina una revisione dello schema specifica. | pubsub.schemas.delete
nello schema richiesto |
projects.schemas.get
|
Recupera uno schema. | pubsub.schemas.get
nello schema richiesto |
projects.schemas.getIamPolicy
|
Recupera la policy di controllo dell'accesso IAM per uno schema. | pubsub.schemas.getIamPolicy sullo schema richiesto |
projects.schemas.list
|
Elenca gli schemi in un progetto. | pubsub.schemas.list
sul progetto Cloud richiesto |
projects.schemas.listRevisions
|
Elenca tutte le revisioni dello schema per lo schema denominato. | pubsub.schemas.listRevisions
nello schema richiesto |
projects.schemas.rollback
|
Crea una nuova revisione dello schema da una revisione precedente. | pubsub.schemas.rollback
nello schema richiesto |
projects.schemas.validate
|
Convalida una definizione di schema. | pubsub.schemas.validate sul progetto Cloud contenente |
projects.schemas.validateMessage
|
Convalida un messaggio rispetto a uno schema. | pubsub.schemas.validate sul progetto Cloud contenente |
Autorizzazioni richieste per gli snapshot
La tabella seguente illustra le autorizzazioni richieste per ogni metodo dell'API Pub/Sub relativo agli snapshot. Mostra l'autorizzazione IAM necessaria per chiamare ogni metodo, insieme a una descrizione di ciò che fa il metodo.
| Metodo REST | Descrizione | Autorizzazione obbligatoria |
|---|---|---|
projects.snapshots.create
|
Crea uno snapshot dalla sottoscrizione richiesta. | pubsub.snapshots.create sul progetto Cloud contenente e l'autorizzazione pubsub.subscriptions.consume sulla sottoscrizione di origine. |
projects.snapshots.delete
|
Rimuove uno snapshot esistente. | pubsub.snapshots.delete
sullo snapshot richiesto |
projects.snapshots.getIamPolicy
|
Recupera la policy di controllo dell'accesso IAM per uno snapshot. | pubsub.snapshots.getIamPolicy
sullo snapshot richiesto |
projects.snapshots.list
|
Elenca gli snapshot esistenti. | pubsub.snapshots.list
sul progetto Cloud richiesto |
projects.snapshots.patch
|
Aggiorna uno snapshot esistente. | pubsub.snapshots.update
sullo snapshot richiesto |
projects.snapshots.setIamPolicy
|
Imposta la policy di controllo dell'accesso IAM per uno snapshot. | pubsub.snapshots.setIamPolicy
sullo snapshot richiesto |
projects.snapshots.testIamPermissions
|
Restituisce le autorizzazioni di cui dispone un chiamante per la risorsa specificata. | Nessuno |
Ruoli Pub/Sub disponibili
La tabella seguente elenca tutti i ruoli Pub/Sub e le autorizzazioni associate a ciascun ruolo:
| Role | Permissions |
|---|---|
Pub/Sub Admin( Provides full access to topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Editor( Provides access to modify topics and subscriptions, and access to publish and consume messages. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Publisher( Provides access to publish messages to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Subscriber( Provides access to consume messages from a subscription and to attach subscriptions to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Viewer( Provides access to view topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Cloud Pub/Sub Service Agent( Grants Cloud Pub/Sub Service Account access to manage resources. |
|
Controllo dell'accesso tramite la console Google Cloud
Puoi utilizzare la console Google Cloud per gestire il controllo dell'accesso per i tuoi argomenti e progetti.
Per impostare i controlli dell'accesso a livello di progetto, segui questi passaggi:
Nella console Google Cloud , vai alla pagina IAM.
Seleziona il progetto.
Fai clic su Aggiungi.
Digita uno o più nomi di entità.
Nell'elenco Seleziona un ruolo, seleziona il ruolo che vuoi concedere.
Fai clic su Salva.
Verifica che l'entità sia elencata con il ruolo che hai concesso.
Per impostare i controlli dell'accesso per argomenti e sottoscrizioni, segui questi passaggi:
Nella console Google Cloud , vai all'elenco Argomenti di Pub/Sub.
Se necessario, seleziona il progetto abilitato per Pub/Sub.
Esegui uno dei seguenti passaggi:
Per impostare i ruoli per uno o più argomenti, seleziona gli argomenti.
Per impostare i ruoli per una sottoscrizione collegata a un argomento, fai clic sull'ID argomento. Nella pagina Dettagli argomento, fai clic sull'ID della sottoscrizione. Viene visualizzata la pagina Dettagli sottoscrizione.
Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni.
Nella scheda Autorizzazioni, fai clic su Aggiungi entità.
Digita uno o più nomi di entità.
Nell'elenco Seleziona un ruolo, seleziona il ruolo che vuoi concedere.
Fai clic su Salva.
Controllo dell'accesso tramite l'API IAM
L'API IAM di Pub/Sub consente di impostare e recuperare le policy su singoli argomenti e sottoscrizioni in un progetto e di testare le autorizzazioni di un utente per una determinata risorsa. Come per i metodi Pub/Sub standard, puoi richiamare i metodi dell'API IAM tramite le librerie client, Explorer API o direttamente tramite HTTP.
Tieni presente che non puoi utilizzare l'API IAM di Pub/Sub per gestire le policy a livello di progetto Google Cloud .
Le sezioni seguenti forniscono esempi di come impostare e recuperare una policy e di come testare le autorizzazioni di un chiamante per una determinata risorsa.
Acquisisci una polizza
Il metodo getIamPolicy() consente di recuperare una policy esistente.
Questo metodo restituisce un oggetto JSON contenente la policy associata alla risorsa.
Ecco un codice campione per ottenere una policy per una sottoscrizione:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
Recupera le norme relative agli abbonamenti:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Output:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com", "user:user-3@gmail.com" ] } ] }
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Ecco un codice campione per recuperare una policy per un argomento:C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
Recupera la policy dell'argomento
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Output:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API PHP Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Imposta una policy
Il metodo setIamPolicy() consente di collegare una policy a una risorsa. Il metodo setIamPolicy() accetta un SetIamPolicyRequest, che contiene la policy da impostare e la risorsa a cui è associata.
Restituisce la policy risultante.
Di seguito è riportato un codice campione per impostare una policy per una sottoscrizione:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
1. Salva la policy per la sottoscrizione.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Apri subscription_policy.json e aggiorna le associazioni assegnando i ruoli appropriati alle entità appropriate.
Per saperne di più sull'utilizzo dei file subscription_policy.json, consulta
Policy nella documentazione di IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com" ] } ] }
3. Applica le nuove norme relative agli abbonamenti.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Di seguito è riportato un codice campione per impostare una policy per un argomento:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
1. Salva la policy per l'argomento.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Apri topic_policy.json e aggiorna le associazioni assegnando i ruoli appropriati alle entità appropriate.
Per saperne di più sull'utilizzo dei file subscription_policy.json, consulta
Policy nella documentazione di IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Applica la nuova policy sugli argomenti.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Test delle autorizzazioni
Puoi utilizzare il metodo testIamPermissions() per verificare quali delle autorizzazioni specificate possono essere aggiunte o rimosse per la risorsa specificata. Prende come parametri un nome della risorsa e un insieme di autorizzazioni e restituisce il sottoinsieme di autorizzazioni.
Di seguito è riportato un codice campione per testare le autorizzazioni per un abbonamento:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \
--format jsonOutput:
[
{
"name": "pubsub.subscriptions.consume",
"stage": "GA"
},
{
"name": "pubsub.subscriptions.delete",
"stage": "GA"
},
{
"name": "pubsub.subscriptions.get",
"stage": "GA"
},
{
"name": "pubsub.subscriptions.getIamPolicy",
"stage": "GA"
},
{
"name": "pubsub.subscriptions.setIamPolicy",
"stage": "GA"
},
{
"name": "pubsub.subscriptions.update",
"stage": "GA"
}
]Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Di seguito è riportato un codice campione per testare le autorizzazioni per un argomento:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
gcloud
gcloud iam list-testable-permissions \
https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \
--format jsonOutput
[
{
"name": "pubsub.topics.attachSubscription",
"stage": "GA"
},
{
"name": "pubsub.topics.delete",
"stage": "GA"
},
{
"name": "pubsub.topics.detachSubscription",
"stage": "GA"
},
{
"name": "pubsub.topics.get",
"stage": "GA"
},
{
"name": "pubsub.topics.getIamPolicy",
"stage": "GA"
},
{
"name": "pubsub.topics.publish",
"stage": "GA"
},
{
"name": "pubsub.topics.setIamPolicy",
"stage": "GA"
},
{
"name": "pubsub.topics.update",
"stage": "GA"
}
]Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Pub/Sub.
Ruby
L'esempio seguente utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Comunicazione tra progetti
IAM di Pub/Sub è utile per perfezionare l'accesso nella comunicazione tra progetti.
Pubblica in un argomento in un progetto diverso
Supponiamo che tu voglia che un account di servizio nel progetto A pubblichi messaggi in un argomento nel progetto B. Per attivare questo scenario:
Abilita l'API Pub/Sub nel progetto A.
Concedi al account di servizio l'autorizzazione
pubsub.topics.publishnel progetto B o nell'argomento. Il ruolo Pub/Sub Publisher (roles/pubsub.publisher) include questa autorizzazione.
Crea una sottoscrizione in un altro progetto
Supponiamo che tu voglia che un account di servizio nel progetto A crei una sottoscrizione nel progetto A per un argomento nel progetto B. Per attivare questo scenario:
Abilita l'API Pub/Sub in entrambi i progetti.
Concedi al account di servizio le seguenti autorizzazioni:
pubsub.subscriptions.createsul progetto A.pubsub.topics.attachSubscriptionsull'argomento nel progetto B.
Il ruolo Pub/Sub Editor (
roles/pubsub.editor) include queste autorizzazioni.Crea una sottoscrizione nel progetto A collegata all'argomento nel progetto B.
Ricevi messaggi da un argomento in un progetto diverso
Supponiamo che tu voglia che un account di servizio nel progetto A riceva messaggi da una sottoscrizione nel progetto B. Per attivare questo scenario:
Abilita l'API Pub/Sub nel progetto A.
Concedi al account di servizio il ruolo Pub/Sub Subscriber (
roles/pubsub.subscriber) nel progetto B o nella sottoscrizione.
Comportamento della disponibilità parziale
I controlli di autorizzazione dipendono dal sottosistema IAM. Per offrire una latenza di risposta costantemente bassa per le operazioni sui dati (pubblicazione e consumo dei messaggi), il sistema potrebbe utilizzare le policy IAM memorizzate nella cache. Per informazioni su quando le modifiche diventeranno effettive, consulta la documentazione di IAM.
Passaggi successivi
- Se hai problemi di accesso o autenticazione alle risorse Pub/Sub, consulta Risoluzione dei problemi generali.