option
MaisonMaison Skill Sécurité gke-security

gke-security

google/skills google/skills

Renforce la sécurité des clusters Google Kubernetes Engine (GKE) grâce à Workload Identity, Secret Manager, RBAC, l'autorisation binaire, les politiques réseau et les normes de sécurité des pods.

...Développer tout
16
Heure mise à jour 3 septembre 2026

Sécurité GKE

Ce guide traite de la configuration de sécurité des clusters GKE. Le « golden path » impose par défaut une politique de sécurité renforcée.

Outils MCP : get_cluster, check_k8s_auth, get_k8s_resource, apply_k8s_manifest, update_cluster

Paramètres de sécurité par défaut du « golden path »

Paramètre Valeur du « Golden Path » Jour 0/1 Remarques
workloadIdentityConfig.workloadPool .svc.id.goog Jour 0 Fédération d’identités de charge de travail pour les pods
secretManagerConfig.enabled true Jour 1 Intégration de Google Secret Manager
secretManagerConfig.rotationConfig activé : true, intervalle de rotation : 120 s Jour 1 Rotation automatique des secrets
rbacBindingConfig.enableInsecureBindingSystemAuthenticated false Jour 0 Bloque les liaisons « system:authenticated » des systèmes hérités
rbacBindingConfig.enableInsecureBindingSystemUnauthenticated false Jour 0 Bloque le système hérité : liaisons non authentifiées
nodeConfig.shieldedInstanceConfig.enableSecureBoot true Jour 0 Intégrité de démarrage vérifiable
nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring true Jour 0 Contrôles d’intégrité en exécution
nodeConfig.workloadMetadataConfig.mode GKE_METADATA Jour 0 Bloque l’API de métadonnées héritée, applique l’identité de charge de travail
Cluster privé + paramètres Dataplane V2 Consultez la compétence gke-networking Jour 0 Nœuds privés, application des points de terminaison privés, ADVANCED_DATAPATH

Fédération d’identités de charge de travail

Workload Identity est la méthode recommandée pour permettre aux pods d'accéder aux API Google Cloud. Elle élimine le recours aux clés de compte de service statiques.

Configuration

# 1. Créer un compte de service Google (GSA)
gcloud iam service-accounts create  \
  --project  \
  --display-name "Workload Identity SA" \
  --quiet

# 2. Attribuer des rôles IAM au GSA
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "" \
  --quiet

# 3. Créer un compte de service Kubernetes (KSA)
kubectl create namespace 
kubectl create serviceaccount  --namespace 

# 4. Associer le KSA au GSA
gcloud iam service-accounts add-iam-policy-binding \
  @.iam.gserviceaccount.com \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:.svc.id.goog[/]" \
  --quiet

# 5. Annoter le compte de service (KSA)
kubectl annotate serviceaccount  \
  --namespace  \
  iam.gke.io/gcp-service-account=@.iam.gserviceaccount.com

Consultez le fichier assets/workload-identity-pod.yaml pour un pod de test.

Vérification

kubectl run workload-identity-test \
  --image=gcr.io/google.com/cloudsdktool/cloud-sdk:slim \
  --serviceaccount= --namespace= \
  --rm -it -- gcloud auth list --quiet

Intégration de Secret Manager

Le parcours de référence active Secret Manager avec rotation automatique. Les secrets sont synchronisés avec les secrets Kubernetes.

# Vérifier que Secret Manager est activé sur le cluster
gcloud container clusters describe  --region  \
  --format="value(secretManagerConfig.enabled)" \
  --quiet

# L'activer s'il ne l'est pas déjà (modification du jour 1)
gcloud container clusters update  --region  \
  --enable-secret-manager \
  --secret-manager-rotation-interval=120s \
  --quiet

Montage des secrets via un volume CSI (exemple de déploiement)

Une fois l’extension Secret Manager activée, les charges de travail peuvent monter des secrets en tant que volumes à l’aide du pilote CSI Secrets Store. Cela nécessite deux étapes :

  1. Définir une classe `SecretProviderClass` pour spécifier les secrets à récupérer depuis Secret Manager.
  2. Monter le volume dans un Deployment faisant référence à cette classe.

[!IMPORTANT] Bonnes pratiques de production: effectuez toujours les tests d’intégration des charges de travail (comme le pilote CSI de Secret Manager) à l’aide de manifestesde déploiement conformes aux normes de production plutôt qu’à l’aide de manifestes de pod bruts.

Étape 1 : Créer la classe SecretProviderClass

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: app-secrets-provider
  namespace: default
spec:
  provider: gke  # Identifie le fournisseur géré par GKE
  parameters:
    secrets: |
      - resourceName: "projects//secrets/db-password/versions/latest"
        fileName: "db-password.txt"

Étape 2 : Monter le secret dans un déploiement

apiVersion : apps/v1
kind : Deployment
metadata :
  name : secure-app
  namespace : default
spec :
  replicas : 2
  selector:
    matchLabels:
      app: secure-app
  template:
    metadata:
      labels:
        app: secure-app
    spec:
      serviceAccountName: secure-ksa  # Doit être lié à un compte de service Google (GSA) disposant du rôle « Secret Accessor » dans Secret Manager
      containers:
      - name: app
        image: 
        volumeMounts:
        - name: secrets-volume
          mountPath: "/var/secrets"
          readOnly : true
      volumes :
      - nom : secrets-volume
        csi :
          pilote : secrets-store.csi.k8s.io
          readOnly : true
          attributs du volume :
            secretProviderClass : "app-secrets-provider"

Renforcement de la sécurité RBAC

La procédure recommandée consiste à désactiver les liaisons RBAC héritées non sécurisées qui accordent un accès étendu aux groupes `system:authenticated ` et `system:unauthenticated `.

# Vérifier que les liaisons non sécurisées sont désactivées
gcloud container clusters describe  --region  \
  --format="yaml(rbacBindingConfig)" \
  --quiet

Bonnes pratiques pour le RBAC :

  • Utilisez des rôles (Roles) au niveau de l’espace de noms plutôt que des ClusterRoles à l’échelle du cluster
  • Liez-vous à des groupes ou des comptes de service spécifiques, jamais à « system:authenticated »
  • Auditez les autorisations via MCP : check_k8s_auth(parent="...", verb="list", resourceType="pods", namespace="...") (ou kubectl auth can-i --list --as=)
  • Vérifiez les liaisons via MCP : get_k8s_resource(parent="...", resourceType="clusterrolebinding") (ou kubectl get clusterrolebindings,rolebindings --all-namespaces)

Consultez la compétence gke-multitenancy pour la planification RBAC en entreprise et https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/rbac.md.txt

Autorisation binaire

Non activée par défaut dans le parcours standard, mais recommandée pour la provenance des images en production :

# Activer l’autorisation binaire
gcloud container clusters update  --region  \
  --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
  --quiet

Politiques réseau

Dataplane V2 (parcours standard) intègre l’application des politiques réseau. Appliquer le refus par défaut par espace de noms :

# MCP (recommandé)
apply_k8s_manifest(parent="...", yamlManifest="")

# Solution de secours avec kubectl
kubectl apply -f ./assets/default-deny-netpol.yaml -n 

Sandbox GKE (gVisor)

Pour exécuter des charges de travail non fiables dans un bac à sable isolé :

# Activer sur le cluster (clusters Standard)
gcloud container clusters update  --region  --enable-gke-sandbox --quiet

# Utilisation dans la spécification du pod
# Ajouter : runtimeClassName: gvisor

Normes de sécurité des pods (parcours par défaut)

Les normes de sécurité des pods définissent trois profils qui restreignent les actions autorisées aux pods. Le profil« restricted » est la valeur par défaut du « golden path » pour les espaces de noms de production.

Profil Niveau Cas d’utilisation
privilégié Sans restriction Espaces de noms système (kube-system),
: : : contrôleurs d’infrastructure :
de référence Restriction minimale Espaces de noms partagés/dev, applications héritées
: : : en cours de migration :
restreint Parcours optimal Charges de travail de production -- blocages
: : : élévation de privilèges, accès à l'hôte, :
: : : root :

Application via les étiquettes d’espace de noms (Pod Security Admission) :

apiVersion: v1
kind : Namespace
metadata :
  name : production
  labels :
    pod-security.kubernetes.io/enforce : restricted
    pod-security.kubernetes.io/warn : restricted
    pod-security.kubernetes.io/audit : restricted

Stratégie de déploiement progressif :

  1. Commencer par émettre des avertissements et effectuer des audits sur les espaces de noms existants afin d’identifier les violations
  2. Corrigez les charges de travail non conformes (supprimez les privilèges, hostNetwork, l'utilisateur root, etc.)
  3. Activer l’application une fois que toutes les charges de travail sont conformes

blocs« restricted »: exécution en tant que root, élévation de privilèges, réseau hôte/PID/IPC, volumes de chemin d’accès hôte et la plupart des capacités. Le fichier de référence workload-identity-pod.yaml est déjà conforme.

Journalisation des politiques réseau (recommandée)

Avec Dataplane V2 (parcours de référence), vous pouvez activer la journalisation des décisions de politique réseau. Ce n’est pas un paramètre par défaut du parcours de référence, mais cela est recommandé pour l’audit de sécurité.

gcloud container clusters update  --region  \
  --enable-network-policy-logging \
  --quiet

Cette option consigne les connexions autorisées et refusées, ce qui est utile pour le dépannage des règles de politique réseau et l’audit des flux de trafic.

Rôles IAM courants

Les cinq rôles IAM prédéfinis les plus courants pour GKE :

Rôle Objectif Quand l'utiliser
roles/container.admin Contrôle total sur les administrateurs de l'équipe de la plateforme
: : les clusters et : la gestion des clusters :
: : Kubernetes : cycle de vie :
: : des ressources : :
rôles/container.clusterAdmin Gèrent les clusters mais les opérateurs de cluster
: : pas au niveau du projet : qui créent/suppriment :
: : IAM : des clusters :
rôles/container.developer Déployer des charges de travail Application
: : (pods, services, : développeurs déployant :
: : déploiements) : vers des clusters existants :
roles/container.viewer Accès en lecture seule à la la surveillance,
: : des clusters et : de l’audit, ou :
: : Kubernetes : tableaux de bord en lecture seule :
: : ressources : :
rôles/container.clusterViewer Répertorier et récupérer les pipelines CI/CD qui
: : détails du cluster : nécessitent un cluster :
: : uniquement : métadonnées :

Principe du moindre privilège: commencez par roles/container.viewer ou roles/container.developer et n’augmentez les privilèges qu’en cas de nécessité. Évitez d’accorder le rôle roles/container.admin de manière généralisée.

Comptes de service et agents

  • Agent de service GKE (service-@container-engine-robot.iam.gserviceaccount.com) : Créé automatiquement. Gère les nœuds, la mise en réseau et les opérations du cluster en votre nom. Ne supprimez pas et ne modifiez pas ses autorisations.
  • Compte de service de nœud: par défaut, les nœuds utilisent le compte de service par défaut de Compute Engine. En production, créez un compte de service dédié avec un minimum d’autorisations et attribuez-le via la configuration du pool de nœuds.
  • Identité de charge de travail: méthode recommandée pour permettre aux pods d’accéder aux API Google Cloud. Associe un compte de service Kubernetes à un compte de service Google IAM — voir la configuration de l’identité de charge de travail ci-dessus.

Modèles d’authentification interservices

Modèles courants pour accorder aux charges de travail GKE l’accès à d’autres services Google Cloud :

# Accorder à une charge de travail GKE l’accès à Cloud Storage
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/storage.objectViewer" \
  --quiet

# Accorder à une charge de travail GKE l’accès à Cloud SQL
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/cloudsql.client" \
  --quiet

# Accorder à une charge de travail GKE l'accès à Pub/Sub
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/pubsub.subscriber" \
  --quiet

Dans tous les cas, le GSA doit être lié à un KSA via Workload Identity (voir la configuration ci-dessus). Le pod utilise ensuite le KSA pour s'authentifier en tant que GSA.

Voir sur GitHub
---
name: gke-security
description: Hardens Google Kubernetes Engine (GKE) clusters with Workload Identity, Secret Manager, RBAC, Binary Authorization, Network Policies, and Pod Security Standards.
---

# GKE Security

This reference covers security configuration for GKE clusters. The golden path
enforces a hardened security posture by default.

> **MCP Tools:** `get_cluster`, `check_k8s_auth`, `get_k8s_resource`,
> `apply_k8s_manifest`, `update_cluster`

## Golden Path Security Defaults

Setting                                                        | Golden Path Value                       | Day-0/1 | Notes
-------------------------------------------------------------- | --------------------------------------- | ------- | -----
`workloadIdentityConfig.workloadPool`                          | `<PROJECT>.svc.id.goog`                 | Day-0   | Workload Identity Federation for Pods
`secretManagerConfig.enabled`                                  | `true`                                  | Day-1   | Google Secret Manager integration
`secretManagerConfig.rotationConfig`                           | `enabled: true, rotationInterval: 120s` | Day-1   | Automatic secret rotation
`rbacBindingConfig.enableInsecureBindingSystemAuthenticated`   | `false`                                 | Day-0   | Blocks legacy `system:authenticated` bindings
`rbacBindingConfig.enableInsecureBindingSystemUnauthenticated` | `false`                                 | Day-0   | Blocks legacy `system:unauthenticated` bindings
`nodeConfig.shieldedInstanceConfig.enableSecureBoot`           | `true`                                  | Day-0   | Verifiable boot integrity
`nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring`  | `true`                                  | Day-0   | Runtime integrity checks
`nodeConfig.workloadMetadataConfig.mode`                       | `GKE_METADATA`                          | Day-0   | Blocks legacy metadata API, enforces Workload Identity
Private cluster + Dataplane V2 settings                        | See the `gke-networking` skill          | Day-0   | Private nodes, private endpoint enforcement, ADVANCED_DATAPATH

## Workload Identity Federation

Workload Identity is the recommended way for pods to access Google Cloud APIs.
It eliminates the need for static service account keys.

### Setup

```bash
# 1. Create a Google Service Account (GSA)
gcloud iam service-accounts create <GSA_NAME> \
  --project <PROJECT_ID> \
  --display-name "Workload Identity SA" \
  --quiet

# 2. Grant IAM roles to the GSA
gcloud projects add-iam-policy-binding <PROJECT_ID> \
  --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
  --role "<ROLE>" \
  --quiet

# 3. Create Kubernetes Service Account (KSA)
kubectl create namespace <NAMESPACE>
kubectl create serviceaccount <KSA_NAME> --namespace <NAMESPACE>

# 4. Bind KSA to GSA
gcloud iam service-accounts add-iam-policy-binding \
  <GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:<PROJECT_ID>.svc.id.goog[<NAMESPACE>/<KSA_NAME>]" \
  --quiet

# 5. Annotate KSA
kubectl annotate serviceaccount <KSA_NAME> \
  --namespace <NAMESPACE> \
  iam.gke.io/gcp-service-account=<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com
```

> See [assets/workload-identity-pod.yaml](./assets/workload-identity-pod.yaml)
> for a test pod.

### Verification

```bash
kubectl run workload-identity-test \
  --image=gcr.io/google.com/cloudsdktool/cloud-sdk:slim \
  --serviceaccount=<KSA_NAME> --namespace=<NAMESPACE> \
  --rm -it -- gcloud auth list --quiet
```

## Secret Manager Integration

The golden path enables Secret Manager with automatic rotation. Secrets are
synced to Kubernetes Secrets.

```bash
# Verify Secret Manager is enabled on cluster
gcloud container clusters describe <CLUSTER_NAME> --region <REGION> \
  --format="value(secretManagerConfig.enabled)" \
  --quiet

# Enable if not already (Day-1 change)
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
  --enable-secret-manager \
  --secret-manager-rotation-interval=120s \
  --quiet
```

### Mounting Secrets via CSI Volume (Deployment Example)

Once the Secret Manager add-on is enabled, workloads can mount secrets as
volumes using the Secrets Store CSI driver. This requires two steps:

1.  **Define a `SecretProviderClass`** to specify which secrets to retrieve from
    Secret Manager.
2.  **Mount the volume in a `Deployment`** referencing that class.

> [!IMPORTANT] **Production Best Practice**: Always demonstrate workload
> integrations (like Secret Manager CSI) using production-standard
> **`Deployment`** manifests rather than raw `Pod` manifests.

#### Step 1: Create the SecretProviderClass

```yaml
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: app-secrets-provider
  namespace: default
spec:
  provider: gke  # Identifies GKE managed provider
  parameters:
    secrets: |
      - resourceName: "projects/<PROJECT_ID>/secrets/db-password/versions/latest"
        fileName: "db-password.txt"
```

#### Step 2: Mount the secret in a Deployment

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: secure-app
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: secure-app
  template:
    metadata:
      labels:
        app: secure-app
    spec:
      serviceAccountName: secure-ksa  # Must be bound to GSA with Secret Manager Secret Accessor role
      containers:
      - name: app
        image: <IMAGE>
        volumeMounts:
        - name: secrets-volume
          mountPath: "/var/secrets"
          readOnly: true
      volumes:
      - name: secrets-volume
        csi:
          driver: secrets-store.csi.k8s.io
          readOnly: true
          volumeAttributes:
            secretProviderClass: "app-secrets-provider"
```

## RBAC Hardening

The golden path disables insecure legacy RBAC bindings that grant broad access
to `system:authenticated` and `system:unauthenticated` groups.

```bash
# Verify insecure bindings are disabled
gcloud container clusters describe <CLUSTER_NAME> --region <REGION> \
  --format="yaml(rbacBindingConfig)" \
  --quiet
```

**Best practices for RBAC:**

-   Use namespace-scoped Roles over cluster-wide ClusterRoles
-   Bind to specific Groups or ServiceAccounts, never to `system:authenticated`
-   Audit permissions via MCP: `check_k8s_auth(parent="...", verb="list",
    resourceType="pods", namespace="...")` (or `kubectl auth can-i --list
    --as=<user>`)
-   Review bindings via MCP: `get_k8s_resource(parent="...",
    resourceType="clusterrolebinding")` (or `kubectl get
    clusterrolebindings,rolebindings --all-namespaces`)

> See the `gke-multitenancy` skill for enterprise RBAC planning and
> https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/rbac.md.txt

## Binary Authorization

Not enabled in golden path by default but recommended for production image
provenance:

```bash
# Enable Binary Authorization
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
  --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
  --quiet
```

## Network Policies

Dataplane V2 (golden path) provides built-in Network Policy enforcement. Apply
default-deny per namespace:

```
# MCP (preferred)
apply_k8s_manifest(parent="...", yamlManifest="<contents of default-deny-netpol.yaml>")

# kubectl fallback
kubectl apply -f ./assets/default-deny-netpol.yaml -n <NAMESPACE>
```

## GKE Sandbox (gVisor)

For running untrusted workloads in an isolated sandbox:

```bash
# Enable on cluster (Standard clusters)
gcloud container clusters update <CLUSTER_NAME> --region <REGION> --enable-gke-sandbox --quiet

# Use in pod spec
# Add: runtimeClassName: gvisor
```

## Pod Security Standards (Golden Path)

Pod Security Standards define three profiles that restrict what pods can do. The
**`restricted` profile is the golden path default** for production namespaces.

| Profile      | Level                 | Use Case                           |
| ------------ | --------------------- | ---------------------------------- |
| `privileged` | Unrestricted          | System namespaces (`kube-system`), |
:              :                       : infrastructure controllers         :
| `baseline`   | Minimally restrictive | Shared/dev namespaces, legacy apps |
:              :                       : being migrated                     :
| `restricted` | **Golden path**       | Production workloads -- blocks     |
:              :                       : privilege escalation, host access, :
:              :                       : root                               :

**Enforce via namespace labels (Pod Security Admission):**

```yaml
apiVersion: v1
kind: Namespace
metadata:
  name: production
  labels:
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/warn: restricted
    pod-security.kubernetes.io/audit: restricted
```

**Gradual rollout strategy:**

1.  Start with `warn` + `audit` on existing namespaces to identify violations
2.  Fix non-compliant workloads (remove `privileged`, `hostNetwork`, root user,
    etc.)
3.  Enable `enforce` once all workloads pass

`restricted` blocks: running as root, privilege escalation, host
networking/PID/IPC, host path volumes, and most capabilities. The golden path
`workload-identity-pod.yaml` already complies.

## Network Policy Logging (Recommended)

With Dataplane V2 (golden path), you can enable logging for Network Policy
decisions. **Not a golden path default** -- recommended for security auditing.

```bash
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
  --enable-network-policy-logging \
  --quiet
```

This logs allowed and denied connections, useful for troubleshooting Network
Policy rules and auditing traffic flows.

## Common IAM Roles

The five most common predefined IAM roles for GKE:

| Role                            | Purpose             | When to Use          |
| ------------------------------- | ------------------- | -------------------- |
| `roles/container.admin`         | Full control over   | Platform team admins |
:                                 : clusters and        : managing cluster     :
:                                 : Kubernetes          : lifecycle            :
:                                 : resources           :                      :
| `roles/container.clusterAdmin`  | Manage clusters but | Cluster operators    |
:                                 : not project-level   : who create/delete    :
:                                 : IAM                 : clusters             :
| `roles/container.developer`     | Deploy workloads    | Application          |
:                                 : (pods, services,    : developers deploying :
:                                 : deployments)        : to existing clusters :
| `roles/container.viewer`        | Read-only access to | Monitoring,          |
:                                 : clusters and        : auditing, or         :
:                                 : Kubernetes          : read-only dashboards :
:                                 : resources           :                      :
| `roles/container.clusterViewer` | List and get        | CI/CD pipelines that |
:                                 : cluster details     : need cluster         :
:                                 : only                : metadata             :

> **Principle of least privilege**: Start with `roles/container.viewer` or
> `roles/container.developer` and escalate only as needed. Avoid granting
> `roles/container.admin` broadly.

## Service Accounts & Agents

-   **GKE Service Agent**
    (`service-<PROJECT_NUMBER>@container-engine-robot.iam.gserviceaccount.com`):
    Automatically created. Manages nodes, networking, and cluster operations on
    your behalf. Do not remove or modify its permissions.
-   **Node Service Account**: By default, nodes use the Compute Engine default
    service account. For production, create a dedicated SA with minimal
    permissions and assign it via node pool config.
-   **Workload Identity**: The recommended way for pods to access Google Cloud
    APIs. Maps a Kubernetes ServiceAccount to a Google IAM ServiceAccount — see
    [Workload Identity setup](#workload-identity-federation) above.

## Cross-Service Authentication Patterns

Common patterns for granting GKE workloads access to other Google Cloud
services:

```bash
# Grant a GKE workload access to Cloud Storage
gcloud projects add-iam-policy-binding <PROJECT_ID> \
  --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
  --role "roles/storage.objectViewer" \
  --quiet

# Grant a GKE workload access to Cloud SQL
gcloud projects add-iam-policy-binding <PROJECT_ID> \
  --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
  --role "roles/cloudsql.client" \
  --quiet

# Grant a GKE workload access to Pub/Sub
gcloud projects add-iam-policy-binding <PROJECT_ID> \
  --member "serviceAccount:<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
  --role "roles/pubsub.subscriber" \
  --quiet
```

In all cases, the GSA must be bound to a KSA via Workload Identity (see setup
above). The pod then uses the KSA to authenticate as the GSA.

Tous les fichiers

0 fichiers

Installer gke-security

Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.

Télécharger le ZIP

Clonez le dépôt et copiez les fichiers de compétence dans votre projet.

git clone https://github.com/google/skills/tree/main/skills/cloud/gke-security # Copy SKILL.md to your .claude/skills/ directory

Copier Copier
Configuration rapide: Copiez le dossier de la compétence dans .claude/skills/ Claude détectera et utilisera automatiquement cette compétence
Dépôt google/skills

Compétences similaires

gmgn-portfolio
Heure mise à jour 1 juillet 2026
zeroize-audit
Heure mise à jour 1 juillet 2026
device-integrity
Heure mise à jour 29 juin 2026
flutter-use-http-package
Heure mise à jour 30 juin 2026
OR