Utilizza IAM per limitare l'accesso a Cloud Deploy

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 con Cloud Deploy. Ecco alcuni modi specifici può limitare l'accesso ad azioni e risorse in Cloud Deploy:

Prima di iniziare

Informazioni sulle funzionalità avanzate di IAM

Oltre ai ruoli e alle 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. La l'associazione di ruoli concede un singolo ruolo a una o più entità (utenti, gruppi account di servizio) più eventuali condizioni specifiche del contesto che controllano l'applicazione dell'associazione.

Per ulteriori informazioni sui criteri IAM, consulta Informazioni sui criteri.

Informazioni sulle condizioni IAM

Con le condizioni IAM, puoi controllo. l'accesso alle risorse e alle azioni di Cloud Deploy in base vengono calcolate in fase di 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 le condizioni IAM, puoi fare riferimento Attributi API per ottenere il runtime le informazioni su una richiesta. Ad esempio, puoi utilizzare un attributo API per ottenere il nome della risorsa per cui è inviata la richiesta. Poi puoi confrontarlo con di una o più risorse a cui ha accesso l'entità.

Concedi un accesso granulare utilizzando 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 consentono l'accesso a risorse specifiche (target, di distribuzione dei carichi di lavoro). Puoi anche concedere l'accesso a livello di progetto, il che influisce su tutte le pipeline di importazione o su tutti i target del progetto. Per impostare un Criterio IAM per un progetto, utilizza gcloud projects set-iam-policy :

gcloud projects set-iam-policy PROJECT_ID POLICY_FILE

Concedere l'accesso a una pipeline di distribuzione specifica

Puoi concedere a un'entità le autorizzazioni per creare, modificare ed eliminare tutti di distribuzione dei carichi di lavoro, semplicemente concedendo un ruolo appropriato. A volte, però, potresti voler concedere questo accesso a un'entità per uno o più pipeline specifiche.

A questo scopo, utilizza le associazioni di ruoli per associare ruolo roles/clouddeploy.developer con quell'entità, poi, quando applichi (con setIamPolicy) specifichi a quale pipeline di distribuzione viene concesso l'accesso per i quali è stato concesso.

Per concedere l'accesso a una pipeline di distribuzione specifica:

  1. Crea un file dei criteri con quanto segue. associazione:

    bindings:
    - role: roles/clouddeploy.developer
      members:
      - user:fatima@example.com
    

    L'esempio riportato sopra concede il ruolo a un utente, ma puoi anche concederlo a un gruppo o a un account di servizio.

  2. Chiama il comando seguente per applicare il file dei criteri a un recapito specifico pipeline:

    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 associazioni di ruoli. Per farlo, associa ruolo roles/clouddeploy.operator con quell'entità, poi, quando applichi (con setIamPolicy) specifichi la destinazione per cui viene concesso l'accesso.

L'accesso al target specifico offre all'entità la possibilità di aggiornare e elimineremo quel target.

  1. Crea un file dei criteri con quanto segue. associazione:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - group:cd_operators@example.com
    

    Nell'esempio precedente il ruolo viene concesso a un gruppo, ma puoi anche concederlo a un utente o a un account di servizio.

  2. Richiama 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 una destinazione specifica

Questa procedura presuppone che sia già in uso un criterio che vincola il ruolo a l'entità. Qui aggiungiamo una condizione che specifica il target:

  1. Crea un file dei 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 ruolo, condition prende 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 della 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 a cui l'entità cerca di promuovere. L'espressione lo confronta con il target a cui viene concesso l'accesso alla promozione per l'entità.

  2. 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 in a livello di progetto:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Concedi le autorizzazioni per approvare le implementazioni in una destinazione specifica

L'associazione in questa sezione concede un'autorizzazione all'entità per approvare le implementazioni per una pipeline e include una condizione che applica l'autorizzazione per prod obiettivo.

  1. Crea un file dei 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 ruolo, 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 della richiesta e restituisce un valore booleano.

    In questo caso, l'espressione viene valutata quando l'entità tenta di approvare per confermare che il target corrisponde al target dell'espressione.

    L'espressione utilizza l'attributo API clouddeploy.com/rolloutTarget, che è il target dell'implementazione e lo confronta con il target per cui all'entità riceve l'accesso per l'approvazione. La L'attributo clouddeploy.googleapis.com/rolloutTarget è l'unica API è l'attributo supportato da Cloud Deploy.

  2. 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 importazione, puoi farlo 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 l'autorizzazione dell'entità per promuovere le release per un pipeline, oltre a una condizione che specifica la finestra temporale durante la quale è attiva l'associazione.

  1. Crea un file dei 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, dove la chiave è expression e il valore è un'espressione CEL. L'espressione fa riferimento a un insieme di attributi contestuali della richiesta e restituisce un valore booleano. Questa espressione verifica che l'ora della richiesta è disponibile dal lunedì al venerdì.

    In questo caso, l'espressione viene valutata quando l'entità principale tenta di promuovere la release per confermare che il target della promozione corrisponda a quello nell'espressione.

  2. 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 in 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 all'entità per approvare le implementazioni e include una condizione che specifica il periodo di tempo durante il quale è attiva l'associazione

  1. Crea un file dei 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 ruolo, condition prende una coppia chiave-valore, in cui la chiave è expression e il valore è un'espressione CEL che fa riferimento a un insieme di attributi contestuali della richiesta e restituisce un valore booleano. Questa espressione verifica che l'ora della richiesta è disponibile dal lunedì al venerdì.

    In questo caso, l'espressione viene valutata quando l'entità tenta di approvare l'implementazione, per verificare che il target di implementazione corrisponda al target nella espressione di base.

  2. 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 in a livello di progetto:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Concedi le autorizzazioni per riprovare un job in base al tipo

L'associazione in questa sezione concede l'autorizzazione all'entità per riprovare un Job Cloud Deploy, in base al tipo di job

  1. Crea un file dei 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, dove la chiave è expression e il valore è un'espressione CEL. L'espressione fa riferimento a un insieme di attributi contestuali della richiesta e restituisce un valore booleano.

    In questo caso, l'espressione viene valutata quando l'entità tenta di riprovare per verificare che i tipi di prestazione corrispondano al tipo di prestazione nel espressione di base.

    L'espressione utilizza l'attributo API clouddeploy.com/jobType, che può essere deploy o verify.

  2. 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 in a livello di progetto:

    gcloud projects set-iam-policy PROJECT POLICY_FILE