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

Раздел Безопасность содержит сведения о ServiceAccounts и Issuers.

ServiceAccounts

ServiceAccounts - тип учетной записи, которая в Kubernetes обеспечивает индивидуальную идентификацию в кластере и не относится к учетной записи пользователей. Поды, системные компоненты и объекты внутри и за пределами кластера могут использовать учетные данные определенного ServiceAccount для идентификации в качестве этого ServiceAccount.

На вкладке ServiceAccounts можно создать, отредактировать, удалить или просмотреть ранее созданные ServiceAccount.

Чтобы добавить ServiceAccount нажмите на кнопку + Добавить ServiceAccount.

В открывшемся окне необходимо задать название ServiceAccount. При необходимости можно проставить лейблы.

На экране при наличии у пользователя прав доступно назначение кластерных и неймспейсных ролей для ServiceAccount.

Для назначения неймспейсной роли нажмите на значок карандаша рядом с заголовком Роль. Для назначения кластерной роли нажмите на значок карандаша рядом с заголовком Кластерная роль.

В открывшемся боковом экране нажмите + возле заголовка “Редактирование списка ролей”. Последовательно выберите роли из выпадающего списка. Предварительно выбранные роли будут отображены в списке.

Для удаления добавленной роли из предварительно выбранного списка нажмите в строке элемента списка ролей.

Для сохранения нажмите кнопку Сохранить в боковом меню.

Выбранный список неймспейсных ролей будет доступен под заголовком Роль, кластерных ролей под заголовком Кластерная роль страницы Serviceaccount. Для редактирования списка нажмите на значок карандаша или надпись “показать все ->”.

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

После завершения создания ServiceAccount нажмите кнопку Сохранить.

Вы можете внести изменения в YAML манифест ServiceAccount. После изменения манифеста выполните проверку. Результат проверки будет доступен в правой части экрана. Раскройте блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста не пройдена, проверка манифеста не будет доступна.

Сохраните изменения, внесенные в манифест. Несохраненные данные не будут применены.

Issuers

Issuers - ресурсы Kubernetes, представляющие центры сертификации в неймспейсе, которые могут генерировать подлинные сертификаты, выполняя запросы на подпись сертификатов.

На вкладке Issuers можно создать, отредактировать, удалить или просмотреть ранее созданные Issuers.

Чтобы добавить Issuer нажмите на кнопку + Добавить 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.(т.е. будут разрешены небезопасные соединения). Включайте этот параметр только в средах разработки.

В части Ключ учетной записи ACME необходимо ввести имя и ключ Secret.

Обозначьте solvers: выберите тип солвера: HTTP01 или DNS01.

  • Для HTTP01 заполните поле ClassIngress и нажмите кнопку Добавить.

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

  • Ваш провайдер не блокирует порт 80;
  • Ингресс контроллер доступен из интернета по 80 порту;
  • Вы не используете сертификаты с подстановкой (wildcard-сертификаты).

Введите класс Ингресса (ClassIngress), который должен быть использован для решения Challenge от Let’s Encrypt. Посмотреть, какие ClassIngress есть в кластере можно с помощью команды:

kubectl get ingressclass -A

Если не указать ClassIngress, будет использован дефолтный класс.

  • Для DNS01/acmeDNS заполните значение хоста. В AccountSecretRef впишите имя и ключ, затем нажмите кнопку Добавить.

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

  • Вы используете сертификаты с подстановкой (wildcard-сертификаты);
  • Есть несколько web-серверов.

Например:

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, затем нажмите кнопку Добавить.

Например:

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.

После завершения настройки Issuer нажмите кнопку Сохранить.

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