Wenn Sie in Google Kubernetes Engine (GKE) bereitstellen, hat das Standardausführungsdienstkonto von Cloud Deploy Zugriff auf alle Namespaces im Zielcluster. Sie können dieses Dienstkonto so konfigurieren, dass es nur in einem Namespace bereitgestellt wird.
Prüfen Sie, ob das Ausführungsdienstkonto nicht die IAM-Rolle
roles/container.developerhat.Weisen Sie dem Dienstkonto die Rolle
roles/container.clusterViewerzu.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Mit dieser Rolle kann sich das Dienstkonto im Cluster authentifizieren, aber nichts weiter tun.
Erstellen Sie eine Kubernetes-RBAC-Rolle, die Administratorzugriff auf den Namespace gewährt.
Die RBAC-Rolle in diesem Beispiel hat umfassende Berechtigungen, die der
clouddeploy.developerIAM-Rolle entsprechen. Um das Risiko einer Berechtigungseskalation zu minimieren, empfehlen wir, diese Berechtigungen auf das Minimum zu beschränken, das für Ihre Anwendungen erforderlich ist. Eine Anleitung finden Sie in der RBAC-Dokumentation für GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Erstellen Sie eine
RoleBinding, die diese RBAC-Rolle im ausgewählten Namespace an das Ausführungsdienstkonto von Cloud Deploy bindet: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.ioDieses Manifest definiert eine RBAC-Richtlinie, die die Rolle
adminan Ihr Ausführungsdienstkonto bindet.NAMESPACEist der Namespace, für den Sie dem Dienstkonto Zugriff gewähren möchten. Das Dienstkonto kann auf keinen anderen Namespace im Cluster zugreifen.Wenden Sie das RBAC-Manifest auf den Cluster an:
kubectl apply -f YAML_NAME