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

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). Настройка выполняется по следующим шагам:

  1. Заполнить сведения о сервере ACME, например https://acme-v02.api.letsencrypt.org/directory.
  2. Ввести email, который связан с учетной записью ACME. Определить, нужно ли пропускать проверку TLS.

Примечание ‒ Если пропустить проверку TLS, то запросы к серверу ACME не будут подтверждены сертификатом TLS (т.е будут разрешены небезопасные соединения). Следует включать этот параметр только в средах разработки.

  1. При установлении защищенного TLS-соединения можно указать в поле "CA Bundle" пакет сертификатов центра сертификации. CA Bundle содержит корневой сертификат и промежуточный в формате PEM для проверки подлинности и доверия сертификатам сервера ACME. Следует обратить внимание, что данные файла CA Bundle должны содержать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----. Если CA Bundle не указан, но проверка TLS-соединения устанавливается, то для проверки соединения используется пакет системных сертификатов внутри контейнера.
  2. В части "Ключ учетной записи ACME" необходимо ввести имя и ключ Secret.
  3. Обозначить solvers ‒ выбрать тип солвера: HTTP01 или DNS01.
  • Для HTTP01 заполнить поле ClassIngress и нажать кнопку Добавить.

Может быть использован, если:

  • провайдер не блокирует порт 80;
  • Ingress- контроллер доступен из сети Интернет по 80 порту;
  • не используются сертификаты с подстановкой (wildcard-сертификаты).
  1. Ввести класс Ingress (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt.
  2. Посмотреть, какие 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 необходимо нажать кнопку Сохранить.

Чтобы удалить элемент, требуется нажать Удалить в строке элемента.