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 RoleBinding Kubernetes à un Namespace Kubernetes dans le cluster, qui correspond au Project auquel le ProjectRole et 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 Kubernetes ClusterRole et ClusterRoleBinding à l'ensemble du cluster Kubernetes.

Cette page s'adresse aux membres du groupe d'administrateurs de la plate-forme qui gèrent les autorisations au sein de leur organisation.

L'administrateur IAM de l'organisation et l'administrateur IAM du projet peuvent créer d'autres rôles de projet 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 de projet et des liaisons de rôle de projet pour n'importe quel projet. En revanche, les administrateurs IAM du projet ne peuvent créer des rôles de projet et des liaisons de rôle de projet que pour les projets auxquels ils sont autorisés à accéder.

Avant de commencer

Avant de gérer les liaisons de rôle ou de révoquer l'accès, vous devez demander les autorisations nécessaires et préparer votre environnement. Les rôles spécifiques requis varient selon que vous gérez les liaisons de rôle ou que vous révoquez l'accès utilisateur.

Demander des rôles IAM

Contactez votre administrateur IAM de l'organisation pour demander les rôles en fonction des tâches que vous devez effectuer :

  • Administrateur IAM de l'organisation (organization-iam-admin) : créez, mettez à jour et supprimez des liaisons de rôle au niveau de l'organisation et du projet.
  • Administrateur de session de l'organisation (org-session-admin) : révoquez les sessions actives et l'accès d'un utilisateur dans une zone spécifique.

Préparer votre environnement

Pour utiliser les outils de ligne de commande afin de gérer les liaisons de rôle ou de révoquer l'accès, procédez à la configuration suivante.

Configurer des liaisons de rôle

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

Pour obtenir les autorisations nécessaires à la configuration des liaisons de rôle, demandez à votre administrateur IAM de l'organisation de vous attribuer 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-en une.
    • Pour configurer des liaisons de rôle pour un projet, sélectionnez-en un.
  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 ou des groupes individuels.
  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 de l'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 que la CLI gdcloud est installée.

  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 Authentification de la CLI gdcloud.

  3. Configurez des 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 accorder 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 la liaison de rôle.
      • USER_ACCOUNT: compte utilisateur auquel vous souhaitez accorder 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 pour lequel 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 :

    • Attribuez un utilisateur à un ClusterRole :

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

      Si un ClusterRole nécessite un RoleBinding au lieu d'un ClusterRoleBinding, consultez les définitions de rôle pour savoir quel type de liaison le rôle nécessite, puis 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
      
    • Attribuez 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}
        
    • Attribuez 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 pour lequel vous attribuez le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com). Cette valeur doit correspondre à la valeur USERNAME exportée.
      2. Appliquez le fichier projectrolebinding.yaml :

        kubectl create -f projectrolebinding.yaml
        
    • Attribuez 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 pour lequel vous attribuez le rôle, y compris le préfixe du fournisseur d'identité (par exemple, idpprefix-paul@example.com). Cette valeur 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 ses rôles, autorisations et accès 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 que la CLI gdcloud est installée.

  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 Authentification de la CLI gdcloud.

  3. Supprimez des liaisons de rôle.

    • Supprimez des 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 pour lequel 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 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-creator).
    • Supprimez des 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 pour lequel vous supprimez la liaison de rôle.
      • USER_ACCOUNT: compte utilisateur pour lequel 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 pour lequel 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 le ClusterRoleBinding, le RoleBinding, le ProjectRoleBinding, ou le OrganizationRoleBinding pour révoquer l'autorisation accordée au compte utilisateur :

    • Supprimez le ClusterRoleBinding d'un compte utilisateur :

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

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

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

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

Révoquer l'accès utilisateur

Si un membre quitte votre organisation ou votre équipe, vous pouvez révoquer son accès à l'appliance isolée Google Distributed Cloud (GDC). La révocation de l'accès d'un utilisateur le déconnecte de l'appliance GDC sous air gap et supprime ses rôles et autorisations. Vous pouvez également afficher la liste des activités et des sessions de l'utilisateur, ainsi que leurs heures 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 des utilisateurs. Demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle d'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.

    Après avoir exécuté la commande, vous verrez un résultat semblable à celui-ci. 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. Vérifiez 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, le message suivant s'affiche :

    No sessions found for account: ariel@example.com
    

Répertorier tous les utilisateurs révoqués

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

  • Répertoriez tous les utilisateurs révoqués, ainsi que leurs heures 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, un résultat semblable à celui-ci s'affiche :

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