TGViewer
Devops Bootcamp с Федосеевым Devops Bootcamp с Федосеевым @devopsupgrade · 5.33K subscribers
Post #981 1.17K
GitLab Artifacts: скрытые настройки безопасности. Разбираем на примерах

Коллеги, в последних заданиях я уже затрагивал тему артефактов в пайплайнах. И чем больше проверяю работы, тем больше вижу, что многие недооценивают артефакты как объект безопасности

Артефакты — это не просто «файлы после сборки». Это потенциальная утечка: бинарники с прода, ключи, логи статического анализа с найденными уязвимостями, секреты. GitLab по умолчанию дает доступ к ним всем, у кого есть доступ к проекту — и это нужно менять

Разберем поэтапно, как взять артефакты под контроль

1️⃣ Базовый контроль времени жизни

expire_in — ваш главный союзник. Артефакты не должны жить вечно:

build:
script:
- mvn package
artifacts:
paths:
- target/*.jar
expire_in: 1 week # Автоматическое удаление через неделю


2️⃣ Умное сохранение при разных сценариях

Не все что упало — бесполезно. Сохраняем логи только при падении:

debug_build:
script:
- make build
artifacts:
paths:
- build/logs/
- core.dump
when: on_failure # Сохраняем только если пайплайн упал
expire_in: 2 days


3️⃣ Удобство для разработчиков

expose_as — показываем артефакты прямо в интерфейсе Merge Request:

generate_docs:
stage: test
script:
- doxygen Doxyfile
artifacts:
paths:
- public/docs/
expose_as: 'Documentation Preview' # Ссылка появится в MR


4️⃣ Специализированные отчеты для безопасности

artifacts:reports — это мощный механизм для работы со специализированными отчетами, которые GitLab может автоматически обрабатывать и интегрировать в свой интерфейс

test:
stage: test
script:
- mvn test
- pytest --junitxml=report.xml
artifacts:
reports:
junit: report.xml
junit:
- target/surefire-reports/TEST-*.xml
- target/failsafe-reports/TEST-*.xml

sast:
stage: test
script:
- echo "Running SAST..."
artifacts:
reports:
sast: gl-sast-report.json

secret_detection:
stage: test
script:
- echo "Detecting secrets..."
artifacts:
reports:
secret_detection: gl-secret-detection-report.json


5️⃣ Управление доступом

artifacts:public — контроль видимости артефактов

job_name:
artifacts:
paths:
- path/to/files
public: <true|false>


artifacts:access — тонкая настройка доступа к артефактам

test:
script:
- ./run-tests.sh
artifacts:
paths:
- test-results/
access: <keyword> # Один из трех вариантов


⏩ Доступные варианты:

- always (по умолчанию) — опасно для чувствительных данных
- never — идеально для временных файлов с секретами
- on_success — золотая середина

Версия 18.4+: перед использованием проверьте актуальность вашего GitLab.

Важно: artifacts:public и artifacts:access нельзя использовать вместе в одном job.

Эти настройки — не просто «удобные фичи». Это ваш инструмент для построения безопасного CI/CD, где критичные данные не утекают через артефакты

А какие настройки артефактов используете вы? Сталкивались ли с проблемами безопасности? Делитесь опытом в комментариях — обсудим лучшие практики!
  • 👍 13
  • ❤ 4
  • 🐳 4
More from @devopsupgrade
  1. Sep 23, 2026Вчера стартовал курс «Профессия DevOps-инженер»🔥 Из чего состоит курс: Обучение проходит…
  2. Sep 22, 2026⚡️⚡️⚡️⚡️⚡️⚡️ Коллеги, приветствую👋 🔴Бывали ли у вас такое, открываешь вакансию - а там с…
  3. Sep 21, 2026Post #1247
  4. Sep 18, 2026Коллеги, приветствую 👋 Сегодня подводим итоги розыгрыша фирменного мерча: разыгрывались 3…
  5. Sep 8, 2026🎉 Розыгрыш завершен! 🏆 Победители: 1. @WolkStt 🔍 Проверить результаты
  6. Sep 7, 2026Коллеги, приветствую👋 Решил порадовать подписчиков своего канала и разыграть фирменный ме…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →