Accorder et révoquer l'accès

Chaque sujet (utilisateur ou groupe) suit un processus en deux étapes pour accéder au serveur de l'API Management et au cluster Kubernetes :

  • Accès au serveur de l'API Management : accordez à un sujet des autorisations dans le serveur de l'API Management à l'aide de ClusterRoleBinding ou RoleBinding à un ClusterRole prédéfini.

  • Accès au cluster Kubernetes : accordez un accès spécifique à un espace de noms ou un accès à l'ensemble du cluster.

    • Pour un accès spécifique à un espace de noms : pour accorder l'accès à l'espace de noms d'un projet spécifique dans le cluster, créez un ProjectRole et un ProjectRoleBinding correspondant. Ce processus propage un Role et un RoleBinding Kubernetes à un Namespace Kubernetes dans le cluster, ce qui correspond au Project auquel le ProjectRole et le ProjectRoleBinding sont associés.

    • Pour un accès à l'ensemble du cluster : pour accorder l'accès à tous les espaces de noms du cluster, créez un OrganizationRole et un OrganizationRoleBinding correspondant. Ce processus propage un ClusterRole et un ClusterRoleBinding Kubernetes à l'ensemble du cluster Kubernetes.

Les personas (IO, PA, AO) ne sont pas des rôles, mais des ensembles de rôles utilisateur mappés à des autorisations spécifiques et attribués à des utilisateurs individuels.

L'administrateur IAM de l'organisation et l'administrateur IAM du projet peuvent créer d'autres rôles et liaisons de rôle de projet pour accorder des autorisations supplémentaires spécifiques au projet. Toutefois, les administrateurs IAM de l'organisation peuvent créer des rôles et des liaisons de rôles de projet pour n'importe quel projet. En revanche, les administrateurs IAM de projet ne peuvent créer des rôles et des liaisons de rôle de projet que pour les projets auxquels ils sont autorisés à accéder.

Configurer les liaisons de rôle

Vous pouvez configurer des liaisons de rôle qui donnent aux membres de l'équipe accès aux ressources au niveau de l'organisation ou du projet.

Pour obtenir les autorisations nécessaires pour configurer les liaisons de rôle, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle d'administrateur IAM de l'organisation.

Pour attribuer un rôle à un membre autorisé, procédez comme suit :

Console

  1. Connectez-vous à la console GDC.
  2. Cliquez sur Sélectionner un projet pour sélectionner une organisation ou un projet.
    • Pour configurer des liaisons de rôle pour une organisation, sélectionnez-la.
    • Pour configurer des liaisons de rôle pour un projet, sélectionnez-le.
  3. Dans le menu de navigation, cliquez sur Identité et accès > Accès.
  4. Cliquez sur Ajouter un membre.
  5. Dans la liste Fournisseur d'identité, sélectionnez un fournisseur d'identité.
  6. Indiquez si vous souhaitez ajouter des utilisateurs individuels ou des groupes.
  7. Dans le champ Nom d'utilisateur ou alias de groupe, saisissez le nom d'utilisateur, l'adresse e-mail ou l'alias.
  8. Dans la liste Rôle, sélectionnez le rôle que vous souhaitez attribuer à l'utilisateur ou au groupe, par exemple Lecteur d'organisation au niveau de l'organisation ou Créateur de projet au niveau du projet.
  9. Cliquez sur Ajouter.

Le membre apparaît dans la liste Membre autorisé.

