Contrôle des accès avec IAM
Cet article explique comment utiliser Identity and Access Management pour contrôler la façon dont Config Connector peut créer et gérer des ressources Google Cloud .
Pour installer Config Connector, vous devez vous authentifier en créant un compte de service IAM, puis utiliser la fédération d'identité de charge de travail pour GKE pour que GKE lie les comptes de service IAM aux comptes de service Kubernetes. IAM permet à Config Connector d'effectuer des actions sur des ressources spécifiques. En limitant les autorisations attribuées à vos comptes de service, vous contrôlez mieux les types de ressources que Config Connector peut créer.
Vous pouvez choisir de gérer les ressources avec un seul compte de service ou plusieurs.
Compte de service unique
Lorsque vous installez Config Connector avec le module complémentaire GKE ou manuellement, vous pouvez définir le mode de cluster dans votre ressource personnalisée ConfigConnector
.
En mode cluster, vous pouvez utiliser un seul compte de service IAM pour créer et gérer des ressources, même si vous utilisez Config Connector pour gérer plusieurs projets.
Le schéma suivant illustre le fonctionnement de ce mode, où le même compte de service gère deux projets:
Plusieurs comptes de service
Vous pouvez utiliser plusieurs comptes de service en définissant le mode espace de noms dans votre objet CustomResource ConfigConnector
.
Le mode espace de noms vous permet de diviser les autorisations en fonction des préoccupations respectives de différents comptes de service IAM et d'isoler les autorisations entre différents espaces de noms Kubernetes, car vous pouvez associer un compte de service différent pour chaque espace de noms.
Choisissez le mode espace de noms si :
- Vous souhaitez isoler les autorisations IAM au niveau de l'espace de noms Kubernetes.
- Vous devrez gérer un grand nombre de Google Cloud ressources provenant de plusieurs Google Cloud projets sur un seul cluster.
Par exemple, vous créez un compte de service IAM pour chaque projet, organisez les ressources de chaque projet dans le même espace de noms Kubernetes, puis associez le compte de service IAM correspondant à l'espace de noms Kubernetes. Vous pouvez ainsi séparer les autorisations IAM pour chaque projet afin que chaque projet dispose d'un ensemble d'autorisations distinct et sans rapport.
Le schéma suivant présente le fonctionnement du mode espace de noms, où chaque projet est géré par un compte de service différent:
En mode espace de noms, chaque compte de service IAM est lié à un espace de noms par défaut. Lorsque vous créez des ressources dans cet espace de noms, Config Connector utilise ce compte de service pour créer des ressources Google Cloud. Un pod cnrm-controller-manager
Config Connector dédié est disponible pour chaque espace de noms, qui imite le compte de service IAM associé à l'espace de noms.
Pour savoir comment configurer le mode espace de noms, consultez la section Installer Config Connector à l'aide d'un mode espace de noms.
Ajuster les autorisations après l'installation
Lors de l'installation de Config Connector, vous avez peut-être sélectionné un rôle de base temporaire et attribué ce rôle au compte de service pour lequel vous avez configuré Config Connector. Si vous avez configuré Config Connector en mode espace de noms, vous pouvez avoir plusieurs comptes de service IAM.
Une fois l'installation terminée, vous devrez peut-être supprimer ou mettre à jour les autorisations générales pour vous conformer aux considérations de sécurité et aux bonnes pratiques.
L'un des principaux avantages de Config Connector est l'outil unifié. Cela signifie que vous pouvez utiliser Config Connector lui-même pour affiner les rôles et les autorisations IAM. Vous pouvez utiliser les ressources IAMPolicyMember ou IAMPartialPolicy dans Config Connector pour configurer les autorisations IAM. Pour ce faire, vous devez disposer d'un compte de service IAM disposant d'autorisations d'administrateur pour vos projets, dossiers ou organisations. Ce compte de service doit être configuré pour s'associer à l'installation de Config Connector via le mode cluster ou le mode espace de noms.
Les sections suivantes présentent différents exemples de règles qui utilisent Config Connector pour gérer les autorisations IAM.
Autorisation de propriétaire de l'entreprise
Pour étendre les autorisations Config Connector afin qu'il puisse gérer tous les projets et dossiers pour une organisation donnée, procédez comme suit:
Créez le fichier manifeste YAML suivant:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Organization external: ORGANIZATION_ID
Remplacez les éléments suivants :
NAMESPACE
par le nom de votre espace de nomsSERVICE_ACCOUNT_NAME
par le nom de votre compte de serviceHOST_PROJECT_ID
par l'ID du projet hôte de votre compte de service ;roles/owner
par le rôle approprié.ORGANIZATION_ID
par votre ID d'organisation
Appliquez le fichier manifeste YAML à votre cluster à l'aide de
kubectl
ou de tout outil de gestion de la configuration de votre choix.
Autorisation de type "Propriétaire" pour le dossier
Pour étendre les autorisations Config Connector afin qu'il puisse gérer tous les projets et dossiers dans un dossier donné, procédez comme suit:
Créez le fichier manifeste YAML suivant:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Folder external: folders/FOLDER_ID
Remplacez les éléments suivants :
NAMESPACE
par le nom de votre espace de nomsSERVICE_ACCOUNT_NAME
par le nom de votre compte de serviceHOST_PROJECT_ID
par l'ID du projet hôte de votre compte de service ;roles/owner
par le rôle approprié.FOLDER_ID
par l'ID de votre dossier
Appliquez le fichier manifeste YAML à votre cluster à l'aide de
kubectl
ou de tout outil de gestion de la configuration de votre choix.
Autorisations de propriétaire de projet
Pour permettre à Config Connector de gérer les ressources d'un projet spécifique, procédez comme suit:
Créez le fichier manifeste YAML suivant:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Project external: projects/PROJECT_ID
Remplacez les éléments suivants :
NAMESPACE
par le nom de votre espace de nomsSERVICE_ACCOUNT_NAME
par le nom de votre compte de serviceHOST_PROJECT_ID
par l'ID du projet hôte de votre compte de service ;roles/owner
par le rôle approprié.PROJECT_ID
par l'ID de votre projet cible
Appliquez le fichier manifeste YAML à votre cluster à l'aide de
kubectl
ou de tout outil de gestion de la configuration de votre choix.
Rôles prédéfinis
Si vous préférez accorder des autorisations plus limitées à Config Connector, vous pouvez attribuer un ou plusieurs rôles IAM à votre installation Config Connector en créant quelques ressources IAMPolicyMember ou une ressource IAMPartialPolicy combinée. Les rôles suivants sont généralement attribués au compte de service Config Connector:
Éditeur: l'attribution du rôle éditeur permet d'utiliser la plupart des fonctionnalités de Config Connector, à l'exception des configurations à l'échelle du projet ou de l'organisation, telles que les modifications IAM.
Rôle Administrateur de compte de service IAM: l'octroi des autorisations
roles/iam.serviceAccountAdmin
permet à Config Connector de configurer les comptes de service IAM.Resource Manager: l'attribution d'un rôle Resource Manager tel que
roles/resourcemanager.folderCreator
permet à Config Connector de gérer les dossiers et les organisations.
Rôles personnalisés
Si les rôles prédéfinis ne répondent pas à vos besoins, vous pouvez créer des rôles personnalisés avec les autorisations que vous définissez.
Pour apprendre à créer et à attribuer des rôles personnalisés, consultez la page Créer et gérer des rôles personnalisés.
Étape suivante
- Découvrez comment organiser vos ressources par dossier, projet ou organisation.