Автоматический аудит секретов для репозитория с использованием Cursor CLI в GitHub Actions
name: Auto Secrets Audit
on:
schedule:
- cron: "0 4 * * *"
workflow_dispatch:
permissions:
contents: write
pull-requests: write
actions: read
jobs:
secrets-audit:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Cursor CLI
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> $GITHUB_PATH
- name: Configure git identity
run: |
git config user.name "Cursor Agent"
git config user.email "cursoragent@cursor.com"
- name: Scan and propose hardening
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
MODEL: gpt-5
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_PREFIX: audit
run: |
cursor-agent -p "Ты работаешь в GitHub Actions runner.
GitHub CLI доступен как `gh` и аутентифицирован через `GH_TOKEN`. Git доступен. У тебя есть доступ на запись к содержимому репозитория и ты можешь комментировать pull request'ы, но не должен создавать или редактировать PR напрямую.
# Контекст:
- Репозиторий: ${{ github.repository }}
- Префикс ветки для укрепления: ${{ env.BRANCH_PREFIX }}
# Цель:
- Выполнить аудит утечки секретов репозитория и укрепления workflow по расписанию, и предложить минимальные безопасные исправления.
# Требования:
1) Сканировать потенциальные секреты в отслеживаемых файлах и недавней истории; поддерживать паттерны белого списка если присутствуют (например, .gitleaks.toml).
2) Выявлять рискованные паттерны workflow: незакреплённые actions, слишком широкие разрешения, небезопасное использование pull_request_target, секреты в контекстах форкнутых PR, устаревшие небезопасные команды, отсутствующие блоки permissions.
3) Поддерживать постоянную ветку для этого запуска, используя префикс ветки для укрепления из контекста. Создать её если отсутствует, иначе обновить, и отправить изменения в origin.
4) Предложить минимальные правки: скрыть литералы где безопасно, добавить правила игнорирования, закрепить actions к SHA, уменьшить разрешения, добавить защитные механизмы к workflow, и добавить SECURITY_LOG.md с резюме изменений и руководством по исправлению.
5) Отправить в origin.
6) Если есть хотя бы один открытый PR в репозитории, опубликовать или обновить единственный комментарий на естественном языке (1–2 предложения) в самом недавно обновлённом открытом PR, который кратко объясняет изменения укрепления и включает встроенную ссылку сравнения для быстрого создания PR.
7) Избегать дублирующих комментариев; обновить существующий комментарий бота если присутствует. Если нет изменений или открытых PR, ничего не публиковать.
# Входные данные и соглашения:
- Использовать `gh` для списка PR и публикации комментариев. Избегать дублирующих комментариев.
# Результаты при наличии обновлений:
- Отправленные коммиты в постоянную ветку укрепления для этого запуска.
- Единственный комментарий PR на естественном языке со ссылкой сравнения выше (только если существует открытый PR).
" --force --model "$MODEL" --output-format=text
Была ли эта страница полезной?