Wenn Sie in Google Kubernetes Engine (GKE) bereitstellen, hat das Standard-Ausführungsdienstkonto von Cloud Deploy Zugriff auf alle Namespaces im Zielcluster. Sie können das Dienstkonto so konfigurieren, dass es nur in einem Namespace bereitgestellt wird.
Achten Sie darauf, dass 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 anderes 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 IAM-Rolle
clouddeploy.developerentsprechen. Um das Risiko einer Berechtigungseskalation zu minimieren, empfehlen wir, diese Berechtigungen auf das für Ihre Anwendungen erforderliche Minimum zu ändern. 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 die RBAC-Rolle im ausgewählten Namespace an das Cloud Deploy-Ausführungsdienstkonto 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 nicht auf andere Namespaces im Cluster zugreifen.Wenden Sie das RBAC-Manifest auf den Cluster an:
kubectl apply -f YAML_NAME