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
ClusterRoleBindingouRoleBindingà unClusterRolepré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
ProjectRoleet unProjectRoleBindingcorrespondant. Ce processus propage unRoleet unRoleBindingKubernetes à unNamespaceKubernetes dans le cluster, ce qui correspond auProjectauquel leProjectRoleet leProjectRoleBindingsont 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
OrganizationRoleet unOrganizationRoleBindingcorrespondant. Ce processus propage unClusterRoleet unClusterRoleBindingKubernetes à 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
- Connectez-vous à la console GDC.
- 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.
- Dans le menu de navigation, cliquez sur Identité et accès > Accès.
- Cliquez sur Ajouter un membre.
- Dans la liste Fournisseur d'identité, sélectionnez un fournisseur d'identité.
- Indiquez si vous souhaitez ajouter des utilisateurs individuels ou des groupes.
- Dans le champ Nom d'utilisateur ou alias de groupe, saisissez le nom d'utilisateur, l'adresse e-mail ou l'alias.
- 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.
- Cliquez sur Ajouter.
Le membre apparaît dans la liste Membre autorisé.
gdcloud
Assurez-vous d'avoir installé la gdcloud CLI.
Connectez-vous à l'aide de la commande
gdcloud auth loginpour vous authentifier auprès de votre fournisseur d'identité. Pour en savoir plus, consultez l'authentification gdcloud CLI.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/ROLERemplacez 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,RoleouOrganizationRolepour 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/ROLERemplacez 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:RoleouProjectRolepour 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
Exportez les identifiants utilisateur que vous utilisez :
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExportez 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_EMAILExportez 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_NAMEAttribuez un utilisateur à un
ClusterRole,Role,ProjectRoleouOrganizationRole: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
ClusterRolenécessite unRoleBindingau lieu d'unClusterRoleBinding, 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 nomsgpc-system:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-systemAttribuer un utilisateur à un
Role:Exportez l'espace de noms dans lequel la liaison doit être créée :
export BINDING_NAMESPACE=BINDING_NAMESPACEExé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: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: USERNAMERemplacez 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 duProjectRoleque vous attribuez à l'utilisateur.USER_KIND: type d'utilisateur, qui peut êtreUser,GroupouServiceAccount.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 valeurUSERNAMEexportée.
Appliquez le fichier
projectrolebinding.yaml:kubectl create -f projectrolebinding.yaml
Attribuer un utilisateur à un
OrganizationRole: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: USERNAMERemplacez les éléments suivants :
BINDING_NAME: nom de la liaison que l'utilisateur peut personnaliser (par exemple,user-organization-creator-binding).ROLE_NAME: nom duOrganizationRoleque vous attribuez à l'utilisateur.USER_KIND: type d'utilisateur, qui peut êtreUser,GroupouServiceAccount.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 valeurUSERNAMEexportée.
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
- Connectez-vous à la console GDC.
- Dans le menu de navigation, cliquez sur Identité et accès > Accès.
- Dans la liste Membres autorisés, sélectionnez un membre.
- Cliquez sur Supprimer le membre.
- Lorsque vous y êtes invité, cliquez sur Supprimer le membre pour confirmer.
gdcloud
Assurez-vous d'avoir installé la gdcloud CLI.
Connectez-vous à l'aide de la commande
gdcloud auth loginpour vous authentifier auprès de votre fournisseur d'identité. Pour en savoir plus, consultez l'authentification gdcloud CLI.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/ROLERemplacez 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,RoleouOrganizationRolepour 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/ROLERemplacez 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:RoleouProjectRolepour 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
Exportez les identifiants utilisateur que vous utilisez :
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExportez 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_EMAILExportez l'espace de noms dans lequel la liaison est supprimée :
export BINDING_NAMESPACE=BINDING_NAMESPACESupprimez
ClusterRoleBinding,RoleBinding,ProjectRoleBindingouOrganizationRoleBindingpour révoquer l'autorisation accordée au compte utilisateur :Supprimez
ClusterRoleBindingd'un compte utilisateur :kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-paSupprimez
RoleBindingd'un compte utilisateur :kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Supprimez
ProjectRoleBindingd'un compte utilisateur :kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Supprimez
OrganizationRoleBindingd'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 :
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).Révoquez l'accès de l'utilisateur :
gdcloud admin auth revoke --accounts USER_EMAILRemplacez 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.comDans cet exemple, la variable NUMBER fait référence au nombre de sessions actives de l'utilisateur.
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