Безопасность
ServiceAccounts
ServiceAccounts ‒ тип учетной записи, которая в РОСА Кубис обеспечивает индивидуальную идентификацию в кластере и не относится к учетной записи пользователей. Поды, системные компоненты и объекты внутри и за пределами кластера могут использовать учетные данные определенного ServiceAccount для идентификации в качестве этого ServiceAccount.
На странице "ServiceAccounts" можно создать, отредактировать, удалить или просмотреть ранее созданные ServiceAccount.
Создание ServiceAccount
Чтобы добавить ServiceAccount, нужно нажать на кнопку + Добавить ServiceAccount.
В открывшемся окне необходимо задать название ServiceAccount. При необходимости можно проставить лейблы.
На экране при наличии у пользователя прав доступно назначение кластерных и неймспейсных ролей для ServiceAccount (рисунок 356).

Рисунок 356 ‒ Назначение ролей
Для назначения неймспейсной роли нужно нажать на значок карандаша рядом с заголовком "Роль"; для назначения кластерной роли нажать на значок карандаша рядом с заголовком "Кластерная роль".
В открывшемся боковом экране нужно нажать + возле заголовка "Редактирование списка ролей". Затем последовательно выбрать роли из выпадающего списка. Предварительно выбранные роли будут отображены в списке.
Для удаления добавленной роли из предварительно выбранного списка нужно нажать Удалить в строке элемента списка ролей.
Для сохранения следует нажать кнопку Сохранить в боковом меню.
Выбранный список неймспейсных ролей будет доступен под заголовком "Роль", кластерных ролей ‒ под заголовком "Кластерная роль" страницы "Serviceaccount". Для редактирования списка требуется нажать на значок карандаша или надпись "показать все ->".
После завершения создания ServiceAccount необходимо нажать кнопку Сохранить.
Чтобы удалить элемент, требуется нажать Удалить в строке элемента.
Можно внести изменения в YAML-манифест ServiceAccount. После изменения манифеста следует выполнить проверку. Результат проверки будет доступен в правой части экрана. Можно раскрыть блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста не пройдена, проверка манифеста не будет доступна.
Далее необходимо сохранить изменения, внесенные в манифест. Несохраненные данные не будут применены.
Issuers
Issuers ‒ ресурсы РОСА Кубис, представляющие центры сертификации в неймспейсе, которые могут генерировать подлинные сертификаты, выполняя запросы на подпись сертификатов.
На странице "Issuers" можно создать, отредактировать, удалить или просмотреть ранее созданные Issuers.
Чтобы добавить Issuer, нужно нажать на кнопку + Добавить Issuer.
В открывшемся окне необходимо заполнить (рисунок 357):

Рисунок 357 ‒ Добавление Issuer
- Название Issuer;
- Спецификацию объекта ‒ из выпадающего списка выбрать тип из доступных ACME и Vault.
Issuer можно изменить с помощью YAML-манифеста, перейдя на вкладку "Манифест". После внесения изменений в манифест требуется выполнить проверку. Результат проверки будет доступен в правой части экрана. Можно раскрыть блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста Issuer не пройдена, не доступна проверка манифеста.
Далее следует сохранить изменения, внесенные в манифест. Несохраненные данные не будут применены.
Настройка ACME
Для настройки должна быть в наличии учетная запись в ACME (Automated Certificate Management Environment). Настройка выполняется по следующим шагам:
- Заполнить сведения о сервере ACME, например https://acme-v02.api.letsencrypt.org/directory.
- Ввести email, который связан с учетной записью ACME. Определить, нужно ли пропускать проверку TLS.
Примечание ‒ Если пропустить проверку TLS, то запросы к серверу ACME не будут подтверждены сертификатом TLS (т.е будут разрешены небезопасные соединения). Следует включать этот параметр только в средах разработки.
- При установлении защищенного TLS-соединения можно указать в поле "CA Bundle" пакет сертификатов центра сертификации. CA Bundle содержит корневой сертификат и промежуточный в формате PEM для проверки подлинности и доверия сертификатам сервера ACME. Следует обратить внимание, что данные файла CA Bundle должны содержать
----BEGIN CERTIFICATE----и----END CERTIFICATE----. Если CA Bundle не указан, но проверка TLS-соединения устанавливается, то для проверки соединения используется пакет системных сертификатов внутри контейнера. - В части "Ключ учетной записи ACME" необходимо ввести имя и ключ Secret.
- Обозначить solvers ‒ выбрать тип солвера: HTTP01 или DNS01.
- Для HTTP01 заполнить поле ClassIngress и нажать кнопку
Добавить.
Может быть использован, если:
- провайдер не блокирует порт
80; - Ingress- контроллер доступен из сети Интернет по
80порту; - не используются сертификаты с подстановкой (wildcard-сертификаты).
- Ввести класс Ingress (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt.
- Посмотреть, какие ClassIngress есть в кластере можно с помощью команды:
kubectl get ingressclass -A
Если не указать ClassIngress, будет использован класс по умолчанию.
- Для DNS01/acmeDNS заполнить значение хоста. В AccountSecretRef вписать имя и ключ, затем нажать кнопку
Добавить.
Может быть использован, если:
- используется сертификаты с подстановкой (wildcard-сертификаты);
- есть несколько web-серверов.
Пример Issuer:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
solvers:
‒ dns01:
acmeDNS:
host: https://acme.example.com
accountSecretRef:
name: acme-dns
key: acmedns.json
- Для DNS01/rfc2136 заполнить значение Nameserver и TsigAlgorithm. В TsigSecretSecretRef вписать имя и ключ, затем нажать кнопку
Добавить.
Может быть использован, если есть:
- сервер DNS, настроенный с поддержкой протокола RFC2136;
- доступ к данным (ключи TSIG) для авторизации обновлений DNS.
Пример:
rfc2136:
nameserver: 1.2.3.4:53
tsigKeyName: example-com-secret
tsigAlgorithm: HMACSHA512
tsigSecretSecretRef:
name: tsig-secret
key: tsig-secret-key
где:
tsigKeyName‒ имя ключа TSIG-аутентификации (например, example-key);tsigAlgorithm‒ алгоритм, используемый для создания ключа TSIG (например, hmac-md5);tsigSecretSecretRef.name‒ секрет, содержащий секретный ключ для TSIG-аутентификации.- Для DNS01/webhook заполнить данные Cert-менеджера, подставляя в поля значение GroupName, SolverName и Config, затем нажать кнопку
Добавить.
Пример Issuer:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
...
solvers:
‒ dns01:
webhook:
groupName: $WEBHOOK_GROUP_NAME
solverName: $WEBHOOK_SOLVER_NAME
config:
...
<webhook-specific-configuration>
См. подробнее о настройке TLS.
Настройка Vault
Для настройки должна быть в наличии учетная запись в vault. Согласно официальной документации Cert Manager рекомендуемый способ интеграции для текущей версии ‒ ServiceAccountRef. Поэтому для интеграции необходимо выбрать ServiceAccount из выпадающего списка. ServiceAccount должен быть создан в этом же неймспейсе и иметь в этом неймспейсе роль vault-issuer, соответствующую правам:
rules:
‒ apiGroups: ['']
resources: ['serviceaccounts/token']
resourceNames: ['vault-issuer']
verbs: ['create']
На текущий момент создание roles и clusterroles недоступно из интерфейса Комплекса. Для создания роли необходимо скачать kubeconfig кластера, обратиться к кластеру через командную строку и загрузить манифест с соответствующей ролью. Созданные роли отобразятся в списке доступных ролей при создании ServiceAccount.
После выбора ServiceAccount в поле "mountPath" заполнить путь монтирования Vault для использования при аутентификации в Vault, например /v1/auth/kubernetes.
В поле "Роль" следует прописать роль пользователя на стороне Vault, например my-app-1.
В поле "Path" нужно прописать путь к монтируемому пути конечной точки подписи PKI-backend Vault, например my_pki_mount/sign/my-role-name.
В поле "Сервер" следует прописать адрес подключения к серверу Vault, например https://vault.local.
С целью проверки подлинности и доверия сертификатам сервера Vault можно указать "CA Bundle", содержащий корневой и промежуточный сертификаты в формате PEM. Доступно два способа включения CA Bundle в Issuers:
- Выбрать "Файл" в блоке "CA Bundle", чтобы ввести данные файла CA Bundle. Следует обратить внимание, что данные файла CA Bundle должны содержать
----BEGIN CERTIFICATE----и----END CERTIFICATE----. - Выбрать "Ключ к CA Bundle" в блоке "CA Bundle", чтобы загрузить CA Bundle с указанием ссылки на Secret в вашем кластере. Выбрать Secret, который содержит CA Bundle, и указать ключ доступа к нему.
Если CABundle не указан в Issuer, пакет сертификатов cert-manager используется для проверки TLS-соединения.
После завершения настройки Issuer необходимо нажать кнопку Сохранить.
Чтобы удалить элемент, требуется нажать Удалить в строке элемента.