Gestione di ruoli personalizzati con Deployment Manager

Sfondo

I ruoli personalizzati di Identity and Access Management ti consentono di concedere autorizzazioni granulari agli account utente e agli 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 man mano che diventano disponibili nuove autorizzazioni.

Cloud Deployment Manager può semplificare la configurazione e la gestione dei ruoli personalizzati. Puoi usare Deployment Manager per descrivere i ruoli di configurazione, che possono essere archiviati nel controllo del codice sorgente il sistema preferito. Insieme, Deployment Manager e il controllo del codice possono semplificare la creazione di "config-as-code" per:

  • Monitoraggio dei ruoli personalizzati man mano che cambiano nel tempo
  • Promozione dei ruoli personalizzati nelle fasi di lancio man mano che vengono testati e convalidati
  • Automazione del deployment dei ruoli nell'organizzazione

Prima di iniziare

  • Enable the IAM and Cloud Deployment Manager APIs.

    Enable the APIs

Scenari per la manutenzione di ruoli personalizzati mediante Deployment Manager

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

  • Controllo dell'accesso alle nuove autorizzazioni: disponi di un ruolo personalizzato che contiene autorizzazioni per un servizio Google Cloud. Il servizio aggiunge nuove funzionalità beta e espone nuove autorizzazioni. Il tuo ruolo personalizzato non erediteranno automaticamente queste nuove autorizzazioni: devono essere aggiunte manualmente. Fino a quando le nuove autorizzazioni non vengono aggiunte al ruolo personalizzato, gli utenti del tuo organizzazione non avrà accesso alle Funzionalità beta. Puoi utilizzare i file di configurazione e il controllo del codice sorgente di Deployment Manager per controllare le autorizzazioni esistenti, aggiornare i ruoli personalizzati in base alle necessità e mantenere una cronologia delle revisioni.
  • Gestione del ciclo di vita dei ruoli: ora hai un nuovo ruolo personalizzato è stata assegnata una fase di avvio ALPHA. Dopo aver testato e convalidato il ruolo personalizzato, puoi utilizzare Deployment Manager per aggiornarne la configurazione e passare alla fase BETA senza utilizzare la Console Google Cloud.
  • Informazioni sull'adozione dei ruoli personalizzati: avere più definizioni di ruoli personalizzati dell'organizzazione nel controllo del codice sorgente semplifica la condivisione, l'apprendimento dai modelli di utilizzo e l'applicazione dei controlli di accesso in più progetti.

Informazioni sui file di configurazione di Deployment Manager

Deployment Manager usa tre diversi tipi di file per descrivere un e deployment continuo. Di seguito è descritto ciascun tipo:

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

Per ulteriori informazioni su questi tipi, consulta Concetti fondamentali di Deployment Manager.

Prima di iniziare

Se non hai dimestichezza con Deployment Manager, completa innanzitutto Guida rapida. A questo punto, procedi nel seguente modo:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Deployment Manager and IAM APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Deployment Manager and IAM APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

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

Concedi le autorizzazioni all'account di servizio delle API di Google

Per mantenere i ruoli personalizzati utilizzando Deployment Manager, devi prima concedere le autorizzazioni appropriate per l'account di servizio delle 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 dei principali, individua il principale denominato Agente di servizio per le API di Google.

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

  4. Fai clic su Salva per applicare il ruolo.

Ora che all'account di servizio delle API di Google è stata concessa l'autorizzazione puoi eseguire il deployment di un ruolo personalizzato di esempio utilizzando con 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, prendi in considerazione 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à di un ruolo personalizzato denominato custom-role, che concede le autorizzazioni a iam.roles.get e iam.roles.list. Tieni presente che fa riferimento a un file .jinja due volte; 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 al fine di ridurre al minimo la duplicazione delle stesse proprietà in molti ruoli. I valori predefiniti vengono inseriti da un .schema se il file YAML corrispondente non specifica valori per ciascuna proprietà.

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

  1. Scarica i contenuti di questo repository GitHub sul tuo computer locale.
  2. In una finestra del terminale, accedi alla examples/v2/iam_custom_role/jinja nel repository scaricato. Contiene i parametri project_custom_role.yaml e i file Jinja associati.
  3. Esegui il seguente comando per eseguire il deployment del ruolo personalizzato di esempio, sostituendo il valore del segnaposto your-deployment-name con il nome del deployment che preferisci:

    gcloud deployment-manager deployments create \
       your-deployment-name --config project_custom_role.yaml
  4. Attendi il completamento dell'operazione. Vengono visualizzati 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 è andata a buon fine, viene 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 ruolo personalizzato in Deployment Manager:

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

    gcloud deployment-manager deployments describe your-deployment-name
  2. Viene visualizzata una descrizione del deployment, incluse 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 vedere le informazioni dettagliate sul ruolo personalizzato la configurazione recuperando il manifest del deployment. Nell'output da 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 sotto:

    gcloud deployment-manager manifests describe your-manifest-id \
        --deployment your-deployment-name
  4. Il file manifest contiene informazioni esaustive sul ruolo personalizzato del deployment, inclusi i contenuti non elaborati dell'origine project_custom_role.yaml e project_custom_role.jinja. In particolare, tieni presente il blocco resources nella parte inferiore del manifest, che riassume i dettagli del 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 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 essere simile allo screenshot seguente: