В этом руководстве объясняется, как можно настроить HTPasswd в качестве провайдера для кластера OCP / OKD.
Вы можете настроить сервер OpenShift OAuth на использование ряда провайдеров идентификации, а именно:
HTPasswd | Проверяет имена пользователей и пароли по секрету, в котором хранятся учетные данные, созданные с помощью htpasswd. |
LDAP | Конфигурация провайдера идентификации LDAP для проверки имен пользователей и паролей на сервере LDAPv3, используя простую аутентификацию. |
Keystone |
Включает общую аутентификацию с сервером OpenStack Keystone v3.
|
OpenID Connect |
Интегрируется с провайдером идентификации OpenID Connect, используя Code FLow.
|
GitHub |
Конфигурация провайдера идентификации GitHub для проверки имен пользователей и паролей с помощью GitHub или сервера аутентификации OAuth GitHub Enterprises.
|
Провайдер HTPasswd OAuth
Этот вариант проверяет пользователей по секрету, который содержит имена пользователей и пароли, сгенерированные с помощью команды htpasswd из проекта Apache HTTP Server.
Как администратор кластера, вы можете изменить данные в секрете.
Что означает обновление имен пользователей и паролей, используемых для аутентификации.
Управление пользователями кластера с помощью HTPasswd Identity Provider подходит только для сред разработки с небольшим количеством пользователей.
В большинстве производственных сред с сотнями и тысячами пользователей необходим более мощный провайдер авторизации, который интегрируется с IDMорганизации.
Управление пользователями OpenShift / OKD с провайдером идентификации HTPasswd
Чтобы добавить другого инденити провайдера в OpenShift / OKD, вам необходимо получить доступ к вашему кластеру OpenShift в качестве администратора кластера.
Если вы работаете с недавно установленным кластером OpenShift, доступны два способа аутентификации запросов API:
- С виртуальным пользователем и паролем kubeadmin, который предоставляет токен доступа OAuth.
- Использование файла kubeconfig, в который встроен сертификат клиента X.509, срок действия которого никогда не истекает.
export KUBECONFIG=/root/auth/kubeconfig
$ oc get nodes
В качестве альтернативы вы можете использовать параметр –config команды oc:
$ oc --config /path/to/kubeconfig get nodes
Для аутентификации с виртуальным пользователем kubeadm вы выполните команду, аналогичную приведенной ниже.
$ oc login -u kubeadmin -p KubeadmUserPassword
Настройка индентити провайдера HTPasswd
Начнем с создания необходимого файла htpasswd, в котором будут храниться учетные данные пользователя.
Нужно установить один пакет, который предоставляет команду htpasswd.
--- CentOS / RHEL / Fedora ---
$ sudo yum -y install httpd-tools
--- Ubuntu / Debian ---
$ sudo apt install apache2-utils
--- Arch Linux / Manjaro
$ sudo pacman -S apache
Создание файла HTPasswd
Создайте новый или обновите существующий файл htpasswd.
$ htpasswd -c -B -b ocp_users.htpasswd user1 password1
Чтобы добавить или обновить учетные данные, используйте:
$ htpasswd -Bb ocp_users.htpasswd user2 password2
$ htpasswd -Bb ocp_users.htpasswd user3 password3
Убедитесь, что файл был создан.
$ cat ocp_users.htpasswd
user1:$2y$05$VNgzIy33djzSlOLkHqiR6.CG9oQaPM4CZz4q86Z4s4m23gtllV7I.
user2:$2y$05$0grDO248lSANnOWOlqY2BO/B6/CWm6yJGSYBfZgDnJFBsVrBIIaTW
user3:$2y$05$pqp6mo9oGk7E2AIfawDKg.ntUIUjIMRidYvR017mRxdhs5.ctWED2
Чтобы удалить пользователя из htpasswd, выполните следующую команду:
$ htpasswd -D ocp_users.htpasswd user3
Deleting password for user user3
Создайте секрет HTPasswd
Нам нужно определить секрет, который содержит файл пользователя HTPasswd, прежде чем мы сможем использовать провайдер идентификации HTPasswd.
$ oc create secret generic htpass-secret \
--from-file=htpasswd=./ocp_users.htpasswd \
-n openshift-config
Настройка пользовательского ресурса OAuth
Чтобы использовать провайдер идентити HTPasswd, пользовательский ресурс OAuth должен быть отредактирован, чтобы добавить запись в массив провайдеров .spec.identity.
Давайте создадим новый файл.
$ vim htpasswd-oauth.yaml
Добавьте и отредактируйте содержание, показанное ниже.
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: Local Password
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret
Где:
- ocp-htpasswd-provider – это имя пройвайдера. Это имя добавляется к имени пользователя провайдера для формирования имени.
- htpass-secret – это имя существующего секретного файла, содержащего файл, созданный с использованием htpasswd.
Примените определенный CR:
oc apply -f htpasswd-oauth.yaml
$ oc login -u <username>