
Ein GitHub Recon-/Überwachungstool zum Auffinden interner Lecks in Ihrer Organisation.

Wir verwenden Vinifera seit Dezember 2019 in der Produktion und es hat uns geholfen, Sicherheitsvorfälle zu verhindern. Vinifera begann als internes Projekt, um die Sicherheitshygiene unserer öffentlichen Beiträge zu gewährleisten und potenzielle Lecks auf Github zu überwachen. Wir glauben, dass dies anderen Unternehmen helfen wird, ihre Sicherheitshygiene bei öffentlichen Quellen wie Github zu stärken.

Vinifera ermöglicht es Unternehmen/Organisationen, öffentliche Vermögenswerte zu überwachen, um Hinweise auf interne Code-Lecks und potenzielle Sicherheitsverletzungen zu finden.
Manchmal können Entwickler versehentlich internen Code und Anmeldedaten preisgeben. Vinifera zielt darauf ab, Unternehmen dabei zu helfen, solche Verstöße rechtzeitig zu erkennen und auf den Vorfall zu reagieren.
Vinifera überwacht Entwickler, die zur Organisation gehören, überwacht und scannt öffentliche Beiträge auf mögliche Verstöße und Preisgabe von internem/geheimem/proprietärem Code, indem nach definierten Referenzen gesucht wird.

Während der Entwicklung und Entstehung des Tools hat das Sicherheitsteam viele Trauben konsumiert, also haben wir es nach der Frucht benannt, die wir lieben :)
Vinifera ist inspiriert vom binomischen Namen der Trauben
Vinifera erfordert die Installation der folgenden Tools:
Um Ihre Organisationsmitglieder zu scannen, benötigt Vinifera ein Token mit der Berechtigung, Organisationsmitglieder zu lesen.
Generieren Sie ein neues Token unter https://github.com/settings/tokens/new ohne besonderen Geltungsbereich.
Sie sollten das Token eines Admin-Benutzers (ohne besonderen Geltungsbereich) verwenden, da der Admin alle Benutzer einer Organisation auflisten kann.
https://docs.github.com/en/rest/reference/orgs#list-organization-members
Wenn der authentifizierte Benutzer ebenfalls Mitglied dieser Organisation ist, werden sowohl versteckte als auch öffentliche Mitglieder zurückgegeben.
.docker_env.example in .docker_env um.mv .docker_env.example .docker_env
.docker_env mit den erforderlichen VariablenGITHUB_ACCESS_TOKEN=<REDACTED>
VINIFERA_ORG_NAME=<Ihr_Organisationsname>
RAILS_MAX_THREADS=60 # Dies steuert auch den DB-Pool
RAILS_MASTER_KEY=<IHREN_MASTER_KEY_HIER_EINFÜGEN>
# setzen Sie die Umgebung
RAILS_ENV=<development|production>
# setzen Sie Folgendes, wenn RAILS_ENV auf production gesetzt ist
SECRET_KEY_BASE=<IHR_SECRET_KEY> # min 32-Bit-Schlüssel ist erlaubt
# fügen Sie Slack-Incoming-Webhook-URLs für die jeweiligen Slack-Kanäle hinzu
SLACK_UPDATES_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_TARGETS_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_USER_TRACKING_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_VINIFERA_VIOLATION_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_ERROR_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
# Standardmäßig ist das Scannen von Forks und großen Forks deaktiviert
VINIFERA_ENABLE_FORK_SCANNING=false
VINIFERA_ENABLE_BIG_FORK_SCANNING=false
docker-compose build
docker-compose up
docker-compose up --build
docker exec -it vinifera_sidekiq bundle exec rake periodic_syncs:sync_github_users
Docker Compose Befehle als Referenz
cd <Ort_des_geklonten_Repos>
bundle install
bundle exec rails db:create
bundle exec rails db:migrate
.example_env verfügbarGITHUB_ACCESS_TOKEN=<REDACTED>
VINIFERA_ORG_NAME=<Ihr_Organisationsname> # Name der Organisation, für die das Token generiert wurde.
VINIFERA_DATABASE_HOST=<localhost>
VINIFERA_DATABASE_PASSWORD=<IHR_PASSWORT>
RAILS_MAX_THREADS=60 # Dies steuert auch den DB-Pool
RAILS_MASTER_KEY=<REDACTED>
SLACK_UPDATES_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_TARGETS_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_USER_TRACKING_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_VINIFERA_VIOLATION_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
SLACK_ERROR_GROUP_URL=https://hooks.slack.com/services/<IHRECONFIG>
# Fügen Sie dies nur hinzu, wenn Sie Docker über TLS verwenden (empfohlen); wenn Vinifera auf demselben Host läuft, können Sie es überspringen
DOCKER_CLIENT_CERT_PATH=/home/deployer/.docker
DOCKER_HOST=tcp://<IP>:<PORT>
# Standardmäßig ist das Scannen von Forks und großen Forks deaktiviert
VINIFERA_ENABLE_FORK_SCANNING=false
VINIFERA_ENABLE_BIG_FORK_SCANNING=false
REDIS_URL=redis://<REDIS_URI>
SIDEKIQ_REDIS_URL=redis://<REDIS_URI>
# Für PagerDuty-Integration
DEFAULT_PD_INTEGRATION_KEY=<xxxxxxxx>
ENABLE_PAGER_DUTY_TRIGGER=true
bundle exec whenever --update-crontab
[[rules]]
# Fügen Sie hier Ihre Regeln ein
# description = "Interne Referenzen"
# regex = '''(?i)((.*)<UNTERNEHMENSINTERNE_REFERENZEN>(.*))'''
# tags = ["intern", "unternehmen","referenzen"]
bundle exec sidekiq
Um Metriken wie im obigen Screenshot auf Datadog zu erhalten, können Sie den DataDog-Agenten verwenden - https://docs.datadoghq.com/agent/
Um sicherzustellen, dass das Team keinen Verstoß verpasst, gibt es die Option der PagerDuty-Integration:

Für die PagerDuty-Integration muss die folgende Umgebungsvariable auf true gesetzt sein
ENABLE_PAGER_DUTY_TRIGGER=true
Erstellen Sie dann einen neuen Dienst und einen Integrationsschlüssel, wie in folgendem Dokument beschrieben - https://support.pagerduty.com/docs/services-and-integrations#create-a-new-service

DEFAULT_PD_INTEGRATION_KEY=<xxxxxxxx>
Wir sind offen für Beiträge/Fehlerbehebungen/Leistungsverbesserungen für unser Projekt :)
Wenn Sie das von uns entwickelte Tool schätzen, können Sie gerne zu den Projekten beitragen/spenden, auf deren Grundlage Vinifera aufgebaut wurde :)
Vinifera wurde auf Basis anderer Open-Source-Software erstellt:
.... (Die Liste geht weiter..., Sie verstehen ;) )
Sie können auch an Feeding India spenden.
Weder Zomato noch die Entwickler dieses Tools haften für Schäden, die durch dieses Tool oder seine Verwendung verursacht werden. Verwenden Sie es verantwortungsbewusst. Siehe LIZENZ für weitere Details.
Vinifera ist unter der Apache License, Version 2.0, lizenziert. Siehe LIZENZ für den vollständigen Lizenztext.