Restreindre le déploiement à un espace de noms GKE

Lorsque vous effectuez un déploiement sur Google Kubernetes Engine (GKE), le compte de service d'exécution Cloud Deploy par défaut a accès à tous les espaces de noms du cluster cible. Vous pouvez configurer ce compte de service pour qu'il ne soit déployé que dans un seul espace de noms.

  1. Assurez-vous que le compte de service d'exécution ne dispose pas du rôle IAM roles/container.developer.

  2. Attribuez le rôle roles/container.clusterViewer au compte de service.

    gcloud projects add-iam-policy-binding PROJECT_ID \
     --member="serviceAccount:SERVICE_ACCOUNT" \
     --role="roles/container.clusterViewer"
    

    Ce rôle permet au compte de service de s'authentifier sur le cluster, mais rien de plus.

  3. Créez un rôle RBAC Kubernetes qui accorde un accès administrateur à l'espace de noms.

    Le rôle RBAC de cet exemple dispose d'autorisations étendues, équivalentes au clouddeploy.developer rôle IAM. Pour minimiser le risque d'escalade des privilèges, nous vous recommandons de modifier ces autorisations pour qu'elles correspondent au minimum requis pour vos applications. Pour obtenir des instructions, consultez la documentation RBAC pour GKE.

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: admin
      namespace: NAMESPACE
    rules:
    - apiGroups: ["", "extensions", "apps"]
      resources: ["*"]
      verbs: ["*"]
    
  4. Créez une RoleBinding qui lie ce rôle RBAC dans l'espace de noms de votre choix au compte de service d'exécution Cloud Deploy :

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: admin
      namespace: NAMESPACE
    subjects:
    # Google Cloud user account
    - kind: User
      name: SERVICE_ACCOUNT
    roleRef:
      kind: Role
      name: admin
      apiGroup: rbac.authorization.k8s.io
    

    Ce fichier manifeste définit une stratégie RBAC liant le rôle admin à votre compte de service d'exécution. NAMESPACE est l'espace de noms pour lequel vous souhaitez accorder l'accès au compte de service. Le compte de service ne peut accéder à aucun autre espace de noms du cluster.

  5. Appliquez le fichier manifeste RBAC au cluster :

    kubectl apply -f YAML_NAME