
क्लाउड कैनरी ऑब्जेक्ट ऑर्केस्ट्रेशन प्रबंधन प्लेटफ़ॉर्म

Cloud Canary Token Management — अवैध पहुँच का पता लगाने के लिए AWS और GCP पर भ्रामक क्रेडेंशियल्स को तैनात, मॉनिटर और रोटेट करें।
[!WARNING] अल्फा संस्करण — Coalmine प्रारंभिक विकास में है। बुनियादी कार्यक्षमता वर्तमान प्राथमिकता है, और एप्लिकेशन को उत्पादन उपयोग के लिए पूर्ण रूप से सुरक्षा परीक्षित नहीं माना जाना चाहिए।
| कार्यात्मक | विकास (अस्थिर) | कार्य सूची |
|---|---|---|
| AWS IAM उपयोगकर्ता कैनरी | GCP सेवा खाता कैनरी | Azure समर्थन |
| AWS S3 बकेट कैनरी | GCP बकेट कैनरी | SIEM एकीकरण |
| CloudTrail निगरानी | GCP ऑडिट लॉग निगरानी | |
| PostgreSQL स्थिति बैकएंड | स्वचालित रोटेशन | |
| REST API (API कुंजी + सत्र प्रमाणीकरण) | ||
| WebUI डैशबोर्ड | ||
| ईमेल और वेबहुक अलर्ट | ||
| क्रेडेंशियल और खाता प्रबंधन | ||
| RBAC (Casbin) |
Coalmine स्वचालित रूप से "कैनरी टोकन" — डिकॉय क्रेडेंशियल्स और संसाधनों को तैनात और मॉनिटर करता है जो हमलावरों द्वारा एक्सेस किए जाने पर अलर्ट ट्रिगर करते हैं।
समर्थित प्रदाता:
/ui पर ब्राउज़र-आधारित डैशबोर्डcoalmine <resource> <action>)git clone https://github.com/yourorg/coalmine.git
cd coalmine
cp .env.example .env
# अपने डेटाबेस और क्लाउड क्रेडेंशियल्स के साथ .env संपादित करें
docker compose up -d
यह API, Celery वर्कर, Redis और PostgreSQL प्रारंभ करता है। WebUI http://localhost:8000/ui पर उपलब्ध है।
# AWS क्रेडेंशियल जोड़ें
docker compose exec app coalmine credentials add my-aws-cred AWS \
--secrets '{"access_key_id": "...", "secret_access_key": "...", "region": "us-east-1"}'
# उस क्रेडेंशियल के तहत खाता जोड़ें
docker compose exec app coalmine accounts add prod-east --credential my-aws-cred \
--account-id 111111111111
# या YAML कॉन्फ़िगरेशन से क्रेडेंशियल्स और खाते सिंक करें
docker compose exec app coalmine credentials sync --dry-run
# CloudTrail लॉगिंग गंतव्य बनाएँ
docker compose exec app coalmine logs create my-trail AWS_CLOUDTRAIL \
--account <ACCOUNT_ID>
# लॉगिंग संसाधन सूचीबद्ध करें
docker compose exec app coalmine logs list
# AWS IAM उपयोगकर्ता कैनरी बनाएँ
docker compose exec app coalmine canary create my-canary AWS_IAM_USER \
--account <ACCOUNT_ID> --logging-id <LOGGING_ID>
# कैनरीज़ सूचीबद्ध करें
docker compose exec app coalmine canary list
# परीक्षण अलर्ट ट्रिगर करें
docker compose exec app coalmine canary trigger my-canary
# निगरानी चक्र (~1 मिनट) की प्रतीक्षा करें फिर अलर्ट जांचें
docker compose exec app coalmine alerts list
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CLI │ │ REST API │ │ WebUI │
│ (coalmine) │ │ (FastAPI) │ │ (React) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└────────┬────────┴────────┬────────┘
│ │
│ ┌──────▼──────┐
│ │Auth / RBAC │
│ │ (Casbin) │
│ └──────┬──────┘
│ │
┌──────▼─────────────────▼──────┐
│ Celery Workers │
│ (Canary · Monitoring · Logs) │
└──────────────┬────────────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ OpenTofu │ │ Monitors │ │Notifications│
│ Templates │ │(CloudTrail/ │ │(Email/Hook/ │
│ │ │ Audit Logs) │ │ Syslog) │
└─────┬─────┘ └──────┬──────┘ └─────────────┘
│ │
┌─────▼─────┐ ┌──────▼──────┐
│ AWS / GCP │ │ Alerts │
│(Resources)│ │ (DB) │
└───────────┘ └─────────────┘
┌─────────────────┐
│ PostgreSQL │
│ (Inventory) │
└────────┬────────┘
│
┌────────▼────────┐
│ Celery Beat │
│ (Scheduler) │
└─────────────────┘
कमांड पैटर्न का पालन करते हैं: coalmine <resource> <action> [options]
| कमांड | विवरण |
|---|---|
logs create <name> <type> | लॉगिंग संसाधन बनाएँ |
logs list | लॉगिंग संसाधन सूचीबद्ध करें |
logs scan --account <id> | मौजूदा CloudTrails स्कैन करें |
| कमांड | विवरण |
|---|---|
alerts list [--canary <name>] | सुरक्षा अलर्ट देखें |
| कमांड | विवरण |
|---|---|
auth key list | API कुंजियाँ सूचीबद्ध करें |
auth key add <name> | API कुंजी जोड़ें |
auth session list | सक्रिय सत्र सूचीबद्ध करें |
| कमांड | विवरण |
|---|---|
user list | सभी उपयोगकर्ता सूचीबद्ध करें |
user roles | उपलब्ध भूमिकाएँ सूचीबद्ध करें |
| कमांड | विवरण |
|---|---|
task list | हाल के एसिंक कार्य देखें |
task status <task_id> | कार्य परिणाम जांचें |
docker compose exec app coalmine --help
docker compose exec app coalmine canary --help
API http://localhost:8000 पर चलता है और API कुंजी हेडर या सत्र कुकी के माध्यम से प्रमाणीकरण की आवश्यकता है।
config/api_keys.yaml)api_keys:
- key: "your-api-key-here"
name: "admin"
permissions: ["read", "write"]
scopes: ["all"]
# कैनरीज़ सूचीबद्ध करें
curl -H "X-API-Key: your-api-key" http://localhost:8000/api/v1/canaries
# एक कैनरी बनाएँ
curl -X POST -H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"name": "api-canary", "resource_type": "AWS_IAM_USER", "account_id": "...", "logging_id": "..."}' \
http://localhost:8000/api/v1/canaries
इंटरैक्टिव API दस्तावेज़ http://localhost:8000/docs (Swagger UI) पर उपलब्ध हैं।
सभी कॉन्फ़िगरेशन config/ निर्देशिका में रहता है। विवरण के लिए config/README.md देखें।
config/credentials.yaml)credentials:
my-aws-cred:
provider: AWS
auth_type: STATIC
secrets:
access_key_id: ${AWS_ACCESS_KEY_ID}
secret_access_key: ${AWS_SECRET_ACCESS_KEY}
region: ${AWS_DEFAULT_REGION:-us-east-1}
accounts:
- name: prod-east
account_id: "111111111111"
सिंक करें: docker compose exec app coalmine credentials sync
config/alert_outputs.yaml)outputs:
email_admin:
type: "email"
enabled: true
smtp_host: "smtp.example.com"
smtp_port: 587
to_addrs: ["[email protected]"]
webhook_siem:
type: "webhook"
enabled: true
url: "https://siem.example.com/webhook"
# सभी परीक्षण चलाएँ
docker compose run --rm app pytest -v
# केवल यूनिट परीक्षण चलाएँ
docker compose run --rm app pytest tests/unit/ -v
# एकीकरण परीक्षण चलाएँ
docker compose run --rm app pytest tests/integration/ -v
# वर्कर लॉग देखें
docker compose logs -f worker
# कोड परिवर्तनों के बाद पुनः निर्माण करें
docker compose build && docker compose up -d
.env फ़ाइलों या सीक्रेट मैनेजर का उपयोग करेंApache License 2.0 — विवरण के लिए LICENSE फ़ाइल देखें।
योगदान दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
| कमांड | विवरण |
|---|
canary create <name> <type> | एक नई कैनरी बनाएँ |
canary list | सभी कैनरीज़ सूचीबद्ध करें |
canary delete <name_or_id> | एक कैनरी हटाएँ |
canary creds <name> | कैनरी क्रेडेंशियल्स प्राप्त करें |
canary trigger <name_or_id> | कैनरी पहचान का परीक्षण करें |
| कमांड | विवरण |
|---|
credentials list | सभी क्रेडेंशियल्स सूचीबद्ध करें |
credentials add <name> <provider> | एक क्रेडेंशियल जोड़ें |
credentials update <name_or_id> | एक क्रेडेंशियल अपडेट करें |
credentials remove <name_or_id> | एक क्रेडेंशियल हटाएँ |
credentials validate <name_or_id> | क्रेडेंशियल स्वास्थ्य मान्य करें |
credentials sync [--dry-run] | YAML कॉन्फ़िगरेशन से सिंक करें |
| कमांड | विवरण |
|---|
accounts list [--credential <name>] | सभी खाते सूचीबद्ध करें |
accounts add <name> | एक खाता जोड़ें |
accounts update <name_or_id> | एक खाता अपडेट करें |
accounts enable <name_or_id> | खाता सक्षम करें |
accounts disable <name_or_id> | खाता अक्षम करें |
accounts remove <name_or_id> | खाता हटाएँ |
accounts validate <name_or_id> | खाता स्वास्थ्य मान्य करें |
| प्रकार | प्रदाता | विवरण |
|---|
AWS_IAM_USER | AWS | एक्सेस कुंजियों के साथ IAM उपयोगकर्ता |
AWS_BUCKET | AWS | लॉगिंग के साथ S3 बकेट |
GCP_SERVICE_ACCOUNT | GCP | कुंजियों के साथ सेवा खाता |
GCP_BUCKET | GCP | क्लाउड स्टोरेज बकेट |