Интеграция с Active Directory — критическое требование. Все инженеры должны аутентифицироваться через корпоративный AD:
# Настройка LDAP через Harbor UI: Administration → Configuration → Authentication
# Или через API:
curl -k -u admin:'H@rb0r_Adm1n_2026!' \
-X PUT https://harbor.oborontech.local/api/v2.0/configurations \
-H 'Content-Type: application/json' \
-d '{
"auth_mode": "ldap_auth",
"ldap_url": "ldaps://dc01.oborontech.local:636",
"ldap_search_dn": "CN=harbor-svc,OU=ServiceAccounts,DC=oborontech,DC=local",
"ldap_search_password": "Harb0r_LDAP_Bind!",
"ldap_base_dn": "OU=Users,DC=oborontech,DC=local",
"ldap_filter": "(&(objectClass=person)(memberOf=CN=DockerUsers,OU=Groups,DC=oborontech,DC=local))",
"ldap_uid": "sAMAccountName",
"ldap_scope": 2,
"ldap_group_base_dn": "OU=Groups,DC=oborontech,DC=local",
"ldap_group_search_filter": "(objectClass=group)",
"ldap_group_attribute_name": "cn",
"ldap_group_admin_dn": "CN=HarborAdmins,OU=Groups,DC=oborontech,DC=local",
"ldap_verify_cert": true
}'
RBAC в Harbor работает на уровне проектов (projects). Каждый проект — изолированное пространство с собственными правами:
# Создание проекта через API
curl -k -u admin:'H@rb0r_Adm1n_2026!' \
-X POST https://harbor.oborontech.local/api/v2.0/projects \
-H 'Content-Type: application/json' \
-d '{
"project_name": "weapons-system",
"public": false,
"metadata": {
"auto_scan": "true",
"prevent_vul": "true",
"severity": "high",
"reuse_sys_cve_allowlist": "true"
},
"storage_limit": 107374182400
}'
# Роли в проекте:
# - Project Admin — управление участниками, политиками
# - Maintainer — push/pull, удаление образов, запуск сканирования
# - Developer — push/pull
# - Guest — только pull
# - Limited Guest — только pull конкретных артефактов
# Добавление LDAP-группы в проект
curl -k -u admin:'H@rb0r_Adm1n_2026!' \
-X POST https://harbor.oborontech.local/api/v2.0/projects/weapons-system/members \
-H 'Content-Type: application/json' \
-d '{
"role_id": 2,
"member_group": {
"group_name": "WeaponsDevTeam",
"group_type": 1,
"ldap_group_dn": "CN=WeaponsDevTeam,OU=Groups,DC=oborontech,DC=local"
}
}'
# role_id: 1=Admin, 2=Developer, 3=Guest, 4=Maintainer
Результат: разработчик из AD-группы WeaponsDevTeam логинится в Harbor своим доменным паролем и видит только проект weapons-system. Push и pull доступны, удаление образов — нет (нужна роль Maintainer).
Оставить комментарий