Come per tutti i prodotti Google Cloud , Identity and Access Management protegge Cloud Deploy controllando quali utenti autenticati e account di servizio possono eseguire quali azioni.
Questo documento descrive alcune delle funzionalità di IAM e fornisce istruzioni per proteggere le distribuzioni delle applicazioni gestite utilizzando 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 pubblicazione specifica
Concedere le autorizzazioni per promuovere una release a un target specifico
Concedere le autorizzazioni per approvare le implementazioni in una destinazione specifica
Concedere le autorizzazioni per promuovere una release durante un periodo di tempo specifico
Concedere le autorizzazioni per approvare le implementazioni durante un periodo di tempo specifico
Prima di iniziare
Comprendi 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 sulle policy IAM
Un criterio IAM è una raccolta di associazioni e metadati. L'associazione di ruolo concede un singolo ruolo a una o più entità (utenti, gruppi o service account), oltre a eventuali condizioni specifiche del contesto che controllano se l'associazione ha effetto.
Per saperne di più sulle policy IAM, consulta Comprendere le policy.
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 di runtime su una richiesta. Ad esempio, puoi utilizzare un attributo API per ottenere il nome della risorsa a cui si riferisce la richiesta. Poi puoi confrontarlo con la risorsa o le risorse a cui l'entità ha accesso.
Concedere l'accesso granulare utilizzando le funzionalità avanzate di IAM
Queste funzionalità IAM avanzate consentono di controllare l'accesso a risorse specifiche e a tipi di risorse in base a condizioni specifiche.
Le procedure descritte in questa sezione concedono l'accesso a risorse specifiche (target,
pipeline di distribuzione). Puoi anche concedere l'accesso a livello di progetto, il che influisce su tutte le pipeline di distribuzione o su tutti i target in quel progetto. Per impostare una policy IAM per un progetto, utilizza il comando gcloud projects set-iam-policy:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Concedere l'accesso a una pipeline di pubblicazione 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 la policy (con setIamPolicy) specifichi per quale pipeline di distribuzione viene concesso l'accesso.
Per concedere l'accesso a una pipeline di pubblicazione specifica:
Crea un file di policy con il seguente binding:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.comL'esempio precedente concede il ruolo a un utente, ma puoi anche concederlo a un gruppo o a un account di servizio.
Chiama il seguente comando per applicare il file della policy a una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Concedere l'accesso per configurare un target specifico
Per concedere a un'entità l'accesso a un target specifico, puoi utilizzare
le associazioni di ruoli. Per farlo, associa il ruolo roles/clouddeploy.operator a questa entità, poi quando applichi la policy (con setIamPolicy) specifichi per quale target viene concesso l'accesso.
L'accesso al target specifico consente all'entità di aggiornarlo ed eliminarlo.
Crea un file di policy con il seguente binding:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.comL'esempio precedente concede il ruolo a un gruppo, ma puoi anche concederlo a un utente o a un account di servizio.
Chiama il seguente comando per applicare il file della policy a un target specifico:
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à una policy che associa il ruolo all'entità. Qui aggiungiamo una condizione che specifica il target:
Crea un file di policy 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 prodIn questo binding del ruolo,
conditionaccetta una coppia chiave-valore, in cui la chiave èexpressione il valore è un'espressione CEL. Questa espressione fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, l'espressione viene valutata quando l'entità tenta di promuovere la release, per confermare che il target della promozione corrisponde al target nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.googleapis.com/rolloutTarget, che è la destinazione a cui l'entità sta tentando di promuovere. L'espressione lo confronta con il target per cui viene concesso l'accesso alla promozione all'entità.Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESe vuoi impostare questo binding per tutte le pipeline di pubblicazione, puoi farlo a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per approvare le implementazioni a un target specifico
Il binding in questa sezione concede a un principal l'autorizzazione ad approvare i rollout
per una pipeline e include una condizione che applica l'autorizzazione per la
destinazione prod.
Crea un file di policy 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 prodIn questo binding del ruolo,
conditionaccetta una coppia chiave-valore, in cui la chiave èexpressione il valore è un'espressione CEL. L'espressione fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, l'espressione viene valutata quando l'entità tenta di approvare l'implementazione, per confermare che la destinazione corrisponde a quella dell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.googleapis.com/rolloutTarget, che è la destinazione dell'implementazione, e lo confronta con la destinazione per cui al principal viene concesso l'accesso di 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_FILESe vuoi impostare questo binding per tutte le pipeline di pubblicazione, puoi farlo a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedi le autorizzazioni per promuovere una release durante un intervallo di tempo specifico
L'associazione in questa sezione concede a un'entità l'autorizzazione a promuovere le release per una pipeline e include una condizione che specifica la finestra temporale durante la quale l'associazione è in vigore.
Crea un file di policy 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 windowIn questo binding del ruolo,
conditionaccetta una coppia chiave-valore, in cui la chiave èexpressione il valore è un'espressione CEL. L'espressione fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano. Questa espressione verifica che l'ora della richiesta sia compresa tra il lunedì e il venerdì.In questo caso, l'espressione viene valutata quando l'entità tenta di promuovere la release per confermare che il target della promozione corrisponde 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_FILESe vuoi impostare questo binding per tutte le pipeline di pubblicazione, puoi farlo a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedere le autorizzazioni per approvare le implementazioni durante un intervallo di tempo specifico
L'associazione in questa sezione concede a un'entità l'autorizzazione ad approvare i rollout e include una condizione che specifica la finestra temporale durante la quale l'associazione è in vigore.
Crea un file di policy 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 windowIn questo binding del ruolo,
conditionaccetta una coppia chiave-valore, in cui la chiave èexpressione il valore è un'espressione CEL che fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano. Questa espressione verifica che l'ora della richiesta sia compresa tra il lunedì e il venerdì.In questo caso, l'espressione viene valutata quando il principal tenta di approvare l'implementazione, per verificare 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_FILESe vuoi impostare questo binding per tutte le pipeline di pubblicazione, puoi farlo a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Concedere le autorizzazioni per riprovare un job, in base al tipo di prestazione
L'associazione in questa sezione concede a un'entità l'autorizzazione a riprovare un job Cloud Deploy, in base al tipo di job
Crea un file di policy 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 jobIn questo binding del ruolo,
conditionaccetta una coppia chiave-valore, in cui la chiave èexpressione il valore è un'espressione CEL. L'espressione fa riferimento a un insieme di attributi contestuali relativi alla richiesta e restituisce un valore booleano.In questo caso, l'espressione viene valutata quando il principal tenta di ripetere il job, per verificare che i tipi di prestazione corrispondano al tipo di prestazione nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.googleapis.com/jobType, che può esseredeployoverify.Imposta l'associazione per una pipeline di distribuzione specifica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESe vuoi impostare questo binding per tutte le pipeline di pubblicazione, puoi farlo a livello di progetto:
gcloud projects set-iam-policy PROJECT POLICY_FILE