
조직 내부 유출을 찾기 위한 GitHub 정찰/모니터링 도구

우리는 2019년 12월부터 프로덕션에서 Vinifera를 사용해 왔으며, 이를 통해 보안 사고를 예방할 수 있었습니다. Vinifera는 공개 기여의 보안 위생을 보장하고 GitHub에서 잠재적인 유출을 모니터링하기 위해 내부 프로젝트로 시작되었습니다. 우리는 이것이 다른 기업들이 GitHub와 같은 공개 출처에 대한 보안 위생을 강화하는 데 도움이 될 것이라고 믿습니다.

Vinifera는 기업/조직이 공개 자산을 모니터링하여 내부 코드 유출 및 잠재적인 침해에 대한 참조를 찾을 수 있도록 합니다. 때로는 개발자가 실수로 내부 코드와 자격 증명을 유출할 수 있습니다. Vinifera는 기업이 이러한 침해를 적시에 탐지하고 사고에 대응할 수 있도록 지원하는 것을 목표로 합니다.
Vinifera는 조직에 속한 개발자를 모니터링하고, 공개 기여를 모니터링 및 스캔하여 정의된 참조를 찾아 잠재적인 위반 및 내부/비밀/독점 코드의 침해를 탐지합니다.

도구를 개발하고 구상하는 동안 보안 팀이 포도를 많이 소비했기 때문에 우리가 사랑하는 과일의 이름을 따서 명명했습니다 :) Vinifera는 포도의 이명(二名)에서 영감을 받았습니다.
Vinifera는 다음 도구의 설치가 필요합니다:
조직 구성원을 스캔하려면 Vinifera에 조직 구성원을 읽을 수 있는 토큰이 필요합니다.
새 토큰을 생성하세요 https://github.com/settings/tokens/new (특별한 범위 없이)
관리자는 조직의 모든 사용자를 나열할 수 있으므로, 관리자 사용자(특별한 범위 없음)의 토큰을 사용하는 것이 좋습니다.
https://docs.github.com/en/rest/reference/orgs#list-organization-members
인증된 사용자가 이 조직의 구성원이기도 한 경우, 숨겨진 구성원과 공개 구성원 모두 반환됩니다.
.docker_env.example을 .docker_env로 이름 변경mv .docker_env.example .docker_env
.docker_env 업데이트GITHUB_ACCESS_TOKEN=<REDACTED>
VINIFERA_ORG_NAME=<Your_org_name>
RAILS_MAX_THREADS=60 # This also controls DB pool
RAILS_MASTER_KEY=<ADD_YOUR_MASTER_KEY_HERE>
# set the environment
RAILS_ENV=<development|production>
# set the following if RAILS_ENV is set to production
SECRET_KEY_BASE=<YOUR_SECRET_KEY> # min 32 bits key is allowed
# add slack incoming webhook URLs for respective slack channels
SLACK_UPDATES_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_TARGETS_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_USER_TRACKING_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_VINIFERA_VIOLATION_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_ERROR_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
# By default fork and big fork scanning is disabled
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 Commands for Reference
cd <location_of_cloned_repo>
bundle install
bundle exec rails db:create
bundle exec rails db:migrate
.example_env에 있습니다.GITHUB_ACCESS_TOKEN=<REDACTED>
VINIFERA_ORG_NAME=<Your_org_name> # Name of org for which token was generated.
VINIFERA_DATABASE_HOST=<localhost>
VINIFERA_DATABASE_PASSWORD=<YOUR_PASSWORD>
RAILS_MAX_THREADS=60 # This also controls DB pool
RAILS_MASTER_KEY=<REDACTED>
SLACK_UPDATES_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_TARGETS_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_USER_TRACKING_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_VINIFERA_VIOLATION_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
SLACK_ERROR_GROUP_URL=https://hooks.slack.com/services/<YOUR_CONFIG_HERE>
# Add this only if you are using Docker over TLS, recommended way, if, on the same host as vinifera, you may skip it
DOCKER_CLIENT_CERT_PATH=/home/deployer/.docker
DOCKER_HOST=tcp://<IP>:<PORT>
# By default fork and big fork scanning is disabled
VINIFERA_ENABLE_FORK_SCANNING=false
VINIFERA_ENABLE_BIG_FORK_SCANNING=false
REDIS_URL=redis://<REDIS_URI>
SIDEKIQ_REDIS_URL=redis://<REDIS_URI>
# For PagerDuty Integration
DEFAULT_PD_INTEGRATION_KEY=<xxxxxxxx>
ENABLE_PAGER_DUTY_TRIGGER=true
bundle exec whenever --update-crontab
[[rules]]
# Insert your rules here
# description = "Internal References"
# regex = '''(?i)((.*)<COMPANY_INTERNAL_REFERENCES>(.*))'''
# tags = ["internal", "company","references"]
bundle exec sidekiq
또한 위 스크린샷과 같이 Datadog에서 메트릭을 얻으려면 DataDog 에이전트를 사용할 수 있습니다 - https://docs.datadoghq.com/agent/
팀이 위반 사항을 절대 놓치지 않도록 PagerDuty 통합 옵션이 있습니다:

PagerDuty 통합을 위해 다음 환경 변수를 true로 설정해야 합니다.
ENABLE_PAGER_DUTY_TRIGGER=true
그런 다음 다음 문서에 설명된 대로 새 서비스와 통합 키를 생성합니다 - https://support.pagerduty.com/docs/services-and-integrations#create-a-new-service

DEFAULT_PD_INTEGRATION_KEY=<xxxxxxxx>
우리는 프로젝트에 대한 기여/버그 수정/성능 개선을 환영합니다 :)
저희가 만든 도구가 마음에 드신다면, Vinifera가 기반으로 하는 프로젝트에 자유롭게 기여/기부해 주세요 :)
Vinifera는 다음 오픈소스 소프트웨어 위에 구축되었습니다:
.... (목록은 계속됩니다... 대충 아시겠죠 ;) )
Feeding India에 기부할 수도 있습니다.
Zomato 및 이 도구의 개발자는 이 도구나 그 사용으로 인해 발생한 어떠한 손해에 대해서도 책임을 지지 않습니다. 책임감 있게 사용하세요. 자세한 내용은 LICENSE를 참조하세요.
Vinifera는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 전체 라이선스 텍스트는 LICENSE를 참조하세요.