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 Management:concedi a un soggetto con autorizzazioni nel server API Management utilizzando ClusterRoleBinding o RoleBinding 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.

Le persone (IO, PA, AO) non sono ruoli, ma raccolte di ruoli utente mappati su autorizzazioni specifiche e assegnati a singoli utenti.

Sia l'amministratore IAM dell'organizzazione sia l'amministratore IAM del progetto possono creare altri ruoli di progetto e associazioni di ruoli di progetto per concedere ulteriori autorizzazioni 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.

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 i binding dei 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 Visualizzatore organizzazione a livello di organizzazione o Creatore progetto 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 ulteriori informazioni, 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 del account di servizio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: il ClusterRole, Role o OrganizationRole per cui stai configurando l'associazione di ruoli.
      • 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 ruolo.
      • 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 del 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 credenziali utente che utilizzi:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Esporta l'account utente a cui vuoi assegnare il ruolo, incluso il prefisso del provider di identità (ad esempio idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Esporta il nome del ruolo di cui ha bisogno l'utente, ad esempio project-creator. Per informazioni dettagliate sul ruolo, consulta Definizioni dei ruoli.

    export ROLE_NAME=ROLE_NAME
    
  4. Assegna un utente a un ClusterRole, Role, ProjectRole o OrganizationRole:

    • Assegnare un utente a un ClusterRole:

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

      Per i casi in cui un ClusterRole richiede un RoleBinding anziché un ClusterRoleBinding, consulta le definizioni dei ruoli per scoprire il tipo di binding necessario per 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=${USERNAME} --namespace=gpc-system
      
    • Assegnare 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 i seguenti comandi per creare un RoleBinding:

        kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
        rolebinding ${USERNAME}-${ROLE_NAME}-binding \
        --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
        
    • Assegnare 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: USERNAME
        

        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.
        • USERNAME: l'indirizzo email dell'utente a cui stai assegnando il ruolo, incluso il prefisso del provider di identità (ad esempio idpprefix-paul@example.com). Questo valore deve corrispondere a USERNAME esportato.
      2. Applica il file projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Assegnare 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: USERNAME
        

        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.
        • USERNAME: l'indirizzo email dell'utente a cui stai assegnando il ruolo, incluso il prefisso del provider di identità (ad esempio idpprefix-paul@example.com). Questo valore deve corrispondere a USERNAME esportato.
      2. Applica il file YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Rimuovi associazioni di ruolo

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 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 ulteriori informazioni, consulta l'autenticazione di gcloud CLI.

  3. Rimuovi le associazioni di ruolo.

    • Rimuovi le associazioni di ruolo 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 del 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 di ruolo 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 del 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 credenziali utente che utilizzi:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Esporta l'account utente da cui vuoi rimuovere il ruolo, incluso il prefisso del provider di identità (ad esempio idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Esporta lo spazio dei nomi in cui viene rimossa l'associazione:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    
  4. 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 air-gapped Google Distributed Cloud (GDC). La revoca dell'accesso di un utente lo disconnette dall'appliance GDC air-gapped e rimuove i suoi ruoli e le sue autorizzazioni. Puoi anche elencare l'attività e le sessioni dell'utente in base all'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