Hayat
Скрипт аудита и усиления защиты Google Cloud Platform & ~
Что означает «Hayat»?
Что ж, честно говоря, мне было трудно найти уникальное имя. «Hayat» — турецкое слово, которое означает «Жизнь» на английском, а также имя моей племянницы. Готовы познакомиться с ней?
😍 😍 😍
Hayat — это скрипт аудита и усиления защиты для сервисов Google Cloud Platform, таких как:
- Управление идентификацией и доступом
- Логирование и мониторинг
- Сеть
- Виртуальные машины
- Хранилище
- Экземпляры Cloud SQL
- Кластеры Kubernetes
на данный момент.
Управление идентификацией и доступом
- Убедитесь, что используются корпоративные учетные данные вместо аккаунтов Gmail.
- Убедитесь, что для каждого сервисного аккаунта используются только ключи, управляемые GCP.
- Убедитесь, что сервисный аккаунт не имеет прав администратора.
- Убедитесь, что пользователям IAM не назначена роль «Пользователь сервисного аккаунта» на уровне проекта.
- Убедитесь, что внешние/управляемые пользователем ключи для сервисных аккаунтов ротируются каждые 90 дней или реже.
- Убедитесь, что при назначении пользователям ролей, связанных с сервисными аккаунтами, соблюдается принцип разделения обязанностей.
Логирование и мониторинг
- Убедитесь, что приемники (sinks) настроены для всех записей журнала.
- Убедитесь, что для хранилищ журналов (log-buckets) включено версионирование объектов.
Сеть
- Убедитесь, что сеть по умолчанию не существует в проекте.
- Убедитесь, что в проекте нет устаревших сетей.
- Убедитесь, что DNSSEC включен для Cloud DNS.
- Убедитесь, что RSASHA1 не используется для ключа подписи ключей (key-signing key) в DNSSEC Cloud DNS.
- Убедитесь, что RSASHA1 не используется для ключа подписи зон (zone-signing key) в DNSSEC Cloud DNS.
- Убедитесь, что доступ RDP ограничен из Интернета.
- Убедитесь, что доступ SSH ограничен из Интернета.
- Убедитесь, что частный доступ Google включен для всех подсетей в VPC-сети.
- Убедитесь, что журналы потоков VPC включены для каждой подсети в VPC-сети.
Виртуальные машины
- Убедитесь, что экземпляры не настроены на использование сервисного аккаунта по умолчанию с полным доступом ко всем API Cloud.
- Убедитесь, что для экземпляров виртуальных машин включена опция «Блокировать общепроектные ключи SSH».
- Убедитесь, что oslogin включен для проекта.
- Убедитесь, что опция «Разрешить подключение к последовательным портам» не включена для экземпляра виртуальной машины.
- Убедитесь, что пересылка IP-адресов не включена на экземплярах.
- Убедитесь, что диски виртуальных машин для критически важных экземпляров зашифрованы с помощью ключей шифрования, предоставленных клиентом (CSEK).
Хранилище
- Убедитесь, что корзина Cloud Storage не является анонимно или общедоступной.
- Убедитесь, что для корзины Cloud Storage включено логирование.
Сервисы баз данных Cloud SQL
- Убедитесь, что экземпляр базы данных Cloud SQL требует использования SSL для всех входящих подключений.
- Убедитесь, что экземпляры баз данных Cloud SQL не открыты для всего мира.
- Убедитесь, что экземпляр базы данных MySQL не позволяет никому подключаться с административными привилегиями.
- Убедитесь, что экземпляр базы данных MySQL не разрешает вход root с любого хоста.
Kubernetes Engine
- Убедитесь, что Stackdriver Logging включен в кластерах Kubernetes Engine.
- Убедитесь, что Stackdriver Monitoring включен в кластерах Kubernetes Engine.
- Убедитесь, что устаревшая авторизация отключена в кластерах Kubernetes Engine.
- Убедитесь, что авторизованные сети мастер-узлов включены в кластерах Kubernetes Engine.
- Убедитесь, что кластеры Kubernetes настроены с метками.
- Убедитесь, что веб-интерфейс/панель управления Kubernetes отключен.
- Убедитесь, что в кластерах Kubernetes включен
Автоматический ремонт узлов.
- Убедитесь, что в кластерах Kubernetes Engine включено автоматическое обновление узлов.
- Убедитесь, что для образов узлов кластеров Kubernetes Engine используется оптимизированная для контейнеров ОС (cos).
- Убедитесь, что базовая аутентификация отключена в кластерах Kubernetes Engine.
- Убедитесь, что в кластерах Kubernetes Engine включена сетевая политика.
- Убедитесь, что кластер Kubernetes создан с включенным сертификатом клиента.
- Убедитесь, что кластер Kubernetes создан с включенными диапазонами псевдонимов IP.
- Убедитесь, что контроллер PodSecurityPolicy включен в кластерах Kubernetes Engine.
- Убедитесь, что кластер Kubernetes создан с включенным частным кластером.
- Убедитесь, что частный доступ Google включен в подсетях кластера Kubernetes Engine.
- Убедитесь, что сервисный аккаунт по умолчанию не используется для доступа к проекту в кластерах Kubernetes.
- Убедитесь, что кластеры Kubernetes созданы с ограниченными областями доступа сервисного аккаунта для доступа к проекту.
Требования
Hayat написан на bash с использованием gcloud и совместим с Linux и OSX.
Использование
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
Вы можете использовать с определенными функциями, например, если вы хотите просканировать только кластер Kubernetes:
./hayat.sh --only-k8s
Скриншоты

