├── README.md └── README-RU.md /README.md: -------------------------------------------------------------------------------- 1 | # Security Requirements for Yandex.Cloud configuration 2 | 3 | ## Network Security 4 | - Virtual machines should be assigned to security groups based on the least privileged principle 5 | - VM group templates should have a security group defined based on the least privileged principle 6 | - Virtual machines are not allowed to assign a public IP address 7 | - The Elasticsearch cluster should be assigned to security group based on the least privileged principle 8 | - The Kafka cluster should be assigned to security group based on the least privileged principle 9 | - The database (ClickHouse, MongoDB, MySQL, PostgreSQL) should be assigned a security group based on the least privileged principle 10 | - The database (ClickHouse, MongoDB, MySQL, PostgreSQL) is not allowed to assign public access 11 | - The bucket (ObjectStorage) should not have rules and policies that allow public access 12 | - Disks, Snapshots, Images should not be publicly available 13 | - Kubernetes cluster should not have a public IP address 14 | - The Kubernetes cluster should be assigned a security group with rules assigned based on the least privileged principle 15 | - The Control Plane of the cluster should be located in a separate VPC from the workers. 16 | - Security group should not allow inbound and outbound connections without IP restriction 17 | - Security groups should not allow access from private networks without IP restriction 18 | - The security group should not contain a range of ports 19 | 20 | ## Access Control 21 | 22 | - AD FS with integrated 2FA should be configured for cloud console access. Cloud administrators and maintainers other than the cloud owner should authenticate to the cloud through this AD FS. (optional) 23 | - The cloud should not have service accounts and system groups with admin rights 24 | - Roles should be assigned according to the principle of the least privileged, excluding the use of the editor role 25 | - All users with edit, admin, owner rights added to Yandex.Cloud (not via AD FS with 2FA) should have two-factor authentication configured into their Yandex account 26 | - Serial console should be disabled 27 | - It is forbidden to store authorization keys in source code. All secrets, keys, passwords, and tokens should be stored in a secure Vault / KMS storage 28 | - For each task, a separate service account should be created with the minimum required set of privileges. The name of the service account should reflect its tasks and assigned rights when created 29 | - It is impossible to create API keys (instead of those authorized to obtain an IAM token) without agreement with the IS Department 30 | - The bucket should not have rules that allow full access, as well as read / write access for all authenticated users 31 | 32 | ## Logging requirements 33 | 34 | - Audit Trails service should be configured for all supported resources. 35 | 36 | ## Other 37 | 38 | - If the bucket contains personal data, banking, or commercial secrets, then encryption should be configured for it 39 | - Versioning should be configured for the bucket 40 | - When creating a Kubernetes cluster in Yandex.Cloud, a network policy should be created based on the principle of the least privileged principle 41 | - The Kubernetes cluster should be configured according to CIS (for configuration that available for change by managed kubernetes) 42 | - It is desirable to configure updates for the cluster 43 | 44 | ## Marketplace 45 | https://cloud.yandex.com/en-ru/marketplace?categories=security 46 | -------------------------------------------------------------------------------- /README-RU.md: -------------------------------------------------------------------------------- 1 | # Требования к безопасному конфигурированию Яндекс.Облака 2 | 3 | ## Сетевая безопасности 4 | - Виртуальные машины должны быть определены в группы безопасности с правилами, назначенные по принципам наименьших привилегий 5 | - Шаблонам группы ВМ должна быть определена группа безопасности с правилами, назначенные по принципам наименьших привилегий 6 | - Виртуальным машинам запрещено назначать публичный IP-адрес 7 | - Кластеру Elasticsearch должна быть назначена группа безопасности с правилами, назначенные по принципам наименьших привилегий 8 | - Кластеру Kafka должна быть назначена группа безопасности с правилами, назначенные по принципам наименьших привилегий 9 | - Базе данных (ClickHouse, MongoDB, MySQL,PostgreSQL) должна быть назначена группа безопасности с правилами, назначенные по принципам наименьших привилегий 10 | - Базе данных (ClickHouse, MongoDB, MySQL, PostgreSQL) запрещено назначать публичный доступ 11 | - У бакета (ObjectStorage) не должно быть правил и политик, разрешаюших публичный доступ  12 | - Образы Disks, Snapshots, Images не должны быть доступы публично 13 | - Kubernetes кластер не должен иметь публичный IP-адрес 14 | - Кластеру Kubernetes должна быть назначена группа безопасности с правилами, назначенные по принципам наименьших привилегий 15 | - Control Plane кластера Kubernetes должен располагаться в отдельном VPC от воркеров 16 | - Группы безопасности не должны разрешать входящие и исходящие соединения без ограничения по IP 17 | - Группы безопасности не должны разрешать доступ из частных сетей без ограничения по IP 18 | - Группы безопасности не должны содержать диапозон портов 19 | 20 | ## Управление доступом 21 | 22 | - Для доступа в консоль облака должна быть настроена интеграция с AD FS с интегрированным 2FA. Администраторы облака и сопровождение, кроме владельца облака, должны аутентифицироваться в облаке через этот AD FS. (опционально) 23 | - В облаке не должно быть заведено сервисных аккаунтов и системных групп с правами admin 24 | - Роли должны назначаться по принципу наименьших привилегий, исключая использования роли editor 25 | - У всех пользователей с правами edit, admin, owner, добавленных в Яндекс.Облако не через AD FS, должна быть настроена двухфакторная аутентификация для входа в аккаунт 26 | - У виртуальной машины должен быть отключен доступ к серийной консоли 27 | - Запрещено хранить авторизационные ключи в открытом виде. Все секреты, ключи, пароли и токены должны храниться в защищенном хранилище Vault/KMS 28 | - Для каждой задачи должен быть создан отдельный сервисный аккаунт с минимальным необходимым набор привилегий. Название сервисного аккаунта должно отражать его задачи и заданные права при создании 29 | - Создавать API-ключи (вместо авторизованных для получения IAM-токена) без согласования с ИБ нельзя 30 | - У бакета не должны быть правил, разрешаюших полный доступ, а также доступ на чтение и запись для всех аутентифицированных пользователей 31 | 32 | ## Требования к логированию 33 | 34 | - Для всех поддерживаемых ресурсов должен быть настроен сервис Audit Trails 35 | 36 | ## Отдельные настройки сервисов 37 | 38 | - Если бакет содержит ПДн, банковскую или коммерческую тайну, то для него должно быть настроено шифрование 39 | - Для бакета должно быть настроено версионирование 40 | - При создании кластера Kubernetes в Яндекс.Облаке должна быть создана сетевая политика по принципу наименьших привилегий 41 | - Kubernetes кластер должен соответствовать CIS (для доступной конфигурации в рамках сервиса Managed Kubernetes) 42 | - Желательно настроить окно обновлений для Kubernetes кластера для своевременного получения обновлений безопасности 43 | 44 | ## Маркетплейс 45 | https://cloud.yandex.com/en-ru/marketplace?categories=security 46 | 47 | --------------------------------------------------------------------------------