gdcloud

  1. Assurez-vous d'avoir installé la gdcloud CLI.

  2. Connectez-vous à l'aide de la commande gdcloud auth login pour vous authentifier auprès de votre fournisseur d'identité. Pour en savoir plus, consultez l'authentification gdcloud CLI.

  3. Configurez les liaisons de rôle.

    • Configurez des liaisons de rôle pour une organisation :

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

      Remplacez les variables suivantes :

      • USER_ACCOUNT : compte utilisateur auquel vous souhaitez attribuer le rôle. Cet indicateur accepte une adresse e-mail d'utilisateur avec le préfixe du fournisseur d'identité (user:idpprefix-user@example.com) ou un nom de compte de service avec le projet de compte de service (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE : ClusterRole, Role ou OrganizationRole pour lequel vous configurez la liaison de rôle.
      • ROLE : nom du rôle prédéfini ou personnalisé que vous souhaitez attribuer à l'utilisateur (par exemple, project-creator).
    • Configurez des liaisons de rôle pour un projet :

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

      Remplacez les variables suivantes :

      • PROJECT : nom du projet pour lequel vous configurez l'association de rôle.
      • USER_ACCOUNT : compte utilisateur auquel vous souhaitez attribuer le rôle. Cet indicateur accepte une adresse e-mail d'utilisateur avec le préfixe du fournisseur d'identité (user:idpprefix-user@example.com) ou un nom de compte de service avec le projet de compte de service (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE : Role ou ProjectRole pour lequel vous configurez la liaison de rôle.
      • ROLE : nom du rôle prédéfini ou personnalisé que vous souhaitez attribuer à l'utilisateur (par exemple, project-viewer).

API

  1. Exportez les identifiants utilisateur que vous utilisez :

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exportez le compte utilisateur auquel vous souhaitez attribuer le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com) :

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Exportez le nom du rôle dont l'utilisateur a besoin, par exemple project-creator. Pour en savoir plus sur le rôle, consultez Définitions des rôles.

    export ROLE_NAME=ROLE_NAME
    
  4. Attribuez un utilisateur à un ClusterRole, Role, ProjectRole ou OrganizationRole :

    • Attribuer un utilisateur à un ClusterRole :

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

      Dans les cas où un ClusterRole nécessite un RoleBinding au lieu d'un ClusterRoleBinding, consultez les définitions de rôle pour connaître le type de liaison dont le rôle a besoin et créez un RoleBinding dans l'espace de noms gpc-system :

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-system
      
    • Attribuer un utilisateur à un Role :

      1. Exportez l'espace de noms dans lequel la liaison doit être créée :

        export BINDING_NAMESPACE=BINDING_NAMESPACE
        
      2. Exécutez les commandes suivantes pour créer un RoleBinding :

        kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
        rolebinding ${USERNAME}-${ROLE_NAME}-binding \
        --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
        
    • Attribuer un utilisateur à un ProjectRole :

      1. Créez un fichier 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
        

        Remplacez les éléments suivants :

        • BINDING_NAME : nom de la liaison que l'utilisateur peut personnaliser (par exemple, user-project-creator-binding).
        • PROJECT_NAME : nom du projet auquel vous accordez le rôle.
        • ROLE_NAME : nom du ProjectRole que vous attribuez à l'utilisateur.
        • USER_KIND : type d'utilisateur, qui peut être User, Group ou ServiceAccount.
        • USERNAME : adresse e-mail de l'utilisateur auquel vous attribuez le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com). Cette adresse doit correspondre à la valeur USERNAME exportée.
      2. Appliquez le fichier projectrolebinding.yaml :

        kubectl create -f projectrolebinding.yaml
        
    • Attribuer un utilisateur à un OrganizationRole :

      1. Créez un fichier 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
        

        Remplacez les éléments suivants :

        • BINDING_NAME : nom de la liaison que l'utilisateur peut personnaliser (par exemple, user-organization-creator-binding).
        • ROLE_NAME : nom du OrganizationRole que vous attribuez à l'utilisateur.
        • USER_KIND : type d'utilisateur, qui peut être User, Group ou ServiceAccount.
        • USERNAME : adresse e-mail de l'utilisateur auquel vous attribuez le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com). Cette adresse doit correspondre à la valeur USERNAME exportée.
      2. Appliquez le fichier YAML organizationrolebinding.yaml :

        kubectl create -f organizationrolebinding.yaml
        

Supprimer des liaisons de rôle

Lorsque l'accès n'est plus nécessaire, supprimez un membre ainsi que les rôles, autorisations et accès qui lui sont associés.

Pour supprimer des membres, procédez comme suit :

Console

  1. Connectez-vous à la console GDC.
  2. Dans le menu de navigation, cliquez sur Identité et accès > Accès.
  3. Dans la liste Membres autorisés, sélectionnez un membre.
  4. Cliquez sur Supprimer le membre.
  5. Lorsque vous y êtes invité, cliquez sur Supprimer le membre pour confirmer.

gdcloud

  1. Assurez-vous d'avoir installé la gdcloud CLI.

  2. Connectez-vous à l'aide de la commande gdcloud auth login pour vous authentifier auprès de votre fournisseur d'identité. Pour en savoir plus, consultez l'authentification gdcloud CLI.

  3. Supprimez les liaisons de rôle.

    • Supprimez les liaisons de rôle pour une organisation :

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

      Remplacez les variables suivantes :

      • USER_ACCOUNT : compte utilisateur dont vous souhaitez supprimer le rôle. Cet indicateur accepte une adresse e-mail d'utilisateur avec le préfixe du fournisseur d'identité (user:idpprefix-user@example.com) ou un nom de compte de service avec le projet de compte de service (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE : ClusterRole, Role ou OrganizationRole pour lesquels vous supprimez la liaison de rôle.
      • ROLE : nom du rôle prédéfini ou personnalisé que vous souhaitez supprimer du compte utilisateur (par exemple, project-creator).
    • Supprimez les liaisons de rôle pour un projet :

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

      Remplacez les variables suivantes :

      • PROJECT : nom du projet à partir duquel vous supprimez l'association de rôle.
      • USER_ACCOUNT : compte utilisateur dont vous souhaitez supprimer le rôle. Cet indicateur accepte une adresse e-mail d'utilisateur avec le préfixe du fournisseur d'identité (user:idpprefix-user@example.com) ou un nom de compte de service avec le projet de compte de service (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE : Role ou ProjectRole pour lequel vous supprimez la liaison de rôle.
      • ROLE : nom du rôle prédéfini ou personnalisé que vous souhaitez supprimer du compte utilisateur (par exemple, project-viewer).

API

  1. Exportez les identifiants utilisateur que vous utilisez :

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exportez le compte utilisateur dont vous souhaitez supprimer le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com) :

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Exportez l'espace de noms dans lequel la liaison est supprimée :

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    
  4. Supprimez ClusterRoleBinding, RoleBinding, ProjectRoleBinding ou OrganizationRoleBinding pour révoquer l'autorisation accordée au compte utilisateur :

    • Supprimez ClusterRoleBinding d'un compte utilisateur :

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Supprimez RoleBinding d'un compte utilisateur :

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Supprimez ProjectRoleBinding d'un compte utilisateur :

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Supprimez OrganizationRoleBinding d'un compte utilisateur :

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

Révoquer l'accès d'un utilisateur

Si un membre quitte votre organisation ou votre équipe, vous pouvez révoquer son accès à l'appliance Google Distributed Cloud (GDC) isolée. Si vous révoquez l'accès d'un utilisateur, il est déconnecté de l'appliance GDC isolée et ses rôles et autorisations sont supprimés. Vous pouvez également lister l'activité et les sessions de l'utilisateur en indiquant leur heure de début et de fin.

Pour révoquer l'accès d'un utilisateur, procédez comme suit :

  1. Obtenez les autorisations nécessaires pour révoquer les utilisateurs. Demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Administrateur de session de l'organisation (org-session-admin).

  2. Révoquez l'accès de l'utilisateur :

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Remplacez USER_EMAIL par l'adresse e-mail de l'utilisateur dont vous souhaitez révoquer l'accès.

    Une fois la commande exécutée, un résultat semblable à celui-ci s'affiche : Cet exemple révoque l'accès de l'utilisateur ariel@example.com :

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

    Dans cet exemple, la variable NUMBER fait référence au nombre de sessions actives de l'utilisateur.

  3. Confirmez que vous avez révoqué l'accès de l'utilisateur en exécutant à nouveau la commande gdcloud admin auth revoke. Si l'opération réussit, vous obtenez le résultat suivant :

    No sessions found for account: ariel@example.com
    

Lister tous les utilisateurs révoqués

Pour afficher tous les utilisateurs révoqués, ainsi que leurs activités et leurs sessions :

  • Répertoriez tous les utilisateurs révoqués, en indiquant leur heure de début et de fin :

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

    Si l'opération réussit, vous obtenez un résultat semblable à celui-ci :

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