config.json):
"http": {
…
"auth": {
"ldap": {
"insecure": true,
"address": "dc1.test.alt",
"port": 389,
"startTLS": false,
"baseDN": "OU=OU,DC=test,DC=alt",
"userAttribute": "sAMAccountName",
"userGroupAttribute": "memberOf",
"skipVerify": false,
"credentialsFile": "/etc/zot/ldap-creds.json"
}
}
}
где:
insecure — разрешает подключение к LDAP-серверу без использования TLS/SSL. Установите значение true, если сервер не поддерживает шифрование (рекомендуется только для тестовых сред);
address — IP-адрес или доменное имя LDAP-сервера;
port — порт службы LDAP (обычно 389 для незашифрованного соединения, 636 для LDAPS);
startTLS — включает шифрование соединения с помощью StartTLS. Установите true, если сервер поддерживает StartTLS поверх порта 389;
baseDN — базовое Distinguished Name (DN), с которого начинается поиск пользователей в каталоге;
userAttribute — имя атрибута, содержащего логин пользователя (для AD обычно используется sAMAccountName);
userGroupAttribute — имя атрибута, содержащего информацию о группах, в которые входит пользователь (в AD это memberOf);
skipVerify — пропускает проверку сертификата сервера при использовании TLS/StartTLS (не рекомендуется в production);
credentialsFile — путь к файлу с учётными данными для привязки (bind) к LDAP-серверу.
/etc/zot/ldap-creds.json):
{
"bindDN": "cn=administrator_zot@test.alt",
"bindPassword": "P@$$word"
}
где:
bindDN — учётная запись, используемая для поиска пользователей в каталоге;
bindPassword — пароль для учётной записи.
# htpasswd -Bbn alice mypass > /etc/zot/htpasswd
{
"http": {
…
"auth": {
"htpasswd": {
"path": "/etc/zot/htpasswd"
}
}
}
}
Примечание
accessControl по принципу:
репозиторий → пользователь/группа → разрешённые действия (read, create, update, delete)
Таблица 12.4. Политики контроля доступа
|
Тип политики
|
Атрибут
|
Описание
|
|---|---|---|
|
По умолчанию
|
defaultPolicy
|
Действия, разрешённые аутентифицированному пользователю при отсутствии явных правил
|
|
Для конкретного пользователя
|
users, actions
|
Права для конкретных пользователей
|
|
Для группы
|
groups, actions
|
Права для групп
|
|
Анонимная
|
anonymousPolicy
|
Доступ для неаутентифицированных пользователей
|
|
Метрики
|
metrics
|
Доступ к endpoint метрик
|
|
Администраторская
|
adminPolicy
|
Полный доступ ко всем репозиториям
|
{
"http": {
…
"accessControl": {
"repositories": {
"**": {
"defaultPolicy": ["read"],
"policies": [{
"users": ["alice"],
"actions": ["read", "create"]
}]
},
"secure/*": {
"policies": [{
"groups": ["admins"],
"actions": ["read", "create", "delete"]
}],
"defaultPolicy": ["read"]
}
},
"adminPolicy": {
"users": ["admin"],
"actions": ["read", "create", "update", "delete"]
}
}
}
}
{
"accessControl": {
"repositories": {
"myalt": {
"policies": [{
"groups": ["CN=DevOps,OU=OU,DC=test,DC=alt"],
"actions": ["read", "create", "update"]
}]
}
}
}
}
Важно

$zli image list --config local --user alice:mypass$zli image list --config local --user 'mun:P@$$word'
Примечание