Concedere e revocare l'accesso

Ogni soggetto, ovvero un utente o un gruppo, segue una procedura in due passaggi per ottenere l'accesso al server API di gestione e al cluster Kubernetes:

  • Accesso al server API di gestione:concedi a un soggetto le autorizzazioni nel server API di gestione utilizzando ClusterRoleBinding o RoleBinding a un ClusterRole predefinito.

  • Accesso al cluster Kubernetes: concedi l'accesso specifico per lo spazio dei nomi o l'accesso a livello di cluster.

    • Per l'accesso specifico allo spazio dei nomi:per concedere l'accesso allo spazio dei nomi di un progetto specifico all'interno del cluster, crea un ProjectRole e un ProjectRoleBinding corrispondente. Questo processo propaga un Role e un RoleBinding di Kubernetes a un Namespace di Kubernetes nel cluster, che corrisponde al Project a cui sono associati il ProjectRole e il ProjectRoleBinding.

    • Per l'accesso a livello di cluster:per concedere l'accesso a tutti gli spazi dei nomi all'interno del cluster, crea un OrganizationRole e un OrganizationRoleBinding corrispondente. Questo processo propaga un Kubernetes ClusterRole e ClusterRoleBinding all'intero cluster Kubernetes.

Questa pagina è rivolta ai segmenti di pubblico all'interno del gruppo di amministratori della piattaforma che gestiscono le autorizzazioni all'interno della propria organizzazione.

Sia l'amministratore IAM dell'organizzazione sia l'amministratore IAM del progetto possono creare altri ruoli progetto e associazioni di ruoli progetto per concedere autorizzazioni aggiuntive specifiche del progetto. Tuttavia, gli amministratori IAM dell'organizzazione possono creare ruoli di progetto e associazioni di ruoli di progetto per qualsiasi progetto. D'altra parte, gli amministratori IAM progetto possono creare solo ruoli progetto e associazioni di ruoli progetto per i progetti a cui hanno l'autorizzazione di accesso.

Prima di iniziare

Prima di gestire i binding dei ruoli o revocare l'accesso, devi richiedere le autorizzazioni necessarie e preparare l'ambiente. I ruoli specifici richiesti dipendono dalla gestione dei binding dei ruoli o dalla revoca dell'accesso utente.

Richiedi ruoli IAM

Contatta l'amministratore IAM dell'organizzazione per richiedere i ruoli in base alle attività che devi svolgere:

  • Amministratore IAM organizzazione (organization-iam-admin): crea, aggiorna ed elimina le associazioni di ruoli a livello di organizzazione e progetto.
  • Amministratore sessioni org (org-session-admin): revoca le sessioni attive di un utente e l'accesso all'interno di una zona specifica.

prepara l'ambiente

Per utilizzare gli strumenti a riga di comando per gestire le associazioni di ruoli o revocare l'accesso, completa la seguente configurazione.

Configurare le associazioni di ruoli

Puoi configurare i binding dei ruoli che consentono ai membri del team di accedere alle risorse a livello di organizzazione o progetto.

Per ottenere le autorizzazioni necessarie per configurare le associazioni di ruoli, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore IAM dell'organizzazione.

Per assegnare un ruolo a un membro autorizzato:

Console

  1. Accedi alla console GDC.
  2. Fai clic su Seleziona progetto per selezionare un'organizzazione o un progetto.
    • Per configurare i binding dei ruoli per un'organizzazione, seleziona un'organizzazione.
    • Per configurare i binding dei ruoli per un progetto, seleziona un progetto.
  3. Nel menu di navigazione, fai clic su Identity and Access Management > Accesso.
  4. Fai clic su Aggiungi membro.
  5. Nell'elenco Provider di identità, seleziona un provider di identità.
  6. Scegli se aggiungere singoli utenti o gruppi.
  7. Nel campo Nome utente o alias del gruppo, inserisci il nome utente, l'indirizzo email o l'alias.
  8. Nell'elenco Ruolo, seleziona il ruolo che vuoi assegnare all'utente o al gruppo, ad esempio Organization Viewer a livello di organizzazione o Project Creator a livello di progetto.
  9. Fai clic su Aggiungi.

Il membro viene visualizzato nell'elenco Membri autorizzati.

