
OpenGraph collector for BloodHound जो DevOps से MLOps बुनियादी ढांचे तक हमले के रास्तों का मानचित्रण करता है, पार्श्व गति विश्लेषण के लिए CI/CD पाइपलाइन, सेवा प्रमुख, और ML प्लेटफ़ॉर्म संसाधनों को एकत्र करता है।
BloodHound के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट OpenGraph संग्राहक जो DevOps से MLOps बुनियादी ढांचे तक हमले के पथों का मानचित्रण करता है।
विशेषाधिकार की पाइपलाइन: DevOps से MLOps बुनियादी ढांचे तक हमले के पथ द्वारा Brett Hawkins (@h4wkst3r) पर आधारित।
Dop2Mop DevOps और MLOps प्लेटफ़ॉर्म से डेटा एकत्र करता है ताकि उन हमले के पथों की पहचान की जा सके जो CI/CD पाइपलाइनों से मशीन लर्निंग प्रशिक्षण बुनियादी ढांचे तक पार्श्विक गति को सक्षम बनाते हैं। यह विज़ुअलाइज़ेशन और विश्लेषण के लिए BloodHound-संगत OpenGraph JSON आउटपुट करता है।
| DevOps प्लेटफ़ॉर्म | MLOps प्लेटफ़ॉर्म | पहचान प्रदाता |
|---|---|---|
| GitHub (Actions, Repos, Secrets) | Azure Machine Learning | Azure AD सेवा प्रिंसिपल |
| Azure DevOps (पाइपलाइन, सेवा कनेक्शन) | Amazon SageMaker | AWS IAM भूमिकाएँ OIDC/संघटित पहचान |
Dop2Mop अनुसंधान में पहचानी गई पाँच महत्वपूर्ण विश्वास सीमाओं का मॉडल तैयार करता है:
git clone https://github.com/h4wkst3r/dop2mop.git cd dop2mop pip install -r requirements.txt pip install -e .
## क्या एकत्र किया गया
प्रत्येक संग्राहक प्लेटफ़ॉर्म-विशिष्ट संसाधनों को एकत्रित करता है और उनके बीच विश्वास सीमाओं का मानचित्रण करता है:
| संग्राहक | एकत्रित संसाधन |
|-----------|-------------------|
| **GitHub** | संगठन, रिपॉजिटरी, वर्कफ़्लोज़, गुप्त जानकारी, शाखा सुरक्षा नियम, OIDC कॉन्फ़िगरेशन, कंटेनर छवि संदर्भ, S3 बकेट संदर्भ |
| **Azure DevOps** | संगठन, प्रोजेक्ट, पाइपलाइन (YAML), सेवा कनेक्शन (स्कोप विवरण सहित), वेरिएबल समूह, एजेंट पूल, रिपॉजिटरी |
| **Azure ML** | वर्कस्पेस, कंप्यूट क्लस्टर/इंस्टेंस, डेटास्टोर, ML वातावरण, पंजीकृत मॉडल, जॉब/प्रयोग, ऑनलाइन और बैच एंडपॉइंट |
| **SageMaker** | प्रशिक्षण कार्य, मॉडल, एंडपॉइंट, डोमेन, नोटबुक इंस्टेंस, IAM निष्पादन भूमिकाएं (नीति विश्लेषण सहित), ECR रिपॉजिटरी/इमेज, S3 बकेट (ML-प्रासंगिक फ़िल्टर किए गए) |
## त्वरित आरंभ
### डेमो डेटा उत्पन्न करें
Dop2Mop को कार्य में देखने का सबसे तेज़ तरीका शोध से हमले के परिदृश्यों को दर्शाने वाला डेमो डेटा उत्पन्न करना है:```bash
dop2mop demo -o demo.json
// Container Image Poisoning (Supply Chain Attack) MATCH p=(workflow)-[:CanPoisonImage]->(image)<-[:PullsImage]-(job) RETURN p
// OIDC/Federated Identity Abuse (confirmed edges) MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:CanAssumeRole]->(role)-[:SubmitsJob]->(job) RETURN p
// OIDC abuse including inferred paths MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:InferredCanAssumeRole]->(role) RETURN p
// Dataset Poisoning via Pickle Deserialization MATCH p=(workflow)-[:CanPoisonDataset]->(dataset)<-[:LoadsDataset]-(job) RETURN p
// Find repos with weak/no branch protection (TB1 exploitable) MATCH (repo)-[:BypassesProtection]->(repo) RETURN repo.name, repo.default_branch
// Find overprivileged SageMaker IAM roles MATCH (role:IAMRole) WHERE role.is_admin = true OR role.has_s3_full_access = true RETURN role.name, role.attached_policies
// Find SageMaker notebooks with root + internet access MATCH (nb:SMNotebook) WHERE nb.root_access = 'Enabled' AND nb.direct_internet_access = 'Enabled' RETURN nb.name, nb.status
// Find self-hosted ADO agent pools MATCH (agent:ADOAgent) WHERE agent.is_hosted = false RETURN agent.name, agent.pool_type
---
## कॉन्फ़िगरेशन
### कॉन्फ़िग फ़ाइल
हर बार क्रेडेंशियल पास करने के बजाय, आप उन्हें एक कॉन्फ़िग फ़ाइल में सहेज सकते हैं। शामिल उदाहरण को कॉपी करें और अपने मान भरें:```bash
cp dop2mop.yaml.example dop2mop.yaml
# Edit dop2mop.yaml with your credentials
Dop2Mop इन स्थानों की क्रम से जाँच करता है:
--config द्वारा निर्दिष्ट पथdop2mop.yaml / dop2mop.yml / .dop2mop.yaml~/.dop2mop.yamlनोट: क्रेडेंशियल्स को गलती से कमिट होने से रोकने के लिए
dop2mop.yaml.gitignoreमें है। उदाहरण फ़ाइल (dop2mop.yaml.example) कमिट करने के लिए सुरक्षित है।
सभी उपलब्ध विकल्पों को टिप्पणियों सहित देखने के लिए dop2mop.yaml.example देखें।
प्राथमिकता क्रम: CLI तर्क > कॉन्फ़िग फ़ाइल > पर्यावरण चर।
पूर्ण संग्रह चलाने से पहले क्रेडेंशियल का परीक्षण करें:```bash
dop2mop collect --validate -v
dop2mop collect --validate --collectors github,sagemaker -v
यह प्रत्येक प्लेटफ़ॉर्म के लिए एक हल्की API कॉल करता है ताकि संग्रह शुरू करने से पहले टोकन मान्य हैं या नहीं यह सत्यापित किया जा सके।
### कलेक्टर उपनाम
आप `--collectors` के साथ पूर्ण क्लास नामों के बजाय छोटे नामों का उपयोग कर सकते हैं:
| उपनाम | कलेक्टर |
|-------|-----------|
| `github`, `gh` | GitHubCollector |
| `ado`, `azuredevops`, `azure-devops` | AzureDevOpsCollector |
| `azureml`, `azure-ml` | AzureMLCollector |
| `sagemaker`, `sm` | SageMakerCollector |```bash
# These are equivalent:
dop2mop collect --collectors GitHubCollector,SageMakerCollector
dop2mop collect --collectors github,sagemaker
dop2mop collect --collectors gh,sm
dop2mop [options]
Commands: collect Collect data from DevOps/MLOps platforms demo Generate demo data with attack scenarios
### वैश्विक विकल्प
| विकल्प | विवरण |
|--------|-------------|
| `-v, --verbose` | वर्बोज़ आउटपुट सक्षम करें (INFO स्तर लॉगिंग) |
| `--debug` | डीबग आउटपुट सक्षम करें (DEBUG स्तर लॉगिंग) |
---
### `dop2mop collect`
कॉन्फ़िगर किए गए DevOps और MLOps प्लेटफ़ॉर्म से डेटा एकत्र करें।```bash
dop2mop collect [OPTIONS]
| विकल्प | विवरण |
|---|---|
--github-token TOKEN | GitHub व्यक्तिगत एक्सेस टोकन |
--github-org ORG | GitHub संगठन का नाम |
--github-enterprise-url URL | GitHub Enterprise Server URL |
| विकल्प | विवरण |
|---|---|
--azure-devops-token TOKEN | Azure DevOps व्यक्तिगत एक्सेस टोकन (PAT) |
--azure-devops-access-token TOKEN | Azure DevOps एक्सेस टोकन (Bearer auth, वैकल्पिक) |
--azure-devops-org ORG | Azure DevOps संगठन का नाम |
| विकल्प | विवरण |
|---|---|
dop2mop demoशोध के चार हमले परिदृश्यों को दर्शाने वाला डेमो डेटा जनरेट करें।```bash dop2mop demo [OPTIONS]
| Option | विवरण |
|--------|-------------|
| `-o, --output FILE` | आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: `dop2mop_demo.json`) |
---
### `dop2mop icons`
BloodHound नोड प्रकारों के लिए कस्टम आइकन कॉन्फ़िगरेशन उत्पन्न करें।```bash
dop2mop icons [OPTIONS]
| विकल्प | विवरण |
|---|---|
-o, --output FILE | आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: dop2mop_icons.json) |
dop2mop collect -o output.json
dop2mop collect --config dop2mop.yaml -o output.json -v
dop2mop collect --validate -o output.json -v
dop2mop collect -o output.json -v
dop2mop collect -o output.json --debug
dop2mop collect -o output.json --zip
dop2mop collect --max-items 100 -o output.json
dop2mop collect --no-secrets -o output.json
### एकल प्लेटफ़ॉर्म संग्रह```bash
# GitHub only (aliases: github, gh)
dop2mop collect --collectors github -o github.json -v
# Azure DevOps only (aliases: ado, azuredevops)
dop2mop collect --collectors ado -o ado.json -v
# Azure ML only (aliases: azureml, azure-ml)
dop2mop collect --collectors azureml -o azureml.json -v
# SageMaker only (aliases: sagemaker, sm)
dop2mop collect --collectors sm -o sagemaker.json -v
dop2mop collect --collectors github,sagemaker -o output.json -v
dop2mop collect --collectors github,ado -o output.json -v
dop2mop collect --collectors ado,azureml -o azure.json -v
dop2mop collect --collectors github,ado,azureml,sagemaker -o full.json -v
### GitHub संग्रह उदाहरण```bash
# Using environment variables
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
export GITHUB_ORG="your-org"
dop2mop collect --collectors GitHubCollector -o github.json -v
# Using command-line arguments
dop2mop collect --collectors GitHubCollector \
--github-token ghp_xxxxxxxxxxxx \
--github-org your-org \
-o github.json -v
# GitHub Enterprise Server
dop2mop collect --collectors GitHubCollector \
--github-token ghp_xxxxxxxxxxxx \
--github-org your-org \
--github-enterprise-url https://github.yourcompany.com/api/v3 \
-o github.json -v
# Skip secret enumeration
dop2mop collect --collectors GitHubCollector \
--github-token ghp_xxxxxxxxxxxx \
--github-org your-org \
--no-secrets \
-o github.json -v
# Limit to 50 repositories
dop2mop collect --collectors GitHubCollector \
--github-token ghp_xxxxxxxxxxxx \
--github-org your-org \
--max-items 50 \
-o github.json -v
export AZURE_DEVOPS_TOKEN="your-pat" export AZURE_DEVOPS_ORG="your-org" dop2mop collect --collectors AzureDevOpsCollector -o ado.json -v
dop2mop collect --collectors AzureDevOpsCollector
--azure-devops-token your-pat
--azure-devops-org your-org
-o ado.json -v
dop2mop collect --collectors AzureDevOpsCollector
--azure-devops-access-token eyJ0...
--azure-devops-org your-org
-o ado.json -v
> **नोट:** Azure DevOps प्रमाणीकरण प्राथमिकता: access token (Bearer) > PAT (Basic)।
> Access tokens को `az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798` के माध्यम से प्राप्त किया जा सकता है।
### Azure ML संग्रह उदाहरण```bash
# Using environment variables
export AZURE_SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AZURE_TENANT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
dop2mop collect --collectors AzureMLCollector -o azureml.json -v
# Using DefaultAzureCredential (az login)
dop2mop collect --collectors AzureMLCollector \
--azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-o azureml.json -v
# Using Service Principal
dop2mop collect --collectors AzureMLCollector \
--azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-client-secret your-secret \
-o azureml.json -v
# Using Access Token
dop2mop collect --collectors AzureMLCollector \
--azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--azure-access-token eyJ0... \
-o azureml.json -v
नोट: Azure ML प्रमाणीकरण प्राथमिकता: access token > service principal > DefaultAzureCredential (az login). एक्सेस टोकन
az account get-access-token --resource https://management.azure.com/के माध्यम से प्राप्त किए जा सकते हैं।
export AWS_PROFILE="your-profile" dop2mop collect --collectors SageMakerCollector -o sagemaker.json -v
dop2mop collect --collectors SageMakerCollector
--aws-profile your-profile
-o sagemaker.json -v
dop2mop collect --collectors SageMakerCollector
--aws-access-key-id AKIAXXXXXXXXXXXXXXXX
--aws-secret-access-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--aws-region us-east-1
-o sagemaker.json -v
dop2mop collect --collectors SageMakerCollector
--aws-profile your-profile
--aws-region us-west-2
-o sagemaker.json -v
### पूर्ण वातावरण संग्रह```bash
# Set all environment variables
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
export GITHUB_ORG="your-org"
export AZURE_DEVOPS_TOKEN="your-pat"
export AZURE_DEVOPS_ORG="your-org"
export AZURE_SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AZURE_TENANT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AWS_PROFILE="your-profile"
# Collect from all platforms (auto-detects configured collectors)
dop2mop collect -o full_collection.json -v
# Or with explicit collectors
dop2mop collect \
--collectors GitHubCollector,AzureDevOpsCollector,AzureMLCollector,SageMakerCollector \
-o full_collection.json -v
सभी कमांड-लाइन विकल्पों को पर्यावरण चर के माध्यम से सेट किया जा सकता है:
प्राथमिकता: CLI तर्क > कॉन्फ़िग फ़ाइल > पर्यावरण चर।
| प्रकार | विवरण |
|---|---|
ServicePrincipal | Azure AD सेवा प्रिंसिपल |
IAMRole | AWS IAM भूमिका |
OIDCIdentity |
| प्रकार | विवरण |
|---|---|
ContainerRegistry | कंटेनर रजिस्ट्री (ECR, ACR) |
ContainerImage | कंटेनर इमेज |
S3Bucket |
ये एज ह्युरिस्टिक विश्लेषण द्वारा बनाए गए हैं जब स्पष्ट API डेटा उपलब्ध नहीं होता है (जैसे, गुप्त कुंजियों में संग्रहीत भूमिका ARNs)। ये विशिष्ट एज प्रकारों का उपयोग करते हैं ताकि आप BloodHound क्वेरी में उन्हें फ़िल्टर कर सकें।
| प्रकार | विवरण |
|---|---|
InferredCanAssumeRole | OIDC पहचान शायद भूमिका मान सकती है (अनुमानित) |
व्यापक क्वेरी उदाहरणों के लिए queries/dop2mop_queries.cypher देखें।
यह खंड कृत्रिम रूप से विच्छेदित किया गया है - अगले खंड के साथ निर्बाध रूप से जुड़ता है।
Dop2Mop में BloodHound कस्टम नोड प्रकारों के लिए एक पूर्व-कॉन्फ़िगर आइकन फ़ाइल data/custom_icons.json में शामिल है।
custom_icons.json की सामग्री पेस्ट करेंपहले, BloodHound में एक API टोकन बनाएँ:
फिर अपलोड करने के लिए इस Python स्क्रिप्ट का उपयोग करें:```python #!/usr/bin/env python3 """Upload custom icons to BloodHound CE using HMAC authentication."""
import base64 import hashlib import hmac import json from datetime import datetime, timezone import requests
BLOODHOUND_URL = "http://localhost:8080" TOKEN_ID = "your-token-id" TOKEN_KEY = "your-token-key" ICONS_FILE = "custom_icons.json"
def hmac_auth(method: str, uri: str, body: bytes = b"") -> dict: """Generate HMAC authentication headers.""" digester = hmac.new( base64.b64decode(TOKEN_KEY), msg=None, digestmod=hashlib.sha256 )
now = datetime.now(timezone.utc)
timestamp = now.strftime("%Y-%m-%dT%H:%M:%SZ")
digester.update(f"{method}".encode())
digester.update(f"{uri}".encode())
digester.update(timestamp.encode())
if body:
digester.update(body)
signature = base64.b64encode(digester.digest()).decode()
return {
"Authorization": f"bhesignature {TOKEN_ID}",
"RequestDate": timestamp,
"Signature": signature,
"Content-Type": "application/json",
}
def upload_icons(): """Upload custom icons to BloodHound.""" uri = "/api/v2/custom-nodes" url = f"{BLOODHOUND_URL}{uri}"
with open(ICONS_FILE, "rb") as f:
body = f.read()
headers = hmac_auth("POST", uri, body)
response = requests.post(url, headers=headers, data=body)
print(f"Status: {response.status_code}")
print(f"Response: {response.text}")
return response.status_code == 200
if name == "main": upload_icons()
#### विकल्प 3: Bearer Token (त्वरित परीक्षण)
अपने ब्राउज़र के DevTools नेटवर्क टैब से JWT प्राप्त करें जब BloodHound में लॉग इन किया गया हो:```bash
curl -X POST http://localhost:8080/api/v2/custom-nodes \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d @custom_icons.json
from dop2mop import Dop2MopCollector, CollectorConfig
config = CollectorConfig( github_token="ghp_xxx", github_org="myorg", aws_profile="default", )
collector = Dop2MopCollector(config) results = collector.validate_all() print(results) # {'GitHubCollector': True, 'SageMakerCollector': True, ...}
collector.run(collectors=["github", "sm"])
collector.save("output.json")
print(collector.get_stats())
print(collector.get_collection_summary())
### व्यक्तिगत कलेक्टरों का उपयोग करना```python
from dop2mop import CollectorConfig, GitHubCollector, SageMakerCollector
from dop2mop.graph import OpenGraphBuilder
# Create shared builder
builder = OpenGraphBuilder(source_kind="MLOpsBase")
# Configure
config = CollectorConfig(
github_token="ghp_xxx",
github_org="myorg",
aws_profile="default",
)
# Run individual collectors
github = GitHubCollector(config, builder)
github.collect()
sagemaker = SageMakerCollector(config, builder)
sagemaker.collect()
# Save combined output
builder.save("combined.json")
from dop2mop.graph import OpenGraphBuilder from dop2mop.models import NodeKind, EdgeType
builder = OpenGraphBuilder(source_kind="CustomSource")
builder.create_node( id="my-pipeline", kinds=[NodeKind.AZURE_DEVOPS_PIPELINE.value], name="My Pipeline", displayname="Production Pipeline", )
builder.create_node( id="my-ml-workspace", kinds=[NodeKind.AZURE_ML_WORKSPACE.value], name="ML Workspace", displayname="Training Workspace", )
builder.create_edge( start_id="my-pipeline", end_id="my-ml-workspace", kind=EdgeType.SUBMITS_JOB, properties={"trust_boundary": "TB4"} )
builder.save("custom_graph.json")
---
## समस्या निवारण
### पहले मान्य करें
हमेशा पहले क्रेडेंशियल सत्यापन से शुरू करें ताकि प्रमाणीकरण समस्याओं को जल्दी पकड़ा जा सके:```bash
dop2mop collect --validate --collectors github,sm -v
आउटपुट किसी भी संग्रह शुरू होने से पहले प्रति कलेक्टर OK/FAILED दिखाएगा।
Total Nodes: 142 DevOps: 45 MLOps: 38 Identity: 12 Artifact: 47
Total Edges: 201 Contains: 62 TriggersPipeline: 15 ...
──────────────────────────────────────────────────────── Collection Issues: GitHubCollector: 45 collected, 3 failed, 1 skipped FAIL: branch_protection:org/repo - 404 Not Found SKIP: branch_protection:org/private - Insufficient permissions
### सामान्य समस्याएं
**"GitHub collector not configured, skipping"**
- सुनिश्चित करें कि `GITHUB_TOKEN` और `GITHUB_ORG` पर्यावरण चर सेट हैं, या `--github-token` और `--github-org` पास करें
**"Azure ML collector not configured, skipping"**
- सुनिश्चित करें कि `AZURE_SUBSCRIPTION_ID` और `AZURE_TENANT_ID` सेट हैं
- यदि DefaultAzureCredential का उपयोग कर रहे हैं तो `az login` चलाएं
- वैकल्पिक रूप से, `az account get-access-token` से एक मान्य टोकन के साथ `--azure-access-token` पास करें
**"SageMaker collector not configured, skipping"**
- `AWS_PROFILE` या दोनों `AWS_ACCESS_KEY_ID` और `AWS_SECRET_ACCESS_KEY` सेट करें
- सुनिश्चित करें कि क्रेडेंशियल्स में SageMaker पढ़ने की अनुमतियाँ हैं
**Branch protection returns 403**
- GitHub API को ब्रांच प्रोटेक्शन नियम पढ़ने के लिए व्यवस्थापक पहुंच की आवश्यकता है
- गैर-व्यवस्थापक टोकन ब्रांच प्रोटेक्शन संग्रह को छोड़ देंगे (सारांश में रिपोर्ट किया गया)
**Rate limiting (429 errors)**
- Dop2Mop दर सीमा प्रतिक्रियाओं पर एक्सपोनेंशियल बैकऑफ़ के साथ स्वचालित रूप से पुनः प्रयास करता है
- बड़े संगठनों के लिए, API कॉल कम करने हेतु `--max-items` का उपयोग करें
- GitHub दर सीमाएँ: प्रमाणित उपयोगकर्ताओं के लिए 5,000 अनुरोध/घंटा
**No results in BloodHound Cypher console**
- सुनिश्चित करें कि क्वेरी पूर्ण नोड्स (`RETURN a, b`) लौटाती हैं, गुण नहीं (`RETURN a.name, b.name`)
- BloodHound का Cypher कंसोल ग्राफ़ विज़ुअलाइज़ेशन के लिए है, सारणीबद्ध डेटा के लिए नहीं
- गुण-आधारित क्वेरी के लिए Neo4j ब्राउज़र (localhost:7474) का उपयोग करें
**Filtering inferred vs. collected edges**
- अनुमानित किनारे अलग प्रकारों का उपयोग करते हैं (जैसे, `CanAssumeRole` के बजाय `InferredCanAssumeRole`)
- केवल पुष्टि किए गए किनारों की क्वेरी: `MATCH p=()-[:CanAssumeRole]->() RETURN p`
- अनुमानित किनारों की क्वेरी: `MATCH p=()-[:InferredCanAssumeRole]->() RETURN p`
---
## लाइसेंस
MIT लाइसेंस - विवरण के लिए [LICENSE](https://github.com/h4wkst3r/dop2mop/blob/HEAD/LICENSE) देखें।
| विकल्प | विवरण |
|---|
-o, --output FILE | आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: dop2mop_output.json) |
--zip | आउटपुट को ZIP फ़ाइल में संपीड़ित करें |
--config FILE | YAML/JSON कॉन्फ़िग फ़ाइल का पथ |
--validate | संग्रह से पहले क्रेडेंशियल्स को मान्य करें |
--collectors LIST | कॉमा-सेपरेटेड कलेक्टरों या उपनामों की सूची (जैसे github,sm) |
--max-items N | प्रति प्रकार अधिकतम आइटम संग्रहित करें |
--no-secrets | गुप्त/क्रेडेंशियल गणना छोड़ें |
| विकल्प | विवरण |
|---|
--azure-subscription-id ID | Azure सब्सक्रिप्शन ID |
--azure-tenant-id ID | Azure AD टेनेंट ID |
--azure-client-id ID | सेवा प्रिंसिपल क्लाइंट ID (वैकल्पिक) |
--azure-client-secret SECRET | सेवा प्रिंसिपल क्लाइंट सीक्रेट (वैकल्पिक) |
--azure-access-token TOKEN | Azure ML प्रमाणीकरण के लिए Azure एक्सेस टोकन (वैकल्पिक) |
--aws-access-key-id KEY| AWS एक्सेस कुंजी ID |
--aws-secret-access-key SECRET | AWS गुप्त एक्सेस कुंजी |
--aws-region REGION | AWS क्षेत्र (डिफ़ॉल्ट: us-east-1) |
--aws-profile PROFILE | AWS CLI प्रोफ़ाइल नाम |
| कलेक्टर नाम | प्लेटफ़ॉर्म | आवश्यक क्रेडेंशियल्स |
|---|
GitHubCollector | GitHub | --github-token, --github-org |
AzureDevOpsCollector | Azure DevOps | --azure-devops-token या --azure-devops-access-token, --azure-devops-org |
AzureMLCollector | Azure ML | --azure-subscription-id, --azure-tenant-id |
SageMakerCollector | AWS SageMaker | --aws-profile या --aws-access-key-id |
| पर्यावरण चर | CLI समतुल्य | विवरण |
|---|
GITHUB_TOKEN | --github-token | GitHub व्यक्तिगत पहुँच टोकन |
GITHUB_ORG | --github-org | GitHub संगठन का नाम |
GITHUB_ENTERPRISE_URL | --github-enterprise-url | GitHub Enterprise सर्वर URL |
AZURE_DEVOPS_TOKEN | --azure-devops-token | Azure DevOps PAT |
AZURE_DEVOPS_ACCESS_TOKEN | --azure-devops-access-token | Azure DevOps एक्सेस टोकन (Bearer) |
AZURE_DEVOPS_ORG | --azure-devops-org | Azure DevOps संगठन |
AZURE_SUBSCRIPTION_ID | --azure-subscription-id | Azure सब्सक्रिप्शन ID |
AZURE_TENANT_ID | --azure-tenant-id | Azure AD टेनेंट ID |
AZURE_CLIENT_ID | --azure-client-id | Azure सेवा प्रिंसिपल क्लाइंट ID |
AZURE_CLIENT_SECRET | --azure-client-secret | Azure सेवा प्रिंसिपल गुप्त कुंजी |
AZURE_ACCESS_TOKEN | --azure-access-token | Azure ML के लिए Azure एक्सेस टोकन |
AWS_ACCESS_KEY_ID | --aws-access-key-id | AWS एक्सेस कुंजी ID |
AWS_SECRET_ACCESS_KEY | --aws-secret-access-key | AWS गुप्त एक्सेस कुंजी |
AWS_REGION | --aws-region | AWS क्षेत्र (डिफ़ॉल्ट: us-east-1) |
AWS_PROFILE | --aws-profile | AWS CLI प्रोफ़ाइल नाम |
| प्रकार | विवरण |
|---|
GHOrganization | GitHub संगठन |
GHRepository | GitHub रिपॉजिटरी |
GHWorkflow | GitHub Actions वर्कफ़्लो |
GHSecret | GitHub Actions गुप्त कुंजी |
ADOOrganization | Azure DevOps संगठन |
ADOProject | Azure DevOps प्रोजेक्ट |
ADOPipeline | Azure DevOps पाइपलाइन |
ADOServiceConnection | Azure DevOps सेवा कनेक्शन (NHI) जिसमें दायरे का विवरण शामिल है |
ADOAgent | Azure DevOps एजेंट पूल (होस्टेड या सेल्फ-होस्टेड) |
ADOVariableGroup | Azure DevOps चर समूह |
| प्रकार | विवरण |
|---|
AzMLWorkspace | Azure ML कार्यक्षेत्र |
AzMLCompute | Azure ML कंप्यूट क्लस्टर/इंस्टेंस |
AzMLExperiment | Azure ML जॉब/प्रयोग |
AzMLDatastore | Azure ML डेटास्टोर |
AzMLEnvironment | Azure ML वातावरण (कंटेनर परिभाषा) |
AzMLModel | Azure ML पंजीकृत मॉडल |
SMDomain | SageMaker Studio डोमेन |
SMTrainingJob | SageMaker प्रशिक्षण जॉब |
SMModel | SageMaker मॉडल |
SMEndpoint | SageMaker एंडपॉइंट (Azure ML एंडपॉइंट के लिए भी उपयोग किया जाता है) |
SMNotebook | SageMaker नोटबुक इंस्टेंस |
| OIDC संघीय पहचान |
ManagedIdentity | Azure प्रबंधित पहचान |
| AWS S3 बकेट |
Dataset | ML डेटासेट |
| प्रकार | विश्वास सीमा | विवरण |
|---|
TriggersPipeline | TB1 | कोड कमिट CI/CD को ट्रिगर करता है |
HasBranchProtection | TB1 | रिपॉजिटरी में शाखा सुरक्षा नियम हैं |
BypassesProtection | TB1 | कमजोर/अनुपस्थित शाखा सुरक्षा (शोषण योग्य) |
AuthenticatesAs | TB2 | पाइपलाइन सेवा प्रिंसिपल का उपयोग करती है |
CanAssumeRole | TB2 | OIDC पहचान IAM भूमिका को मान सकती है |
OIDCTrust | TB2 | वर्कफ़्लो OIDC फ़ेडरेशन का उपयोग करता है |
UsesServiceConnection | TB2 | पाइपलाइन ADO सेवा कनेक्शन का उपयोग करती है |
PullsImage | TB3 | प्रशिक्षण जॉब कंटेनर इमेज को खींचता है |
CanPoisonImage | TB3 | पाइपलाइन कंटेनर इमेज को संशोधित कर सकती है |
SubmitsJob | TB4 | सेवा प्रिंसिपल ML जॉब सबमिट करता है |
CodeExecution | TB4 | जॉब कंप्यूट पर कोड निष्पादित करता है |
LoadsDataset | TB5 | प्रशिक्षण जॉब डेटासेट लोड करता है |
CanPoisonDataset | TB5 | पाइपलाइन डेटासेट को संशोधित कर सकती है |
Deserializes | TB5 | असुरक्षित डिसीरियलाइज़ेशन |
InferredSubmitsJob | वर्कफ़्लो OIDC के माध्यम से प्रशिक्षण जॉब सबमिट कर सकता है (अनुमानित) |
InferredPullsImage | प्रशिक्षण जॉब ज़हरीली कंटेनर इमेज खींच सकता है (अनुमानित) |
InferredLoadsDataset | प्रशिक्षण जॉब ज़हरीला डेटासेट लोड कर सकता है (अनुमानित) |
| प्रकार | विवरण |
|---|
Contains | माता-पिता-बच्चे का संबंध |
MemberOf | समूह सदस्यता |
HasAccessTo | संसाधन तक पहुँचने की अनुमति |
HasExecutionRole | संसाधन IAM/निष्पादन भूमिका का उपयोग करता है |
Owns | स्वामित्व संबंध |