Gestione di ruoli personalizzati con Deployment Manager

Premesse

I ruoli personalizzati di Identity and Access Management consentono di concedere autorizzazioni granulari ad account utente e account di servizio. A differenza dei ruoli predefiniti, che vengono gestiti da Google e aggiornati di conseguenza, i ruoli personalizzati vengono gestiti dalla tua organizzazione non appena sono disponibili nuove autorizzazioni.

Cloud Deployment Manager può semplificare la configurazione e la manutenzione dei ruoli personalizzati. Puoi utilizzare Deployment Manager per descrivere i ruoli mediante i file di configurazione, che possono essere poi inseriti nel sistema di controllo del codice sorgente che preferisci. Insieme, Deployment Manager e il controllo del codice sorgente possono semplificare la creazione di "config-as-code" per:

  • Monitorare i ruoli personalizzati che cambiano nel tempo
  • Promozione di ruoli personalizzati attraverso fasi di lancio man mano che vengono testati e convalidati
  • Automazione del deployment dei ruoli in tutta l'organizzazione

Prima di iniziare

  • Abilita le API IAM and Cloud Deployment Manager.

    Abilita le API

Scenari per la gestione di ruoli personalizzati utilizzando Deployment Manager

Considera i seguenti scenari che dimostrano i vantaggi dell'utilizzo di Deployment Manager per mantenere i ruoli personalizzati:

  • Controllo dell'accesso alle nuove autorizzazioni: hai un ruolo personalizzato che contiene le autorizzazioni per un servizio Google Cloud. Il servizio aggiunge nuove funzionalità beta ed espone nuove autorizzazioni. Il tuo ruolo personalizzato non erediterà automaticamente queste nuove autorizzazioni, che dovranno essere aggiunte manualmente. Fino a quando non verranno aggiunte le nuove autorizzazioni al ruolo personalizzato, gli utenti della tua organizzazione non avranno accesso alle funzionalità beta. Puoi utilizzare i file di configurazione e il controllo del codice sorgente di Deployment Manager per facilitare il controllo delle autorizzazioni esistenti, l'aggiornamento dei ruoli personalizzati in base alle esigenze e il mantenimento di una cronologia delle revisioni.
  • Gestione del ciclo di vita dei ruoli: hai un nuovo ruolo personalizzato a cui hai assegnato una fase di lancio ALPHA. Dopo che il ruolo personalizzato è stato testato e convalidato, puoi utilizzare Deployment Manager per aggiornare la configurazione del ruolo personalizzato e passare alla fase BETA senza utilizzare la console Google Cloud.
  • Informazioni sull'adozione dei ruoli personalizzati: disporre di un maggior numero di definizioni di ruoli personalizzati dell'organizzazione nel controllo del codice sorgente semplifica la condivisione, l'apprendimento dai pattern di utilizzo e l'applicazione dei controlli dell'accesso su più progetti.

Informazioni sui file di configurazione di Deployment Manager

Deployment Manager utilizza tre diversi tipi di file per descrivere un deployment. Ogni tipo è descritto di seguito:

  • Le configurazioni sono file YAML che descrivono le risorse e le relative proprietà. Per i ruoli personalizzati Identity and Access Management (IAM), ogni file YAML specifica tutte le proprietà di uno o più ruoli personalizzati, come nome, descrizione e autorizzazioni.
  • Gli schemi specificano tutte le proprietà possibili per una determinata risorsa e i relativi valori predefiniti. Per i ruoli personalizzati IAM sono disponibili schemi per i ruoli personalizzati a livello di progetto e di organizzazione.
  • Modelli, ovvero file Jinja o Python che migliorano le configurazioni consentendoti di suddividere una configurazione in parti riutilizzabili. Per i ruoli IAM personalizzati sono disponibili due modelli: uno per i ruoli personalizzati a livello di progetto e uno per i ruoli personalizzati a livello di organizzazione.

Per ulteriori informazioni su questi tipi, consulta Deployment Manager Fundamentals.

Prima di iniziare

Se non hai dimestichezza con Deployment Manager, completa innanzitutto la guida rapida. Quindi, procedi nel seguente modo:

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Deployment Manager and IAM.

    Abilita le API

  5. Installa Google Cloud CLI.
  6. Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:

    gcloud init
  7. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  8. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API Deployment Manager and IAM.

    Abilita le API

  10. Installa Google Cloud CLI.
  11. Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:

    gcloud init

Una volta completati questi passaggi preliminari, puoi iniziare a utilizzare Deployment Manager con IAM per mantenere i ruoli personalizzati.

Concedi le autorizzazioni all'account di servizio API di Google

Per mantenere i ruoli personalizzati utilizzando Deployment Manager, devi prima concedere le autorizzazioni appropriate all'account di servizio API di Google. Questo account viene creato per impostazione predefinita per ogni organizzazione e progetto.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Nell'elenco delle entità, individua quella con il nome agente di servizio API di Google.

  3. Per modificare i ruoli dell'account di servizio, fai clic sul pulsante Modifica , quindi aggiungi il ruolo Ruoli > Amministratore ruoli.

  4. Fai clic su Salva per applicare il ruolo.

Ora che all'account di servizio API di Google è stata concessa l'autorizzazione per gestire ruoli personalizzati, puoi eseguire il deployment di un ruolo personalizzato di esempio utilizzando Deployment Manager.

Esegui il deployment di ruoli personalizzati nel progetto

Come descritto nella sezione precedente, Deployment Manager utilizza una combinazione di file di configurazione per descrivere un deployment. Per IAM, considera i seguenti due file di esempio per i ruoli personalizzati di un progetto:

project_custom_role.yaml

imports:
- path: project_custom_role.jinja

resources:
- name: custom-role
  type: project_custom_role.jinja
  properties:
    roleId: myCustomRole
    title: My Title
    description: My description.
    includedPermissions:
    - iam.roles.get
    - iam.roles.list

Questo file YAML specifica le proprietà relative a un ruolo personalizzato denominato custom-role, che concede le autorizzazioni a iam.roles.get e iam.roles.list. Tieni presente che fa riferimento due volte a un file .jinja; questi riferimenti utilizzano i valori forniti dal modello Jinja come descritto di seguito.

project_custom_role.jinja

# Copyright 2017 Google LLC. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#     http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: custom-role
  type: gcp-types/iam-v1:projects.roles
  properties:
    parent: projects/{{ env["project"] }}

    roleId: {{ properties["roleId"] }}

    role:
      title: {{ properties["title"] }}

      description: {{ properties["description"] }}

      stage: {{ properties["stage"] }}

      includedPermissions: {{ properties["includedPermissions"] }}

Questo file Jinja fornisce un modello per un ruolo personalizzato in modo da ridurre al minimo la duplicazione delle stesse proprietà in molti ruoli. I valori predefiniti vengono inseriti da un file .schema se il file YAML corrispondente non specifica valori per ogni proprietà.

Per eseguire il deployment di questo ruolo personalizzato con Deployment Manager:

  1. Scarica i contenuti di questo repository GitHub sulla tua macchina locale.
  2. In una finestra del terminale, vai alla directory examples/v2/iam_custom_role/jinja nel repository scaricato. Contiene il file project_custom_role.yaml e i file Jinja associati.
  3. Esegui questo comando per eseguire il deployment del ruolo personalizzato di esempio, sostituendo il valore segnaposto your-deployment-name con un nome di deployment a tua scelta:

    gcloud deployment-manager deployments create \
       your-deployment-name --config project_custom_role.yaml
    
  4. Attendi il completamento dell'operazione. Vengono mostrati l'impronta del deployment e un indicatore di avanzamento:

    The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q==
    Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
    
  5. Se l'operazione è riuscita, verrà visualizzato il seguente messaggio di stato:

    Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully.
    NAME         TYPE                             STATE      ERRORS  INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED  []
    

Visualizza il ruolo personalizzato di cui hai eseguito il deployment

Per visualizzare il tuo ruolo personalizzato in Deployment Manager:

  1. In una finestra del terminale, esegui questo comando:

    gcloud deployment-manager deployments describe your-deployment-name
    
  2. Verrà visualizzata una descrizione del deployment, comprese informazioni complete sullo stato, eventuali errori e altro ancora.

    fingerprint: oaJoGesEFYvsAldP2bm5jQ==
    id: '3222872306422524501'
    insertTime: '2018-01-29T13:40:10.822-08:00'
    manifest: manifest-1517262010855
    name: your-deployment-name
    operation:
    endTime: '2018-01-29T13:40:26.500-08:00'
    name: operation-1517262010573-563f1172be0c9-ce5f0242-239fe1af
    operationType: insert
    progress: 100
    startTime: '2018-01-29T13:40:11.535-08:00'
    status: DONE
    user: id-7201362145@my-example-project.iam.gserviceaccount.com
    NAME         TYPE                             STATE      INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED
    
  3. Puoi anche visualizzare le informazioni dettagliate sulla configurazione del ruolo personalizzato recuperando il manifest del deployment. Nell'output del comando describe nel passaggio 2 precedente, prendi nota dell'ID manifest. Copia questo ID, incluso il prefisso manifest-, e utilizzalo per sostituire il valore segnaposto riportato di seguito:

    gcloud deployment-manager manifests describe your-manifest-id \
        --deployment your-deployment-name
    
  4. Il file manifest contiene informazioni esaustive sul deployment dei ruoli personalizzati, inclusi i contenuti non elaborati dei file di origine project_custom_role.yaml e project_custom_role.jinja. In particolare, nota il blocco resources nella parte inferiore del manifest, che riassume i dettagli sul ruolo personalizzato:

    ...
    resources:
    - name: custom-role
      properties:
        description: My description.
        includedPermissions:
        - iam.roles.get
        - iam.roles.list
        roleId: aCustomRole
        stage: ALPHA
        title: My Title
      resources:
      - name: custom-role
        type: gcp-types/iam-v1:projects.roles
      type: project_custom_role.jinja
    ...
    

Per visualizzare il tuo ruolo personalizzato nella console Google Cloud:

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Seleziona un progetto e fai clic su Apri.

  3. Nel menu a sinistra, fai clic su Ruoli.

  4. Fai clic nell'elenco sul nome del ruolo personalizzato appena creato. Dovrebbe avere un aspetto simile allo screenshot seguente: