
कोडबेस और GCP प्रोजेक्ट्स में एक्सपोज़्ड API क्रेडेंशियल्स को स्कैन करें
कोडबेस, GCP प्रोजेक्ट्स और CI पाइपलाइनों में उजागर Google API क्रेडेंशियल्स को स्कैन करें — इससे पहले कि उनका दुरुपयोग हो।
समस्या: Google ने पूर्वव्यापी रूप से मौजूदा API कुंजियों (Maps, Places, आदि) पर Gemini API एक्सेस सक्षम कर दिया, जो सार्वजनिक होने और क्लाइंट-साइड कोड में एम्बेड होने के लिए डिज़ाइन की गई थीं। जब आपकी टीम का कोई सदस्य उसी GCP प्रोजेक्ट में Gemini सक्षम करता है, तो वे पहले से सार्वजनिक कुंजियाँ चुपचाप Gemini क्रेडेंशियल्स बन जाती हैं — जिससे आपका प्रोजेक्ट अनधिकृत AI उपयोग और $80k+ बिलिंग घटनाओं (context) के संपर्क में आ जाता है।
keyguard क्या करता है:
keyguard scan — regex + एंट्रॉपी डिटेक्शन का उपयोग करके सोर्स फ़ाइलों और git हिस्ट्री में क्रेडेंशियल स्ट्रिंग ढूँढता हैkeyguard audit — लाइव GCP प्रोजेक्ट्स से जुड़ता है और उन API कुंजियों को फ़्लैग करता है जिनके पास अभी Gemini एक्सेस हैkeyguard ci — GitHub Actions, CircleCI और GitLab CI लॉग और वेरिएबल्स को लीक हुए क्रेडेंशियल्स के लिए स्कैन करता हैpip install keyguard-scan
या क्लोन करें और डेवलपमेंट मोड में इंस्टॉल करें:
git clone https://github.com/arzaan789/keyguard.git
cd keyguard
pip install -e ".[dev]"
# वर्तमान निर्देशिका और git हिस्ट्री स्कैन करें
keyguard scan .
# अपने लाइव GCP प्रोजेक्ट्स का ऑडिट करें
keyguard audit
# CI प्लेटफ़ॉर्म स्कैन करें
keyguard ci
keyguard scanregex + Shannon एंट्रॉपी फ़िल्टरिंग का उपयोग करके सोर्स फ़ाइलों और git हिस्ट्री में उजागर क्रेडेंशियल्स स्कैन करता है। कम एंट्रॉपी वाले प्लेसहोल्डर जैसे "REPLACE_ME" या "XXXXXXXX" स्वचालित रूप से अनदेखा किए जाते हैं।
# एक निर्देशिका स्कैन करें (फ़ाइलें + पूर्ण git हिस्ट्री)
keyguard scan .
# केवल फ़ाइलें, git हिस्ट्री छोड़ें
keyguard scan . --no-git-history
# JSON और SARIF में एक्सपोर्ट करें
keyguard scan . --output json --output sarif --out-file report
# वास्तविक कुंजी मान दिखाएं (रिडैक्ट नहीं)
keyguard scan . --no-redact
# कस्टम कॉन्फ़िग फ़ाइल का उपयोग करें
keyguard scan . --config /path/to/.keyguard.toml
एक्ज़िट कोड: 0 = साफ़, 1 = निष्कर्ष, 2 = त्रुटि
keyguard auditCloud Resource Manager, Service Usage और API Keys APIs के माध्यम से लाइव GCP प्रोजेक्ट्स से जुड़ता है। उन कुंजियों को फ़्लैग करता है जो अनरिस्ट्रिक्टेड हैं (साइलेंट Gemini एक्सेस) या जो स्पष्ट रूप से generativelanguage.googleapis.com की अनुमति देती हैं, जबकि प्रोजेक्ट पर Gemini सक्षम है।
प्रमाणीकरण डिफ़ॉल्ट रूप से Application Default Credentials का उपयोग करता है — पहले gcloud auth application-default login चलाएँ।
# सभी सुलभ GCP प्रोजेक्ट्स का ऑडिट करें
keyguard audit
# विशिष्ट प्रोजेक्ट(s) का ऑडिट करें
keyguard audit --project my-project-id --project another-project
# सेवा खाता कुंजी फ़ाइल का उपयोग करें
keyguard audit --gcp-credentials /path/to/key.json
# JSON निष्कर्ष एक्सपोर्ट करें
keyguard audit --output json --out-file gcp-findings.json
निष्कर्ष:
CRITICAL — कुंजी पर कोई API प्रतिबंध नहीं + Gemini सक्षम (साइलेंट Maps→Gemini अपग्रेड परिदृश्य)HIGH — कुंजी स्पष्ट रूप से generativelanguage.googleapis.com की अनुमति देती है (जानबूझकर लेकिन संभावित रूप से क्लाइंट कोड में एम्बेड)keyguard ciCI प्लेटफ़ॉर्म लॉग और संग्रहीत वेरिएबल्स को उजागर क्रेडेंशियल्स के लिए स्कैन करता है। GitHub Actions, CircleCI और GitLab CI का समर्थन करता है।
# सभी कॉन्फ़िगर किए गए प्लेटफ़ॉर्म स्कैन करें
keyguard ci
# केवल एक प्लेटफ़ॉर्म स्कैन करें
keyguard ci --platform github
# किसी विशिष्ट रेपो तक सीमित करें
keyguard ci --repo my-org/api-service
# JSON निष्कर्ष एक्सपोर्ट करें
keyguard ci --output json --out-file ci-findings.json
यह क्या स्कैन करता है:
keyguard watchहर बदलाव पर फ़ाइलों को फिर से स्कैन करता है। डेवलपमेंट के दौरान उपयोगी।
keyguard watch .
keyguard rules listसभी सक्रिय डिटेक्शन नियमों की सूची दिखाता है।
keyguard rules list
keyguard config check.keyguard.toml कॉन्फ़िगरेशन फ़ाइल को मान्य करता है।
keyguard config check
keyguard config check --config /path/to/.keyguard.toml
अपने प्रोजेक्ट रूट में .keyguard.toml बनाएँ:
[scan]
paths = ["."]
exclude = ["tests/fixtures/", "**/*.example"]
scan_git_history = true
[output]
format = ["terminal", "json"]
redact = true
[notify]
slack_webhook = "https://hooks.slack.com/services/..."
[rules]
disabled = []
# CI प्लेटफ़ॉर्म प्रमाणीकरण और दायरा
[ci]
github_token = "ghp_xxxxxxxxxxxxxxxxxxxx"
circleci_token = "CCIPAT_xxxxxxxxxxxxxxxx"
gitlab_token = "glpat-xxxxxxxxxxxxxxxxxxxx"
gitlab_url = "https://gitlab.com" # सेल्फ-होस्टेड GitLab के लिए ओवरराइड
max_runs = 10 # प्रति रेपो हालिया रन/पाइपलाइन
[ci.github]
orgs = ["my-org"]
repos = ["my-org/specific-repo"] # वैकल्पिक: केवल विशिष्ट रेपो स्कैन करें
[ci.circleci]
orgs = ["my-org"]
[ci.gitlab]
groups = ["my-group"]
Keyguard regex + Shannon एंट्रॉपी दृष्टिकोण का उपयोग करता है। प्रत्येक नियम परिभाषित करता है:
AIza[0-9A-Za-z\-_]{35})बिल्ट-इन नियमों का पता लगाता है:
| नियम ID | यह क्या ढूँढता है |
|---|---|
google-api-key | Google API कुंजियाँ (AIza...) — जिनमें वे Maps कुंजियाँ शामिल हैं जिन्हें चुपचाप Gemini एक्सेस दिया गया |
आप .keyguard.toml में कस्टम नियम जोड़ सकते हैं:
[[rules.extra]]
id = "my-internal-token"
description = "आंतरिक सेवा टोकन"
pattern = "tok-[0-9a-f]{32}"
entropy_min = 3.5
severity = "high"
tags = ["internal"]
name: keyguard scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # git स्कैन के लिए पूर्ण हिस्ट्री
- run: pip install keyguard-scan
- run: keyguard scan .
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: keyguard
name: keyguard क्रेडेंशियल स्कैन
entry: keyguard scan --no-git-history
language: system
pass_filenames: false
docker run --rm -v $(pwd):/repo ghcr.io/arzaan789/keyguard scan /repo
टर्मिनल (डिफ़ॉल्ट) — गंभीरता के अनुसार समूहीकृत रंगीन तालिका।
JSON — मशीन-पठनीय निष्कर्ष सरणी:
keyguard scan . --output json --out-file findings.json
SARIF — GitHub के सिक्योरिटी टैब और अन्य SAST टूल्स के साथ एकीकृत होता है:
keyguard scan . --output sarif --out-file findings.sarif
Slack वेबहुक — निष्कर्ष मिलने पर एक सारांश पोस्ट करता है:
[notify]
slack_webhook = "https://hooks.slack.com/services/..."
git clone https://github.com/arzaan789/keyguard.git
cd keyguard
pip install -e ".[dev]"
pytest
143 परीक्षण, 0 असफलताएँ।
प्रोजेक्ट संरचना:
keyguard/
scanner/ # फ़ाइल + git हिस्ट्री स्कैनर
engine/ # regex + एंट्रॉपी डिटेक्शन (नियम, मैचर)
output/ # टर्मिनल, JSON/SARIF, वेबहुक
auditor/ # GCP API क्लाइंट + ऑडिट लॉजिक
ci/ # GitHub Actions, CircleCI, GitLab CI स्कैनर
cli.py # Click CLI एंट्री पॉइंट
config.py # .keyguard.toml लोडर
MIT
gcp-service-account-key | GCP सेवा खाता RSA निजी कुंजियाँ |
google-oauth-client-secret | Google OAuth2 क्लाइंट सीक्रेट्स (GOCSPX-...) |