Ruoli e autorizzazioni IAM

Questa pagina descrive gli account di servizio, i ruoli e le autorizzazioni di Cloud Deploy.

L'accesso in Cloud Deploy è controllato utilizzando Identity and Access Management (IAM). IAM consente di creare e gestire le autorizzazioni per le risorse Google Cloud. Cloud Deploy fornisce un insieme specifico di ruoli IAM predefiniti in cui ciascun ruolo contiene un set di autorizzazioni. Puoi utilizzare questi ruoli per concedere un accesso più granulare a risorse Google Cloud specifiche e impedire accessi indesiderati ad altre risorse. IAM consente di adottare il principio di sicurezza del privilegio minimo, in modo da concedere solo l'accesso necessario alle tue risorse.

Consulta Utilizzo di IAM per limitare l'accesso a Cloud Deploy per scoprire di più sulle funzionalità di sicurezza avanzate per il controllo dell'accesso.

Account di servizio in Cloud Deploy

Per impostazione predefinita, Cloud Deploy viene eseguito utilizzando l'account di servizio predefinito di Compute Engine. L'account di servizio dispone di autorizzazioni sufficienti per il rendering dei manifest e il deployment nelle destinazioni.

Scopri di più su come Cloud Deploy utilizza gli account di servizio.

Ruoli predefiniti di Cloud Deploy

Con IAM, ogni metodo API nell'API Cloud Deploy richiede che l'identità che effettua la richiesta API disponga delle autorizzazioni appropriate per utilizzare la risorsa. Le autorizzazioni vengono concesse impostando criteri che concedono ruoli a un'entità (account utente, gruppo o di servizio) del progetto. Puoi concedere più ruoli a un'entità nella stessa risorsa.

La documentazione IAM include un riferimento disponibile per la ricerca di tutti i ruoli predefiniti.

La tabella seguente elenca i ruoli IAM di Cloud Deploy e le autorizzazioni che includono:

Autorizzazioni

(roles/clouddeploy.admin)

Controllo completo delle risorse Cloud Deploy.

clouddeploy.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.approver)

Autorizzazione per l'approvazione o il rifiuto delle implementazioni.

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.customTargetTypeAdmin)

Autorizzazione per gestire le risorse CustomTargetType

clouddeploy.config.get

clouddeploy.customTargetTypes.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.developer)

Autorizzazione per gestire la configurazione del deployment senza l'autorizzazione ad accedere alle risorse operative, come i target.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.jobRunner)

Autorizzazione per eseguire le operazioni di Cloud Deploy senza autorizzazione a consegnare a una destinazione.

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

(roles/clouddeploy.operator)

Autorizzazione per gestire la configurazione del deployment.

clouddeploy.automationRuns.*

clouddeploy.automations.*

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.*

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.createTagBinding

clouddeploy.targets.delete

clouddeploy.targets.deleteTagBinding

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.releaser)

Autorizzazione per creare release e lanci di Cloud Deploy.

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.viewer)

Può visualizzare le risorse di Cloud Deploy.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

resourcemanager.projects.get

resourcemanager.projects.list

Oltre ai ruoli predefiniti di Cloud Deploy, i ruoli Visualizzatore, Editor e Proprietario di base includono anche le autorizzazioni relative a Cloud Deploy. Tuttavia, ti consigliamo di concedere ruoli predefiniti, ove possibile, per rispettare il principio di sicurezza del privilegio minimo.

Autorizzazioni

Nella tabella seguente sono elencate le autorizzazioni di cui il chiamante deve disporre per chiamare ciascun metodo:

Metodo API Autorizzazione obbligatoria Descrizione
automations.create() clouddeploy.automations.create Crea una nuova risorsa di automazione.
automations.delete() clouddeploy.automations.delete Elimina una risorsa di automazione esistente.
automations.get() clouddeploy.automations.get Recupera i dettagli per una singola risorsa di automazione.
automations.list() clouddeploy.automations.list Elenca le risorse di automazione e i relativi metadati.
automations.update() clouddeploy.automations.update Aggiorna una risorsa di automazione esistente.
automationRuns.cancel() clouddeploy.automationRuns.cancel Annullare un'automazione in esecuzione.
automationRuns.get() clouddeploy.automationRuns.get Recupera i dettagli per una singola esecuzione dell'automazione.
automationRuns.list() clouddeploy.automationRuns.list Elenca le esecuzioni dell'automazione e i relativi metadati.
customTargetTypes.create() clouddeploy.customTargetType.create Creare una risorsa di tipo target personalizzato.
customTargetTypes.delete() clouddeploy.customTargetType.delete Elimina una risorsa di tipo target personalizzato.
customTargetTypes.get() clouddeploy.customTargetType.get Recupera i dettagli per un tipo di targeting personalizzato.
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy Ottieni il criterio IAM per una risorsa di tipo di destinazione personalizzata.
customTargetTypes.list() clouddeploy.customTargetType.list Elenca i tipi di target personalizzati disponibili e i relativi metadati.
customTargetTypes.patch() clouddeploy.customTargetType.patch Aggiorna un tipo di target personalizzato esistente.
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy Imposta il criterio IAM per una risorsa di tipo destinazione personalizzata.
deliveryPipelines.create() clouddeploy.deliveryPipelines.create Creare una nuova risorsa della pipeline di distribuzione.
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete Elimina una risorsa esistente della pipeline di distribuzione.
deliveryPipelines.get() clouddeploy.deliveryPipelines.get Recupera i dettagli di una singola pipeline di distribuzione.
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy Recupera il criterio IAM per una risorsa della pipeline di distribuzione.
deliveryPipelines.list() clouddeploy.deliveryPipelines.list Elenca le pipeline di distribuzione e i relativi metadati.
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback Esegue il rollback di una destinazione.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy Imposta il criterio IAM per una risorsa della pipeline di distribuzione.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update Aggiorna una risorsa esistente della pipeline di distribuzione.
jobRuns.get() clouddeploy.jobRuns.get Recupera una risorsa JobRuns.
jobRuns.list() clouddeploy.jobRuns.list Elenca JobRuns risorse e i relativi metadati.
jobRuns.terminate() clouddeploy.jobRuns.terminate Termina l'esecuzione di un job in corso.
operations.cancel() clouddeploy.operations.cancel Annullare un'operazione a lunga esecuzione.
operation.delete() clouddeploy.operations.delete Elimina un'operazione a lunga esecuzione.
operations.get() clouddeploy.operations.get Recupera un'operazione specifica a lunga esecuzione (ad esempio, per restituire lo stato della creazione di una release).
operations.list() clouddeploy.operations.list Elenca le operazioni a lunga esecuzione.
releases.abandon() clouddeploy.releases.abandon Abbandona una release e impedisci ulteriori implementazioni a fronte della release.
releases.create() clouddeploy.releases.create Crea una nuova risorsa di release. Il chiamante richiede anche l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio utilizzato per eseguire il rendering del manifest.
releases.get() clouddeploy.releases.get Recupera i dettagli per una singola release.
releases.list() clouddeploy.releases.list Elenca le uscite e i metadati.
releases.promote() clouddeploy.rollouts.create Promuovi la release al target successivo.
rollouts.advance() clouddeploy.rollouts.advance Porta un'implementazione alla fase successiva.
rollouts.approve() clouddeploy.rollouts.approve Approva o rifiuta un'implementazione con stato di approvazione required.
rollouts.cancel() clouddeploy.rollouts.cancel Annullare un'implementazione.
rollouts.create() clouddeploy.rollouts.create Creare una nuova risorsa di implementazione. Il chiamante richiede anche l'autorizzazione iam.serviceAccounts.actAs per l'account di progetto o di servizio utilizzato per il deployment.
rollouts.get() clouddeploy.rollouts.get Recupera i dettagli di una singola implementazione.
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob Ignora un job non riuscito.
rollouts.list() clouddeploy.rollouts.list Elenca le implementazioni e i metadati.
rollouts.retryJob() clouddeploy.rollouts.retryJob Riprova un job non riuscito.
targets.create() clouddeploy.targets.create Creare una nuova risorsa di destinazione.
targets.delete() clouddeploy.targets.delete Elimina una risorsa di destinazione esistente.
targets.get() clouddeploy.targets.get Recupera i dettagli per un singolo target.
targets.getIamPolicy() clouddeploy.targets.getIamPolicy Ottiene il criterio IAM per una risorsa di destinazione.
targets.list() clouddeploy.targets.list Elenca le destinazioni e i relativi metadati.
targets.setIamPolicy() clouddeploy.targets.setIamPolicy Imposta il criterio IAM per una risorsa di destinazione.
targets.update() clouddeploy.targets.update Aggiorna una risorsa di destinazione esistente.

Utilizzo di IAM per limitare le azioni sulle risorse Cloud Deploy

Puoi proteggere le risorse Cloud Deploy utilizzando IAM nei seguenti modi:

  • Meta API IAM

    Utilizza setIamPolicy sulle risorse Cloud Deploy per limitare le azioni su queste risorse.

  • IAM condizionale

    Applica i criteri di accesso in modo programmatico, incluse le conditions in base alle quali concedere o negare l'accesso.

Puoi utilizzare questi criteri e condizioni per limitare le azioni seguenti sulle risorse Cloud Deploy:

  • Crea una pipeline di distribuzione o una destinazione

    Puoi concedere questo accesso a utenti o gruppi specifici.

  • Aggiorna o elimina una pipeline di distribuzione specifica

    Puoi concedere questo accesso a utenti o gruppi specifici.

  • Creare una release per una pipeline di distribuzione specifica

    Puoi concedere questo accesso a utenti o gruppi specifici.

  • Aggiornare o eliminare un target specifico

    Puoi concedere questo accesso a utenti o gruppi specifici.

  • Creare o approvare un'implementazione o promuovere una release

    Puoi concedere questo accesso a utenti o gruppi specifici per una pipeline di destinazione o di distribuzione specifica.

    Puoi anche impostare una condizione che limiti questo accesso entro un intervallo di tempo specificato.

Passaggi successivi