Sécuriser l'accès aux ressources avec IAM
Les utilisateurs et les comptes de service Kubernetes ont besoin d'autorisations pour gérer les ressources de Config Connector. Avec Config Connector, le service plan de contrôle peuvent être gérées par des identités qui utilisent Kubernetes Contrôle des accès basé sur les rôles (RBAC). Vous pouvez également faire référence aux stratégies IAM (Identity and Access Management).
Les ressources pouvant référencer IAMPolicy et IAMPolicyMember sont répertoriées dans la documentation de référence sur les ressources. Ces ressources ont la propriété intitulée "Peut être référencé par IAMPolicy/IAMPolicyMember".
Cet article explique comment sécuriser l'accès aux ressources Google Cloud à l'aide de la gestion de l'authentification et des accès.
Avant de commencer
Pour réaliser les étapes décrites dans cette page, installez d'abord Config Connector sur votre cluster.
Sécuriser l'accès au plan de contrôle avec RBAC
Dans cet exemple, vous allez créer un compte de service et lui accorder des autorisations pour gérer un PubSubTopic
. Ce compte de service ne peut pas gérer d'autres types de ressources de Config Connector.
Créez un fichier nommé
pubsub-topic-service-account.yaml
avec le contenu suivant :apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Appliquez cela pour créer le compte de service
pubsub-topic-service-account
:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Confirmez que
pubsub-topic-service-account
ne peut pas créer de ressourcesPubSubTopic
en vérifiant que le résultat de la commande suivante contientno
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Ensuite, créez un
ClusterRole
qui permet la création de sujets Pub/Sub.Le ClusterRole ne peut gérer que les ressources dont les valeurs sont spécifiées dans
rules.apiGroups
etrules.resources
. Pour trouver les valeurs deapiGroups
etresources
, consultez la documentation de référence sur vos ressources.Créez un fichier nommé
pubsub-topic-editor-role.yaml
avec le contenu suivant :apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: pubsub-topic-editor rules: - apiGroups: - pubsub.cnrm.cloud.google.com resources: - pubsubtopics verbs: - get - list - watch - create - update - patch - delete
Appliquez
pubsub-topic-editor.yaml
pour créer leClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Ensuite, créez un objet RoleBinding entre l'objet ClusterRole et votre compte de service. Créez un fichier nommé
pubsub-topic-editor-rolebinding.yaml
avec le contenu suivant :apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pubsub-topic-editor-rolebinding. subjects: - kind: ServiceAccount name: pubsub-topic-service-account roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pubsub-topic-editor
Appliquez
pubsub-topic-editor-rolebinding.yaml
à votre cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Confirmez que
pubsub-topic-service-account
est autorisé à créer des ressourcesPubSubTopic
en vérifiant que le résultat de la commande suivante estyes
:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Nettoyer
Utilisez kubectl delete
pour supprimer le compte de service, le rôle IAM et Rolebinding.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-editor-role.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-service-account.yaml --namespace <var>CC_NAMESPACE</var>
Remplacez CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.
Sécuriser le plan de données avec les stratégies IAM
Dans cet exemple, vous utilisez les autorisations accordées précédemment pour créer un PubSubTopic
et limiter l'accès à celui-ci avec une ressource IAMPolicyMember
.
Créez un fichier nommé
pubsub-topic-sample.yaml
avec le contenu suivant :apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Appliquer
pubsub-topic-sample.yaml
aveckubectl
:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Créez un fichier nommé
iampolicymember.yaml
avec le contenu suivant, en remplaçantEMAIL_ADDRESS
par l'adresse e-mail de votre compte Google Cloud :apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-sample spec: resourceRef: apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic name: pubsubtopic-sample role: roles/pubsub.admin member: "user:EMAIL_ADDRESS"
Appliquez la fonction
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.Confirmez que la stratégie a été appliquée à Google Cloud en exécutant la commande suivante (dans laquelle il faut remplacer
PROJECT_ID
par l'ID de votre projet) et en recherchant votre adresse e-mail dans le résultat :gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
L'accès à vos sujets Pub/Sub est désormais protégé par un IAMPolicyMember
.
Nettoyer
Utilisez kubectl delete
pour supprimer le sujet Pub/Sub et IAMPolicyMember de votre projet Google Cloud.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Étape suivante
Utilisez des secrets pour transmettre des informations en toute sécurité aux ressources Google Cloud.