gdcloud

  1. Assicurati di aver installato gcloud CLI.

  2. Accedi utilizzando il comando gdcloud auth login per autenticarti con il tuo provider di identità. Per saperne di più, consulta l'autenticazione di gcloud CLI.

  3. Configura le associazioni di ruoli.

    • Configura i binding dei ruoli per un'organizzazione:

      gdcloud organizations add-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Sostituisci le seguenti variabili:

      • USER_ACCOUNT: l'account utente a cui vuoi concedere il ruolo. Questo flag accetta un indirizzo email utente con il prefisso del provider di identità (user:idpprefix-user@example.com) o un nome account di servizio con il progetto account di servizio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: il ClusterRole, Role o OrganizationRole per cui stai configurando l'associazione di ruolo.
      • ROLE: il nome del ruolo predefinito o personalizzato che vuoi assegnare all'utente (ad esempio project-creator).
    • Configura le associazioni di ruoli per un progetto:

      gdcloud projects add-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Sostituisci le seguenti variabili:

      • PROJECT: il nome del progetto per cui stai configurando l'associazione di ruoli.
      • USER_ACCOUNT: l'account utente a cui vuoi concedere il ruolo. Questo flag accetta un indirizzo email utente con il prefisso del provider di identità (user:idpprefix-user@example.com) o un nome account di servizio con il progetto account di servizio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: il Role o ProjectRole per cui stai configurando l'associazione dei ruoli.
      • ROLE: il nome del ruolo predefinito o personalizzato che vuoi assegnare all'utente (ad esempio project-viewer).

API

  1. Esporta le variabili di ambiente per l'associazione di ruolo:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    export USERNAME=IDP_PREFIX-USERNAME
    export ROLE_NAME=ROLE_NAME
    export USER_EMAIL=IDP_PREFIX-USER_EMAIL
    

    Sostituisci quanto segue:

    • YOUR_IAM_ADMIN_KUBECONFIG: il percorso del file kubeconfig per l'amministratore IAM.
    • IDP_PREFIX: il prefisso del provider di identità.
    • USERNAME: la parte del nome utente dell'indirizzo email dell'utente prima del simbolo @ (ad esempio paul da paul@example.com).
    • ROLE_NAME: il nome del ruolo di cui l'utente ha bisogno (ad esempio project-creator). Per informazioni dettagliate sul ruolo, consulta Definizioni dei ruoli.
    • USER_EMAIL: l'indirizzo email dell'account utente a cui vuoi assegnare il ruolo (ad esempio paul@example.com).
  2. Assegna un utente a un ClusterRole, Role, ProjectRole o OrganizationRole:

    • Assegna un utente a un ClusterRole:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USER_EMAIL}
      

      Per i casi in cui un ClusterRole richiede un RoleBinding anziché un ClusterRoleBinding, consulta le Definizioni dei ruoli per scoprire di quale tipo di binding ha bisogno il ruolo e crea un RoleBinding nello spazio dei nomi gpc-system:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USER_EMAIL} --namespace=gpc-system
      
    • Assegna un utente a un Role:

      1. Esporta lo spazio dei nomi in cui deve essere creato il binding:

        export BINDING_NAMESPACE=BINDING_NAMESPACE
        
      2. Esegui questi comandi per creare un RoleBinding:

        kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
        rolebinding ${USERNAME}-${ROLE_NAME}-binding \
        --role=${ROLE_NAME} --user=${USER_EMAIL} --namespace=${BINDING_NAMESPACE}
        
    • Assegna un utente a un ProjectRole:

      1. Crea un file projectrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: ProjectRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: PROJECT_NAME
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: ProjectRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: IDP_PREFIX-USER_EMAIL
        

        Sostituisci quanto segue:

        • BINDING_NAME: un nome per l'associazione che l'utente può personalizzare (ad esempio user-project-creator-binding).
        • PROJECT_NAME: il nome del progetto a cui stai concedendo il ruolo.
        • ROLE_NAME: il nome del ProjectRole che stai assegnando all'utente.
        • USER_KIND: il tipo di utente, che può essere User, Group o ServiceAccount.
        • IDP_PREFIX: il prefisso del provider di identità.
        • USER_EMAIL: l'indirizzo email dell'account utente a cui vuoi assegnare il ruolo (ad esempio paul@example.com).
      2. Applica il file projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Assegna un utente a un OrganizationRole:

      1. Crea un file organizationrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: OrganizationRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: gpc-system
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: OrganizationRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: IDP_PREFIX-USER_EMAIL
        

        Sostituisci quanto segue:

        • BINDING_NAME: un nome per l'associazione che l'utente può personalizzare (ad esempio user-organization-creator-binding).
        • ROLE_NAME: il nome del OrganizationRole che stai assegnando all'utente.
        • USER_KIND: il tipo di utente, che può essere User, Group o ServiceAccount.
        • IDP_PREFIX: il prefisso del provider di identità.
        • USER_EMAIL: l'indirizzo email dell'account utente a cui vuoi assegnare il ruolo (ad esempio paul@example.com).
      2. Applica il file YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Rimuovi le associazioni di ruoli

Quando l'accesso non è più necessario, rimuovi un membro e i relativi ruoli, autorizzazioni e accesso.

