вариант

gke-security

google/skills google/skills

Обеспечивает защиту кластеров Google Kubernetes Engine (GKE) с помощью Workload Identity, Secret Manager, RBAC, бинарной авторизации, сетевых политик и стандартов безопасности под.

...Расширить все
16
Обновлено время 3 сентября 2026 г.

Безопасность GKE

В данном справочнике рассматривается настройка безопасности кластеров GKE. «Золотой путь» по умолчанию обеспечивает усиленную защиту.

Инструменты MCP: get_cluster, check_k8s_auth, get_k8s_resource, apply_k8s_manifest, update_cluster

Настройки безопасности по умолчанию «золотого пути»

Параметр Значение «золотого пути» День 0/1 Примечания
workloadIdentityConfig.workloadPool .svc.id.goog День 0 Федерация идентификаторов рабочих нагрузок для под
secretManagerConfig.enabled true День-1 Интеграция с Google Secret Manager
secretManagerConfig.rotationConfig включено: true, интервал_ротации: 120 с День 1 Автоматическая ротация секретов
rbacBindingConfig.enableInsecureBindingSystemAuthenticated false День-0 Блокировка привязок «system:authenticated» устаревшей системы
rbacBindingConfig.enableInsecureBindingSystemUnauthenticated false День-0 Блокировка устаревшей системы: неаутентифицированные привязки
nodeConfig.shieldedInstanceConfig.enableSecureBoot true День-0 Проверяемая целостность загрузки
nodeConfig.shieldedInstanceConfig.enableIntegrityMonitoring true День-0 Проверки целостности во время выполнения
nodeConfig.workloadMetadataConfig.mode GKE_METADATA День-0 Блокирует устаревший API метаданных, обеспечивает соблюдение идентификации рабочей нагрузки
Настройки частного кластера + Dataplane V2 См. навык gke-networking День 0 Частные узлы, принудительное использование частных конечных точек, ADVANCED_DATAPATH

Федерация идентификаторов рабочих нагрузок

Workload Identity — это рекомендуемый способ доступа подсистем к API Google Cloud. Он устраняет необходимость в статических ключах учетных записей сервисов.

Настройка

# 1. Создайте учетную запись службы Google (GSA)
gcloud iam service-accounts create  \
  --project  \
  --display-name "Workload Identity SA" \
  --quiet

# 2. Назначьте роли IAM учетной записи GSA
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "" \
  --quiet

# 3. Создание учётной записи службы Kubernetes (KSA)
kubectl create namespace 
kubectl create serviceaccount  --namespace 

# 4. Привязка KSA к GSA
gcloud iam service-accounts add-iam-policy-binding \
  @.iam.gserviceaccount.com \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:.svc.id.goog[/]" \
  --quiet

# 5. Добавление аннотации к KSA
kubectl annotate serviceaccount  \
  --namespace  \
  iam.gke.io/gcp-service-account=@.iam.gserviceaccount.com

См. файл assets/workload-identity-pod.yaml для тестового под.

Проверка

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

Интеграция с Secret Manager

Стандартный сценарий включает Secret Manager с автоматической ротацией. Секреты синхронизируются с секретами Kubernetes.

# Проверьте, включен ли Secret Manager в кластере
gcloud container clusters describe  --region  \
  --format="value(secretManagerConfig.enabled)" \
  --quiet

# Включить, если ещё не включено (изменение на первый день)
gcloud container clusters update  --region  \
  --enable-secret-manager \
  --secret-manager-rotation-interval=120s \
  --quiet

Подключение секретов через том CSI (пример развертывания)

После включения надстройки Secret Manager рабочие нагрузки могут монтировать секреты в качестве томов с помощью драйвера CSI хранилища секретов. Для этого необходимо выполнить два шага:

  1. Определить SecretProviderClass, чтобы указать, какие секреты следует извлекать из Secret Manager.
  2. Смонтировать том в Deployment со ссылкой на этот класс.

[!ВАЖНО] Рекомендации для производственной среды: всегда демонстрируйте интеграцию рабочих нагрузок (таких как Secret Manager CSI) с использованием манифестовразвертывания, соответствующих стандартам производственной среды, а не исходных манифестов Pod.

Шаг 1: Создание SecretProviderClass

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: app-secrets-provider
  namespace: default
spec:
  provider: gke  # Указывает на управляемый GKE провайдер
  parameters:
    secrets: |
      - resourceName: "projects//secrets/db-password/versions/latest"
        fileName: "db-password.txt"

Шаг 2: Подключение секрета в Deployment

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  # Должен быть привязан к GSA с ролью Secret Accessor в Secret Manager
      containers:
      - name: app
        image: 
        volumeMounts:
        - name: secrets-volume
          mountPath: "/var/secrets"
          readOnly: true
      тома:
      - имя: secrets-volume
        csi:
          драйвер: secrets-store.csi.k8s.io
          readOnly: true
          атрибуты тома:
            класс-поставщика-секретов: "app-secrets-provider"

Усиление безопасности RBAC

Рекомендуемый подход заключается в отключении небезопасных устаревших привязок RBAC, предоставляющих широкий доступ группам system:authenticated и system:unauthenticated.

# Проверка отключения небезопасных привязок
gcloud container clusters describe  --region  \
  --format="yaml(rbacBindingConfig)" \
  --quiet

Рекомендации по RBAC:

  • Используйте роли в пределах пространства имён вместо ClusterRoles, действующих во всём кластере
  • Привязывайте к конкретным группам или ServiceAccounts, никогда — к system:authenticated
  • Проверяйте права доступа с помощью MCP: check_k8s_auth(parent="...", verb="list", resourceType="pods", namespace="...") (или kubectl auth can-i --list --as=)
  • Проверяйте привязки с помощью MCP: get_k8s_resource(parent="...", resourceType="clusterrolebinding") (или kubectl get clusterrolebindings,rolebindings --all-namespaces)

См. навык gke-multitenancy для планирования корпоративной RBAC и https://docs.cloud.google.com/kubernetes-engine/docs/best-practices/rbac.md.txt

Бинарная авторизация

По умолчанию не включена в «золотом пути», но рекомендуется для производственной среды. Происхождение образа:

# Включение бинарной авторизации
gcloud container clusters update  --region  \
  --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
  --quiet

Сетевые политики

Dataplane V2 (рекомендуемый путь) предоставляет встроенную поддержку сетевых политик. Применение по умолчанию — запрет для каждого пространства имён:

# MCP (предпочтительно)
apply_k8s_manifest(parent="...", yamlManifest="")

# Резервный вариант с использованием kubectl
kubectl apply -f ./assets/default-deny-netpol.yaml -n 

Песочница GKE (gVisor)

Для запуска ненадежных рабочих нагрузок в изолированной песочнице:

# Включение в кластере (стандартные кластеры)
gcloud container clusters update  --region  --enable-gke-sandbox --quiet

# Использование в спецификации пода
# Добавить: runtimeClassName: gvisor

Стандарты безопасности подов (рекомендуемый подход)

Стандарты безопасности подов определяют три профиля, ограничивающих возможности подов. Профильrestricted является «золотым стандартом» по умолчанию для производственных пространств имён.

Профиль Уровень Сценарий использования
привилегированный Без ограничений Системные пространства имён (kube-system),
: : : контроллеры инфраструктуры :
базовый Минимальные ограничения Общие пространства имён /dev, устаревшие приложения
: : : переносящиеся :
ограниченный Оптимальный вариант Производственные рабочие нагрузки — блоки
: : : повышение привилегий, доступ к хосту, :
: : : root :

Принудительное применение с помощью меток пространства имён (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

Стратегия постепенного внедрения:

  1. Начните с предупреждений и аудита существующих пространств имён для выявления нарушений
  2. Исправьте несоответствующие требованиям рабочие нагрузки (удалите привилегированные, hostNetwork, пользователя root и т. д.)
  3. Включить принудительное соблюдение, как только все рабочие нагрузки пройдут проверку

ограничения: запуск от имени root, повышение привилегий, использование сети хоста/PID/IPC, тома с путями хоста и большинство возможностей. «Золотой» вариант файла workload-identity-pod.yaml уже соответствует требованиям.

Ведение журнала сетевой политики (рекомендуется)

С помощью Dataplane V2 (рекомендуемый сценарий) можно включить ведение журнала решений сетевой политики. Это не является настройкой по умолчанию для рекомендуемого сценария — рекомендуется для аудита безопасности.

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

При этом в журнал записываются разрешённые и запрещённые соединения, что полезно для устранения неполадок в правилах сетевой политики и аудита потоков трафика.

Распространённые роли IAM

Пять наиболее распространённых предопределённых ролей IAM для GKE:

Роль Назначение Когда использовать
roles/container.admin Полный контроль над администраторами платформы
: : кластерами и : управлением кластерами :
: : Kubernetes : жизненный цикл :
: : ресурсов : :
роли/container.clusterAdmin Управление кластерами, но операторы кластера
: : не на уровне проектов : которые создают/удаляют :
: : IAM : кластеры :
роли/container.developer Развертывание рабочих нагрузок Приложение
: : (поды, сервисы, : разработчики, развертывающие :
: : развёртывания) : в существующие кластеры :
роли/контейнер.просмотрщик Доступ только для чтения к мониторинга,
: : кластеров и : аудита, или :
: : Kubernetes : информационные панели только для чтения :
: : ресурсы : :
роли/container.clusterViewer Список и получение конвейеры CI/CD, которые
: : сведения о кластере : требуют кластера :
: : только : метаданные :

Принцип минимальных привилегий: начните с ролей roles/container.viewer или roles/container.developer и повышайте уровень доступа только по мере необходимости. Избегайте широкого предоставления ролей roles/container.admin.

Служебные учётные записи и агенты

  • Агент службы GKE (service-@container-engine-robot.iam.gserviceaccount.com): Создаётся автоматически. Управляет узлами, сетью и операциями кластера от вашего имени. Не удаляйте и не изменяйте его права доступа.
  • Учетная запись службы узла: по умолчанию узлы используют стандартную учетную запись службы Compute Engine. Для производственной среды создайте выделенную учетную запись службы с минимальными разрешениями и назначьте её через конфигурацию пула узлов.
  • Идентификация рабочей нагрузки: рекомендуемый способ доступа подков к API Google Cloud. Осуществляет сопоставление учётной записи службы Kubernetes с учётной записью службы Google IAM — см. раздел «Настройка идентификации рабочей нагрузки» выше.

Шаблоны межсервисной аутентификации

Распространённые шаблоны предоставления рабочим нагрузкам GKE доступа к другим сервисам Google Cloud:

# Предоставление рабочей нагрузке GKE доступа к Cloud Storage
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/storage.objectViewer" \
  --quiet

# Предоставление рабочей нагрузке GKE доступа к Cloud SQL
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/cloudsql.client" \
  --quiet

# Предоставить рабочей нагрузке GKE доступ к Pub/Sub
gcloud projects add-iam-policy-binding  \
  --member "serviceAccount:@.iam.gserviceaccount.com" \
  --role "roles/pubsub.subscriber" \
  --quiet

Во всех случаях GSA должен быть привязан к KSA через Workload Identity (см. настройку выше). Затем под использует KSA для аутентификации от имени GSA.

Посмотреть на 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.

Все файлы

0 файлов

Установить gke-security

Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.

Скачать ZIP

Клонируйте репозиторий и скопируйте файлы навыка в свой проект.

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

Копировать Копировать
Быстрая настройка: Скопируйте папку со скиллом в каталог .claude/skills/ Claude автоматически обнаружит и запустит этот скилл
Репозиторий google/skills

Похожие навыки

gmgn-portfolio
Обновлено время 1 июля 2026 г.
zeroize-audit
Обновлено время 1 июля 2026 г.
device-integrity
Обновлено время 29 июня 2026 г.
flutter-use-http-package
Обновлено время 30 июня 2026 г.
OR