Держите секретные переменные gitlab CI / CD в публичном хранилище - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть частный проект на Gitlab с CI / CD, настроенным на загрузку / извлечение образов докеров из реестра Google Container и развертывание моего программного обеспечения в Kubernetes Engine в GCP.

Есть ли способ сделать мой проект общедоступным, не беспокоясь о том, что секреты, используемые для подключения к GCP, будут разглашены? В частности, я обеспокоен тем, что, когда мой репозиторий будет общедоступным, любой сможет добавить строку типа echo $GCP_REPOSITORY_SECRET где-нибудь в файле .gitlab-ci.yml, протолкнуть свою ветвь и просмотреть выходные данные CI, чтобы «открыть» мой секрет. Есть ли у Gitlab механизм для предотвращения этого? Если говорить более фундаментально, существуют ли передовые практики для сохранения секретов развертывания в секрете для общедоступных репозиториев?

1 Ответ

0 голосов
/ 11 ноября 2018

Если говорить более фундаментально, существуют ли передовые практики для сохранения секретов развертывания в секрете для общедоступных репозиториев?

Да, в нем нет конфиденциальных данных. Когда-либо.

На уровне GCP здесь перечислены опции секретного управления .

При подключении GitLab-CI к GCP вы можете увидеть значение безопасности здесь , которое использует kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 -D, с правильной учетной записью и RBAC .

Вся безопасность кластера основана на модели, в которой разработчикам доверяют, поэтому только доверенные пользователи могут иметь право управлять вашими кластерами.


Обратите внимание, что GitLab 11.7 (январь 2019 г.) позволяет:

Настройка секретов приложения Kubernetes в качестве переменных для конвейеров Auto DevOps

Операторы и администраторы требуют, чтобы настройка секретов осуществлялась вне хранилища приложения, чтобы снизить риск и уязвимость конфиденциальных данных.
Чтобы удовлетворить эту потребность, GitLab теперь предлагает возможность конфигурировать секреты как переменные среды, которые становятся доступными для приложения Auto DevOps, работающего в вашем кластере Kubernetes.

https://about.gitlab.com/images/11_7/autodevops-secrets.png

Просто добавьте к своей переменной K8S_SECRET_, и соответствующий конвейер CI Auto DevOps примет секретную переменную вашего приложения для заполнения секрета Kubernetes.

...