Come per tutti i prodotti Google Cloud, Identity and Access Management protegge Google 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 tramite Google Cloud Deploy. Ecco alcuni modi specifici per limitare l'accesso ad azioni e risorse in Google Cloud Deploy:
Concedere l'accesso a una pipeline di distribuzione specifica
Concedere le autorizzazioni per promuovere una release in una destinazione specifica
Concedi le autorizzazioni per approvare le implementazioni per un target specifico
Concedere le autorizzazioni per promuovere una release in 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 autorizzazioni e ruoli di Google Cloud Deploy.
Informazioni sulle funzionalità avanzate di IAM
Oltre ai ruoli e alle autorizzazioni, Google 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 del ruolo concede un singolo ruolo a una o più entità (utenti, gruppi o account di servizio) e a eventuali condizioni specifiche del contesto che determinano se l'associazione ha effetto.
Per ulteriori informazioni sui criteri IAM, consulta la sezione Comprendere i criteri.
Informazioni sulle condizioni IAM
Con le condizioni IAM puoi controllare l'accesso alle risorse e alle azioni di Google Cloud Deploy in base alle condizioni calcolate al momento del runtime. Ad esempio, puoi limitare la promozione a un determinato target in modo che sia consentita solo durante un intervallo di tempo specificato.
Informazioni sugli attributi API
Quando crei condizioni IAM, puoi fare riferimento agli attributi API per ottenere informazioni sul runtime per una richiesta. Ad esempio, puoi utilizzare un attributo API per ottenere il nome della risorsa per cui è richiesta la richiesta. Quindi puoi confrontarlo con la risorsa o le risorse a cui ha accesso l'entità.
Concedi l'accesso granulare utilizzando le funzionalità IAM avanzate
Queste funzionalità IAM avanzate ti consentono di controllare l'accesso a risorse specifiche e a tipi di risorse in condizioni specifiche.
Le procedure in questa sezione consentono l'accesso a risorse specifiche (target, pipeline di distribuzione). Puoi concedere l'accesso anche a livello di progetto e questo ha effetto su tutte le pipeline di distribuzione o su tutte le destinazioni nel 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
Concedere l'accesso a una pipeline di distribuzione specifica
Per concedere le autorizzazioni a un'entità a creare, modificare ed eliminare tutte le pipeline di distribuzione, concedi semplicemente un ruolo appropriato. A volte, però, potresti voler concedere a un'entità questo accesso per una o più pipeline specifiche.
Per farlo, utilizza le associazioni di ruolo per associare il ruolo
roles/clouddeploy.developer
a questa entità. Quindi, quando applichi il criterio (con setIamPolicy
), specifichi per quale pipeline di distribuzione 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 assegnarlo a un gruppo o a un account di servizio.
Chiama il seguente comando 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
Concedere l'accesso per configurare un target specifico
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 questa entità, poi quando applichi il criterio (con setIamPolicy
) specifichi la destinazione a cui viene concesso l'accesso.
L'accesso a una destinazione specifica offre all'entità la possibilità di aggiornarla ed eliminarla.
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 assegnarlo a un utente o a un account di servizio.
Chiama il seguente comando per applicare il file dei criteri a una destinazione specifica:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Concedere autorizzazioni per promuovere una release in una destinazione specifica
Per questa procedura si presuppone che esista già un criterio che vincola 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 dei ruoli,
condition
utilizza una coppia chiave-valore in cui la chiave èexpression
e 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 corrisponda al target nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.com/rolloutTarget
, che è il target per cui l'entità sta cercando di promuovere. L'espressione lo 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 per un target specifico
L'associazione in questa sezione concede un'autorizzazione principale per approvare le implementazioni per 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 dei ruoli,
condition
utilizza una coppia chiave-valore in cui la chiave èexpression
e 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 il lancio, per confermare che il target corrisponda al target nell'espressione.
L'espressione utilizza l'attributo API
clouddeploy.com/rolloutTarget
, che è il target dell'implementazione, e la confronta con la destinazione a cui viene concesso l'accesso di approvazione al principio. L'attributoclouddeploy.googleapis.com/rolloutTarget
è l'unico attributo API supportato da Google 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
Concedere autorizzazioni per promuovere una release in 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 l'intervallo di tempo durante il quale è applicata.
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 dei ruoli,
condition
utilizza una coppia chiave-valore in cui la chiave èexpression
e 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 controlla che l'ora della richiesta si verifichi dal lunedì al venerdì.In questo caso, l'espressione viene valutata, quando l'entità tenta di promuovere la release, 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 un'autorizzazione principale per approvare le implementazioni e include una condizione che specifica l'intervallo di tempo durante il quale è effettiva
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 dei ruoli,
condition
utilizza una coppia chiave-valore in cui la chiave èexpression
e il valore è un'espressione CEL che fa riferimento a un insieme di attributi contestuali sulla richiesta e restituisce un valore booleano. Questa espressione controlla che l'ora della richiesta si verifichi dal lunedì al venerdì.In questo caso, l'espressione viene valutata, quando l'entità tenta di approvare l'implementazione, per confermare che il target di implementazione 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 ritentare un job in base al tipo
L'associazione in questa sezione concede all'entità l'autorizzazione necessaria per riprovare a eseguire un job di Google 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 dei ruoli,
condition
utilizza una coppia chiave-valore in cui la chiave èexpression
e 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 riprovare il job, per confermare che i tipi di job corrispondano 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