Per rimuovere i membri, segui questi passaggi:

Console

  1. Accedi alla console GDC.
  2. Nel menu di navigazione, fai clic su Identity and Access Management > Accesso.
  3. Nell'elenco Membri autorizzati, seleziona un membro.
  4. Fai clic su Rimuovi membro.
  5. Quando ti viene richiesto, fai clic su Rimuovi membro per confermare.

gdcloud

  1. Assicurati di aver installato gcloud CLI.

  2. Accedi utilizzando il comando gdcloud auth login per autenticarti con il tuo provider di identità. Per saperne di più, consulta l'autenticazione di gcloud CLI.

  3. Rimuovi le associazioni dei ruoli.

    • Rimuovere le associazioni di ruoli per un'organizzazione:

      gdcloud organizations remove-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Sostituisci le seguenti variabili:

      • USER_ACCOUNT: l'account utente da cui vuoi rimuovere il ruolo. Questo flag accetta un indirizzo email utente con il prefisso del provider di identità (user:idpprefix-user@example.com) o un nome account di servizio con il progetto account di servizio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: il ClusterRole, Role o OrganizationRole per cui stai rimuovendo l'associazione del ruolo.
      • ROLE: il nome del ruolo predefinito o personalizzato che vuoi rimuovere dall'account utente (ad esempio project-creator).
    • Rimuovi le associazioni dei ruoli per un progetto:

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Sostituisci le seguenti variabili:

      • PROJECT: il nome del progetto da cui stai rimuovendo l'associazione di ruolo.
      • USER_ACCOUNT: l'account utente da cui vuoi rimuovere il ruolo. Questo flag accetta un indirizzo email utente con il prefisso del provider di identità (user:idpprefix-user@example.com) o un nome account di servizio con il progetto account di servizio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: il Role o ProjectRole per cui stai rimuovendo l'associazione di ruolo.
      • ROLE: il nome del ruolo predefinito o personalizzato che vuoi rimuovere dall'account utente (ad esempio project-viewer).

API

  1. Esporta le variabili di ambiente per l'associazione di ruolo:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    export USERNAME=IDP_PREFIX-USERNAME
    export BINDING_NAMESPACE=BINDING_NAMESPACE
    

    Sostituisci quanto segue:

    • YOUR_IAM_ADMIN_KUBECONFIG: il percorso del file kubeconfig per l'amministratore IAM.
    • IDP_PREFIX: il prefisso del provider di identità.
    • USERNAME: la parte del nome utente dell'indirizzo email dell'utente prima del simbolo @ (ad esempio paul da paul@example.com).
    • BINDING_NAMESPACE: lo spazio dei nomi in cui viene rimosso il binding.
  2. Elimina ClusterRoleBinding, RoleBinding, ProjectRoleBinding o OrganizationRoleBinding per revocare l'autorizzazione concessa all'account utente:

    • Rimuovi ClusterRoleBinding da un account utente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Rimuovi RoleBinding da un account utente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Rimuovi ProjectRoleBinding da un account utente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Rimuovi OrganizationRoleBinding da un account utente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete organizationrolebinding ${USERNAME}-pa \
      --namespace=gpc-system
      

Revocare l'accesso utente

Se un membro lascia la tua organizzazione o il tuo team, puoi revocare il suo accesso all'appliance con air gap di Google Distributed Cloud (GDC). La revoca dell'accesso di un utente lo disconnette dall'appliance GDC con air gap e rimuove i suoi ruoli e le sue autorizzazioni. Puoi anche elencare l'attività e le sessioni dell'utente dall'ora di inizio e di fine.

Per revocare l'accesso di un utente:

  1. Ottieni le autorizzazioni necessarie per revocare gli utenti. Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore sessione organizzazione (org-session-admin).

  2. Revoca l'accesso dell'utente:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Sostituisci USER_EMAIL con l'email dell'utente a cui revocare l'accesso.

    Dopo aver eseguito il comando, visualizzi un output simile al seguente. Questo esempio revoca l'accesso all'utente ariel@example.com:

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    In questo esempio, la variabile NUMBER si riferisce al numero di sessioni attive dell'utente.

  3. Conferma di aver revocato l'accesso dell'utente eseguendo di nuovo il comando gdcloud admin auth revoke. Se l'operazione ha esito positivo, viene visualizzato quanto segue:

    No sessions found for account: ariel@example.com
    

Elenca tutti gli utenti revocati

Per visualizzare tutti gli utenti revocati e le loro attività e sessioni:

  • Elenca tutti gli utenti revocati dall'ora di inizio e di fine:

    gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"
    

    Se l'operazione va a buon fine, viene visualizzato un output simile al seguente:

    account,identity_provider,creation_time,expiration_time
    ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52