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 ai service account. 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 utilizzare Deployment Manager per descrivere i ruoli utilizzando file di configurazione, che possono poi essere archiviati nel sistema di controllo del codice sorgente che preferisci. Deployment Manager e il controllo del codice sorgente possono semplificare la creazione di "config-as-code" per:

  • Monitoraggio dei ruoli personalizzati nel tempo
  • Promozione dei ruoli personalizzati nelle fasi di lancio man mano che vengono testati e convalidati
  • Automatizzare la modalità di implementazione dei ruoli in tutta l'organizzazione

Prima di iniziare

  • Enable the IAM and Cloud Deployment Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Scenari per la gestione di ruoli personalizzati utilizzando Deployment Manager

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

  • Controllare l'accesso alle nuove autorizzazioni:hai un ruolo personalizzato che contiene autorizzazioni per un servizio Google Cloud . Il servizio aggiunge nuove funzionalità beta ed espone nuove autorizzazioni. Il ruolo personalizzato non erediterà automaticamente queste nuove autorizzazioni, che devono essere aggiunte manualmente. Finché le nuove autorizzazioni non vengono aggiunte al tuo 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 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: hai un nuovo ruolo personalizzato a cui hai assegnato una fase di lancio ALPHA. Dopo aver testato e convalidato il ruolo personalizzato, puoi utilizzare Deployment Manager per aggiornare la configurazione del ruolo personalizzato e portarlo alla fase BETA senza utilizzare la consoleGoogle Cloud .
  • Comprendere l'adozione dei ruoli personalizzati:se hai più definizioni di ruoli personalizzati della tua organizzazione nel controllo del codice sorgente, è più facile condividere, imparare dai modelli di utilizzo e applicare i controlli dell'accesso in 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 di 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, esistono schemi per i ruoli personalizzati a livello di progetto e organizzazione.
  • Modelli, ovvero file Jinja o Python che migliorano le configurazioni consentendoti di suddividerle in parti riutilizzabili. Per i ruoli personalizzati IAM, sono disponibili due modelli forniti: uno per i ruoli personalizzati a livello di progetto e uno per i ruoli personalizzati a livello di organizzazione.

Per saperne di più su questi tipi, consulta Nozioni di base di Deployment Manager.

Prima di iniziare

Se non hai familiarità con Deployment Manager, completa prima la guida rapida. Poi segui i passaggi riportati di seguito:

    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.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Deployment Manager and IAM APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Deployment Manager and IAM APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

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

    Concedi le autorizzazioni al account di servizio delle API di Google

    Per gestire i ruoli personalizzati utilizzando Deployment Manager, devi prima concedere le autorizzazioni appropriate alaccount di serviziot 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 principal, individua quello con il nome Agente di servizio API di Google.

    3. Per modificare i ruoli del 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 al account di servizio delle API di Google è stata concessa l'autorizzazione per gestire i ruoli personalizzati, puoi implementare un ruolo personalizzato di esempio utilizzando Deployment Manager.

    Esegui il deployment dei ruoli personalizzati nel tuo 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à di un ruolo personalizzato denominato custom-role, che concede 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 per 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 sul tuo computer 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 il seguente 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 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  []
      

    Visualizzare il ruolo personalizzato di cui è stato 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. Vedrai una descrizione del deployment, incluse informazioni complete sul suo 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 del passaggio 2 riportato sopra, prendi nota dell'ID manifest. Copia questo ID, incluso il prefisso manifest-, e utilizzalo per sostituire il valore segnaposto di seguito:

      gcloud deployment-manager manifests describe your-manifest-id \
          --deployment your-deployment-name
    4. Il manifest contiene informazioni esaustive sul deployment del ruolo personalizzato, inclusi i contenuti non elaborati dei file di origine project_custom_role.yaml e project_custom_role.jinja. In particolare, prendi nota del blocco resources vicino alla 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 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 sul nome del ruolo personalizzato appena creato nell'elenco. Dovrebbe avere un aspetto simile a quello dello screenshot seguente: