Безопасность
На этой странице
Раздел Безопасность содержит сведения о 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 нажмите кнопку Сохранить.
Чтобы удалить элемент, нажмите в строке элемента.