Secret Gate
Isang release gate na alam ang tunay mong mga secrets: walang maiipapalabas hangga't walang natutuklasan.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

Ano ang ginagawa nito
Ang Secret Gate ay sumasagot sa isang tanong bago pa man lumabas ang anumang bagay mula sa iyong kamay, maging ito ay isang release zip, kopya ng customer, open-source push o ang susunod na commit: mayroon bang aking lihim dito? Alam nito kung ano ang mga lihim mo, dahil binabasa nito ang mga file kung saan ito nakatago, at hindi niya ipinapakita ang isa: ang isang natuklasan ay naglalarawan ng file, linya at pinagmulan ng value.
- Ang eksaktong values mo. Lahat ng value sa iyong env files, JSON at YAML configs,
.netrcat key files, hinahanap ayon sa pagsulat, base64-encoded at URL-encoded. Ang password na mukhang ordinaryong salita, o internal token na walang kilalang prefix, ay nahuhuli tulad ng iba pa. - Mga lihim mula sa mga makina na hindi nito pinapatakbo. Gumawa ng fingerprints sa iyong laptop; ang build server ay mahahanap ang mga value na iyon nang hindi sila hawak.
- Ang ibang mga makina ay tinitingnan ang kanilang sariling mga lihim. Ang mga file ay ipinapadala sa bawat makina sa pamamagitan ng SSH, isini-scan doon at binubura. Hindi gumagalaw ang mga lihim, at ang makina na hindi makasagot ay humaharang sa release.
- Mga hugis, pangalan at ingay din. 25 token formats, ang iyong mga pangalan, hosts, domains at account ids, private IP addresses, personal mail addresses, phone numbers, IBANs, home-folder paths, at random strings na katabi ng mga pangalang mukhang lihim.
- Pinatutunayan nito ang sarili nito sa bawat pagkakataon. Ang bawat scan ay nagsisimula sa pagtatanim ng canaries ng lahat ng uri; kung may check na hindi mahuli ang kanyang canary, hindi tatakbo ang scan.
- Saan ka na nagtatrabaho. Mga folder, zip at tar archives, git pre-commit o pre-push hook, exit codes para sa CI, isang JSON report.
Sinubukan sa aming ipinapadala
- Lahat ng kit na ibinebenta namin: ang 8 released archives ay isini-scan laban sa 133 secret values sa aming build machine at 16,259 fingerprints mula sa aming laptop. Lahat ay pumasa, sa loob ng 5.4 segundo nang sabay.
- Isang tunay na lihim na itinatag sa release copy ay nahuli nang plain at base64-encoded, bawat isa ay tinukoy ng file kung saan ito galing. Ang value ay hindi lumitaw saanman sa output o report.
- Isang remote scan sa pamamagitan ng SSH ay tiningnan ang isang release laban sa 499 secret values ng pangalawang makina sa loob ng 1.4 segundo, at nahuli ang token na itinatag sa kopyang umiiral lamang sa makina na iyon.
Ano ang nasa loob
Ang gate
Ang apat na checks, ang self-test, archive at git-staged scanning, isang mabasang report at isang JSON one.
Fingerprints
Fingerprints ng mga lihim ng isang makina, para sa scan sa isa pa, nang walang values.
Remote scans
Ang parehong mga file ay tinitingnan sa bawat makina na may mga lihim, kasama ang mga patakaran ng iyong proyekto.
Setup at CI
Isang finder para sa iyong mga secret file, git hooks, at isang GitHub Actions workflow para sa mga release archive.
Mga requirement
- Linux o macOS na may Python 3.9 o mas bago; walang dapat i-install mula sa pip.
- Git para sa mga hooks, SSH para sa remote scans.
Mga dapat malaman
- Binabasa nito ang mga file ayon sa kasalukuyan nilang kalagayan. Ang isang secret na nasa iyong git history ay nananatili roon: i-rotate ito.
- Ang mga archive sa loob ng isang scanned folder ay hindi binubuksan; i-scan ang bawat archive.
- Itago ang mga fingerprint file nang kasing-lihim ng mga secret: nilalaman nito ang unang 4 character ng bawat value na may 16 character o higit pa.
Mga tanong
Paano ito naiiba sa gitleaks o TruffleHog?
Tinitingnan ng mga iyon ang karaniwang anyo ng mga secret, at mahusay sila dito. Ang Secret Gate ay alam din ang tunay na anyo ng iyong mga secret: binabasa nito ang iyong sariling mga secret file at hinahanap ang eksaktong mga value na iyon, kaya nahuhuli rin ang database password o internal token na walang kilalang anyo. Ginawa ito para sa isang sandali, bago ilunsad ang isang bagay, at fail closed.
Ipinapadala ba nito ang aking mga secret sa ibang lugar?
Hindi. Binabasa ang mga value mula sa iyong mga file papunta sa memorya para sa scan at hindi kailanman ipinaprint, isinusulat, o ipinapadala; ang isang fingerprint file, kung gagawin mo ito, ay may hash at ang unang 4 character ng bawat value. Ang remote scans ay ipinapadala ang mga file na ilalagay mo sa iyong sariling makina; ang mga secret ng makinang iyon ay nananatili roon.
Paano ang mga false alarm?
Ang isang finding ay nangangahulugang "tingnan mo ito". Kung okay lang ito, magdagdag ng isang maliit na allow rule para sa ganitong uri ng finding sa configuration ng proyekto, halimbawa ang iyong sariling support address. Walang switch na pumapatay sa isang check.
Maaari ba nitong i-scan ang aking git history?
Hindi. Tinitingnan nito ang mga ilalagay mo: isang folder, isang archive, o ang susunod na commit. Para sa isang secret na nasa history na, i-rotate ang secret.
Na-update: