gke-security
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 toutSé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 |
|
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 :
- Définir une
classe `SecretProviderClass`pour spécifier les secrets à récupérer depuis Secret Manager. - Monter le volume dans un
Deploymentfaisant 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 manifestes
de déploiementconformes aux normes de production plutôt qu’à l’aide de manifestesde podbruts.
É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="...")(oukubectl auth can-i --list --as=) - Vérifiez les liaisons via MCP :
get_k8s_resource(parent="...", resourceType="clusterrolebinding")(oukubectl get clusterrolebindings,rolebindings --all-namespaces)
Consultez la compétence
gke-multitenancypour 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 :
- Commencer par
émettre des avertissementseteffectuer des auditssur les espaces de noms existants afin d’identifier les violations - Corrigez les charges de travail non conformes (supprimez
les privilèges,hostNetwork, l'utilisateur root, etc.) - Activer
l’applicationune 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.viewerouroles/container.developeret n’augmentez les privilèges qu’en cas de nécessité. Évitez d’accorderle rôle roles/container.adminde manière généralisée.
Comptes de service et agents
- Agent de service GKE
(
service-) : 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.@container-engine-robot.iam.gserviceaccount.com - 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.
---
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 fichiersInstaller gke-security
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez 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





Maison
