Настройка аутентификации для частных репозиториев
Это руководство предназначено специально для репозиториев GitLab. Шаги настройки адаптированы под требования GitLab к аутентификации и API.
В этом руководстве описано, как настроить аутентификацию для частных репозиториев в PAC. Для доступа PAC к содержимому репозитория и его клонирования частные репозитории требуют учетные данные для аутентификации.
PAC использует аутентификацию для частных репозиториев:
- Аутентификация API Git Provider (
git_provider.secret): используется для операций API, таких как создание webhook, обновление статуса PR и доступ к метаданным репозитория. PAC также автоматически создает на основе этого токена секрет аутентификации для git clone, который используется в PipelineRuns.
Содержание
Предварительные требованияОбзорШаги настройкиШаг 1: Создайте access token в GitLabШаг 2: Создайте Kubernetes SecretСоздание webhook secret (необязательно)Шаг 3: Обновите Repository CRПроверка доступа к частному репозиториюПроверка Repository CRПроверка логов PAC ControllerПроверка запуска pipelineУстранение неполадокПроверка ошибок аутентификацииИстек срок действия tokenРекомендации1. Управление token’ами2. Управление secret’ами3. БезопасностьСледующие шагиПредварительные требования
Перед настройкой аутентификации для частных репозиториев убедитесь, что у вас есть:
- Развернутый и запущенный компонент PAC
- Созданный для вашего репозитория Repository CR (Custom Resource). Repository CR — это ресурс Kubernetes, который сообщает PAC, какой Git-репозиторий отслеживать и как его настраивать
- Административный доступ для создания Kubernetes Secrets
- Токены доступа для вашего Git provider
Repository CR — это Kubernetes Custom Resource, который определяет:
- URL Git-репозитория, который нужно отслеживать
- Конфигурацию Git provider (GitHub, GitLab и т. д.)
- Учетные данные для аутентификации
- Настройки webhook
- Настройки выполнения pipeline
PAC отслеживает Repository CR и автоматически создает PipelineRuns при возникновении событий в настроенном Git-репозитории.
Обзор
PAC поддерживает аутентификацию для частных GitLab-репозиториев с использованием Personal Access Tokens (PAT) и HTTPS URL.
Шаги настройки
Выполните следующие шаги, чтобы настроить аутентификацию для частных репозиториев.
Шаг 1: Создайте access token в GitLab
- Перейдите в GitLab → User Settings → Access Tokens
- Создайте token с областью
api - Сгенерируйте и скопируйте token
Шаг 2: Создайте Kubernetes Secret
Создайте secret, содержащий ваш GitLab access token:
Пример вывода:
Примечание: PAC будет использовать этот token для операций API Git provider (управление webhook, обновление статусов PR и т. д.) и автоматически создаст на его основе secret аутентификации для git clone.
Создание webhook secret (необязательно)
Если вы планируете настраивать webhook, создайте secret для проверки webhook:
Рекомендации по безопасности:
- Храните token’ы безопасно и используйте отдельные secrets для разных репозиториев или окружений
- PAC автоматически создает secrets аутентификации для git clone, поэтому создавать их вручную не требуется
Шаг 3: Обновите Repository CR
Обновите ваш Repository CR, чтобы он ссылался на secret аутентификации:
Примечание: PAC использует git_provider.secret для операций API и автоматически создает на его основе secret аутентификации для git clone, который используется в PipelineRuns.
Проверка доступа к частному репозиторию
После настройки аутентификации убедитесь, что PAC может получить доступ к вашему частному репозиторию:
Проверка Repository CR
Пример вывода (сокращенно):
Проверка логов PAC Controller
Ищите ошибки аутентификации или проблемы с подключением к вашему Git provider.
Проверка запуска pipeline
Запустите тестовый pipeline, чтобы проверить доступ:
Пример вывода:
Проверьте, что PipelineRun создан успешно:
Пример вывода:
Устранение неполадок
Проверка ошибок аутентификации
Проблема: PAC не может получить доступ к частному репозиторию.
Решения:
-
Проверьте права token: убедитесь, что GitLab access token имеет область
api -
Проверьте наличие secret: убедитесь, что GitLab secret существует в правильном namespace:
Пример вывода:
-
Проверьте ключ secret: убедитесь, что secret содержит ключ token:
Пример вывода (сокращенно, token закодирован в base64):
-
Проверьте Repository CR: убедитесь, что ссылка на secret в Repository CR указана правильно:
Пример вывода:
Истек срок действия token
Проблема: access token истек.
Решения:
-
Сгенерируйте новый access token в вашем Git provider
-
Обновите Kubernetes Secret:
Пример вывода:
-
При необходимости перезапустите pods PAC controller:
Пример вывода:
Рекомендации
1. Управление token’ами
- Используйте отдельные token’ы: применяйте разные token’ы для разных репозиториев или окружений
- Устанавливайте срок действия: задавайте срок действия token’ов для повышения безопасности
- Регулярно выполняйте ротацию: периодически обновляйте access token’ы
- Ограничивайте области доступа: предоставляйте только минимально необходимые разрешения
2. Управление secret’ами
- Используйте namespace’ы: храните secrets в соответствующих namespace’ах
- RBAC: используйте RBAC для контроля доступа к secret’ам
- External secrets: рассмотрите использование внешних средств управления secret’ами (например, Sealed Secrets, Vault)
3. Безопасность
- Минимальные привилегии: предоставляйте только минимально необходимые разрешения
- Аудит доступа: регулярно проверяйте, у кого есть доступ к репозиториям
- Мониторинг логов: отслеживайте логи PAC controller на наличие проблем с аутентификацией
Следующие шаги
- Настройка пользовательских сертификатов - Настройка пользовательских CA certificates для self-signed certificates
- Расширенная конфигурация репозитория - Ознакомьтесь с расширенными параметрами конфигурации репозитория
- Настройка GitLab Repository - Руководство по настройке для GitLab
- Распространенные проблемы - Руководство по устранению неполадок