Come per tutti i prodotti Google Cloud, Identity and Access Management protegge Cloud Deploy controllando quali utenti e account di servizio autenticati possono eseguire determinate azioni.
Questo documento descrive alcune delle funzionalità di IAM e fornisce istruzioni per proteggere le distribuzioni delle applicazioni gestite mediante Cloud Deploy. Ecco alcuni modi specifici in cui puoi limitare l'accesso ad azioni e risorse in Cloud Deploy:
Concedere l'accesso a una pipeline di distribuzione specifica
Concedere l'accesso per configurare una destinazione specifica
Concedi le autorizzazioni per promuovere una release a un target specifico
Concedi le autorizzazioni per approvare le implementazioni a una destinazione specifica
Concedi le autorizzazioni per promuovere una release durante un periodo di tempo specifico
Concedi le autorizzazioni per approvare le implementazioni durante un periodo di tempo specifico
Prima di iniziare
Impara i concetti di base di IAM.
Scopri di più su ruoli e autorizzazioni di Cloud Deploy.
Informazioni sulle funzionalità avanzate di IAM
Oltre a ruoli e autorizzazioni, Cloud Deploy utilizza le seguenti funzionalità di IAM per fornire questi controlli:
Informazioni sui criteri IAM
Un criterio IAM è una raccolta di associazioni e metadati. L'associazione dei ruoli concede un singolo ruolo a una o più entità (utenti, gruppi o account di servizio), oltre a eventuali conditions specifiche del contesto che controllano se l'associazione diventa effettiva.
Per ulteriori informazioni sui criteri IAM, consulta Informazioni sui criteri.
Informazioni sulle condizioni IAM
Con le condizioni IAM puoi controllare l'accesso alle risorse e alle azioni di Cloud Deploy in base alle condizioni calcolate in fase di runtime. Ad esempio, puoi limitare la promozione a un determinato target in modo che sia consentita solo durante un periodo di tempo specificato.
Informazioni sugli attributi API
Quando crei condizioni IAM, puoi fare riferimento agli attributi API per ottenere informazioni sul runtime su una richiesta. Ad esempio, puoi usare un attributo API per ottenere il nome della risorsa a cui è destinata la richiesta. Poi puoi confrontarlo con la risorsa o le risorse a cui ha accesso l'entità.
Concedi un accesso granulare utilizzando le funzionalità IAM avanzate
Queste funzionalità IAM avanzate consentono di controllare l'accesso a risorse specifiche e a tipi di risorse in determinate condizioni.
Le procedure in questa sezione concedono l'accesso a risorse specifiche (target, pipeline di distribuzione). Puoi anche concedere l'accesso a livello di progetto, il che riguarda tutte le pipeline di distribuzione o tutte le destinazioni in quel progetto. Per impostare un criterio IAM per un progetto, utilizza il comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Concedi l'accesso a una pipeline di distribuzione specifica
Puoi concedere a un'entità le autorizzazioni per creare, modificare ed eliminare tutte le pipeline di distribuzione, semplicemente concedendo un ruolo appropriato. Tuttavia, a volte potresti voler concedere a un'entità questo accesso per una o più pipeline specifiche.
Per farlo, utilizza le associazioni di ruoli per associare il ruolo roles/clouddeploy.developer
all'entità. Quindi, quando applichi il criterio (con setIamPolicy
), specifichi la pipeline di distribuzione per la quale viene concesso l'accesso.
Per concedere l'accesso a una pipeline di distribuzione specifica:
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
L'esempio precedente concede il ruolo a un utente, ma puoi anche concederlo a un gruppo o a un account di servizio.
Chiama il comando seguente per applicare il file dei criteri a una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Concedi l'accesso per configurare una destinazione specifica
Per concedere l'accesso a un'entità a una destinazione specifica, puoi utilizzare le associazioni di ruoli. Per farlo, associa il ruolo roles/clouddeploy.operator
a quell'entità. Quindi, quando applichi il criterio (con setIamPolicy
), devi specificare la destinazione per cui viene concesso l'accesso.
L'accesso al target specifico consente all'entità di aggiornare ed eliminare il target.
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.com
L'esempio precedente concede il ruolo a un gruppo, ma puoi anche concederlo a un utente o a un account di servizio.
Chiama il comando seguente per applicare il file dei criteri a una destinazione specifica:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Concedi le autorizzazioni per promuovere una release a un target specifico
Questa procedura presuppone che esista già un criterio che associa il ruolo all'entità. Qui aggiungiamo una condizione che specifica il target:
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
In questa associazione di ruoli,
condition
accetta una coppia chiave-valore, in cui la chiave èexpression
e il valore è un'espressione CEL. Questa espressione fa riferimento a un set di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, quando l'entità tenta di promuovere la release, l'espressione viene valutata per confermare che il target della promozione corrisponda al target nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.com/rolloutTarget
, che è il target a cui l'entità sta cercando di promuovere. L'espressione la confronta con il target per cui all'entità viene concesso l'accesso alla promozione.Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se vuoi impostare questa associazione per tutte le pipeline di distribuzione, puoi impostarla a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per approvare le implementazioni a una destinazione specifica
L'associazione in questa sezione concede un'autorizzazione dell'entità per approvare le implementazioni di una pipeline e include una condizione che applica l'autorizzazione per la destinazione prod
.
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
In questa associazione di ruoli,
condition
accetta una coppia chiave-valore, in cui la chiave èexpression
e il valore è un'espressione CEL. L'espressione fa riferimento a un set di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, quando l'entità tenta di approvare l'implementazione, l'espressione viene valutata per confermare che il target corrisponda al target nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.com/rolloutTarget
, che è la destinazione dell'implementazione, e lo confronta con la destinazione per cui all'entità viene concesso l'accesso all'approvazione. L'attributoclouddeploy.googleapis.com/rolloutTarget
è l'unico attributo API supportato da Cloud Deploy.Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se vuoi impostare questa associazione per tutte le pipeline di distribuzione, puoi impostarla a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per promuovere una release durante un periodo di tempo specifico
L'associazione in questa sezione concede un'autorizzazione principale per promuovere le release per una pipeline e include una condizione che specifica il periodo di tempo durante il quale è attiva l'associazione.
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Promote during safe window
In questa associazione di ruoli,
condition
accetta una coppia chiave-valore, in cui la chiave èexpression
e il valore è un'espressione CEL. L'espressione fa riferimento a un set di attributi contestuali relativi alla richiesta e restituisce un valore booleano. Questa espressione controlla che l'ora della richiesta sia compresa tra lunedì e venerdì.In questo caso, quando l'entità tenta di promuovere la release, l'espressione viene valutata per confermare che il target della promozione corrisponda al target nell'espressione.
Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se vuoi impostare questa associazione per tutte le pipeline di distribuzione, puoi impostarla a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per approvare le implementazioni durante un periodo di tempo specifico
L'associazione in questa sezione concede a un'entità l'autorizzazione per approvare le implementazioni e include una condizione che specifica l'intervallo di tempo durante il quale è in vigore l'associazione
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Approve during safe window
In questa associazione di ruoli,
condition
prende una coppia chiave:valore, dove la chiave èexpression
e il valore è un'espressione CEL che fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano. Questa espressione controlla che l'ora della richiesta sia compresa tra lunedì e venerdì.In questo caso, quando l'entità tenta di approvare l'implementazione, l'espressione viene valutata per confermare che la destinazione dell'implementazione corrisponda alla destinazione nell'espressione.
Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se vuoi impostare questa associazione per tutte le pipeline di distribuzione, puoi impostarla a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per riprovare un job in base al tipo di prestazione
L'associazione in questa sezione concede a un'entità l'autorizzazione per riprovare un job Cloud Deploy, in base al tipo di job
Crea un file di criteri con la seguente associazione:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy" title: Retry deploy job
In questa associazione di ruoli,
condition
accetta una coppia chiave-valore, in cui la chiave èexpression
e il valore è un'espressione CEL. L'espressione fa riferimento a un set di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, l'espressione viene valutata quando l'entità tenta di riprovare a eseguire il job, per confermare che il tipo di job corrisponda al tipo di job nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.com/jobType
, che può esseredeploy
overify
.Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Se vuoi impostare questa associazione per tutte le pipeline di distribuzione, puoi impostarla a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE