Рабочим нагрузкам GKE требуется доступ к API GCP без управления ключами учетных записей служб.
→Включите и настройте Workload Identity в кластере GKE. Сопоставьте Kubernetes Service Accounts (KSA) с Google Service Accounts (GSA).
Почему: Исключает риск утечки ключей учетных записей служб за счет использования кратковременных, автоматически ротируемых учетных данных, полученных из токенов KSA.
Источник↗
Предоставить доступ к внутренним веб-приложениям из любой сети на основе идентификации пользователя и состояния устройства, без VPN.
→Используйте Identity-Aware Proxy (IAP) с Access Context Manager. Определите уровни доступа на основе IP-адреса, состояния устройства (через Endpoint Verification) и идентификации пользователя.
Почему: Переносит контроль доступа с сетевого периметра на отдельных пользователей и устройства, обеспечивая принципы нулевого доверия.
Источник↗
Конвейеру CI/CD (например, GitHub Actions, GitLab) требуется доступ к ресурсам GCP без долговременных учетных данных.
→Используйте Workload Identity Federation. Создайте пул поставщиков для внешнего IdP (например, GitHub OIDC) и настройте условия атрибутов для ограничения доступа к конкретным репозиториям или веткам.
Почему: Бесключевая аутентификация для внешних рабочих нагрузок. Внешняя система предоставляет свой собственный токен, который обменивается на кратковременный токен GCP.
Принудительно применять политики безопасности IAM для всей организации, например, предотвращать создание ключей учетных записей служб или ограничивать предоставление IAM для определенных доменов.
→Используйте ограничения Organization Policy, такие как `iam.disableServiceAccountKeyCreation` и `iam.allowedPolicyMemberDomains`.
Почему: Политики организации наследуются и не могут быть переопределены владельцами проектов, что обеспечивает согласованную политику безопасности.
Пользователю требуется временный, аудируемый и одобренный административный доступ к производственной среде для устранения инцидента.
→Используйте Privileged Access Manager (PAM) для just-in-time (JIT) доступа. Пользователь запрашивает определенную роль на ограниченное время, что проходит через рабочий процесс утверждения.
Почему: Устраняет постоянные привилегии, являющиеся основным риском безопасности. Доступ ограничен по времени, обоснован и полностью аудируется.
Несколько команд используют один кластер GKE. Каждая команда должна управлять ресурсами только в своем собственном пространстве имен.
→Предоставьте роль IAM `roles/container.clusterViewer` на уровне проекта. Используйте Kubernetes RBAC `Role` и `RoleBinding` в каждом пространстве имен для предоставления конкретных разрешений (например, редактирование, просмотр).
Почему: Разделяет аутентификацию на уровне кластера (IAM) от авторизации на уровне пространства имен (Kubernetes RBAC), обеспечивая детальный, многопользовательский контроль.
Вызовы API должны использовать кратковременные учетные данные вместо статических ключей.
→Используйте имитацию учетной записи службы. Предоставьте субъекту роль `roles/iam.serviceAccountTokenCreator` в целевой учетной записи службы для генерации кратковременных токенов доступа OAuth 2.0.
Почему: Позволяет избежать распространения и управления долговременными ключами. Срок действия токенов истекает автоматически (по умолчанию 1 час), что снижает риск в случае компрометации.
Подрядчику нужен доступ к определенным ресурсам, но доступ должен автоматически истекать через 30 дней.
→Предоставьте необходимую роль IAM с временным условием IAM, например, `request.time < timestamp("YYYY-MM-DDTHH:MM:SSZ")`.
Почему: Автоматизирует отзыв доступа, избегая ручной очистки и гарантируя, что доступ не будет случайно продлен.
Разрешать развертывание в производственные кластеры GKE только тех образов контейнеров, которые были подписаны конвейером CI/CD.
→Реализуйте Binary Authorization. Создайте аттестацию в конвейере CI для подписи образов. Настройте политику Binary Authorization в кластере GKE, чтобы требовать эту аттестацию.
Почему: Обеспечивает безопасную цепочку поставок программного обеспечения, предотвращая запуск непроверенных или подделанных образов в производстве.
Источник↗
Предоставить разрешения на ресурсы на основе назначенных им тегов, а не отдельных имен ресурсов.
→Используйте IAM Conditions с выражениями тегов ресурсов, такими как `resource.matchTag("123456789/env", "prod")`.
Почему: Обеспечивает масштабируемый, атрибутивно-ориентированный контроль доступа (ABAC). Разрешения динамичны и применяются автоматически по мере маркировки ресурсов.
Разрешить сервисному проекту развертывать виртуальные машины в хост-проекте Shared VPC без предоставления прав сетевого администратора.
→В хост-проекте предоставьте учетной записи службы сервисного проекта роль `roles/compute.networkUser` для конкретных подсетей, которые ей необходимо использовать.
Почему: Следует принципу наименьших привилегий. Сервисные проекты могут использовать сеть, но не могут изменять ее (например, изменять правила брандмауэра), которая остается централизованно управляемой.
Пользователь с `storage.admin` не может создать корзину. Вам нужно определить основную причину.
→Проверьте наличие политики IAM Deny на более высоком уровне (папка, организация), которая запрещает разрешение `storage.buckets.create`.
Почему: Политики IAM Deny всегда отменяют любые политики разрешения. Это мощный инструмент для обеспечения не подлежащих обсуждению границ безопасности.
Включить SSO для пользователей локального Active Directory для доступа к консоли Google Cloud.
→Используйте Google Cloud Directory Sync (GCDS) для синхронизации идентификаторов с Cloud Identity. Настройте федерацию (SAML) между Cloud Identity и AD FS (или другим IdP).
Почему: Сохраняет AD как источник истины для идентификаторов, обеспечивая при этом бесшовный, федеративный SSO для пользователей.