{"adoption": {"forks": 185, "observed_at": "2026-08-28T04:03:47.230412+00:00", "stars": 1152}, "canonical_url": "https://ross.abutalabs.com/products/riskscanner", "card": {"archived": true, "artifact_type": "application", "description": "RiskScanner 是开源的多云安全合规扫描平台，基于 Cloud Custodian 和 Nuclei 引擎，实现对主流公(私)有云资源的安全合规扫描和漏洞扫描。", "domain": ["security", "cloud-computing"], "enriched": true, "function": ["security", "vulnerability-scanning", "monitoring", "cloud"], "health_score": 10, "homepage": null, "language": "Java", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "abandoned", "member_repos": ["fit2cloud/riskscanner"], "name": "fit2cloud/riskscanner", "platform": ["self-hosted"], "pushed_at": "2023-04-14T10:00:34+00:00", "repo": "fit2cloud/riskscanner", "stars": 1152, "tags": ["cloud-security", "compliance-scanning", "multi-cloud", "cis-benchmark", "nuclei", "cloud-custodian", "vulnerability-scanning", "gpl-2.0", "spring-boot", "vue", "devops", "docker", "web-server"], "topics": ["cloud-custodian", "yaml", "vue", "cloud", "spring-boot", "java", "aws", "azure", "aliyun", "huawei", "tencent", "openstack", "vsphere", "gcp", "nuclei", "nuclei-templates"], "urls": [], "use_cases": ["scan multi-cloud resources for security compliance", "run CIS benchmark checks on cloud accounts", "perform MLPS 2.0 (等保2.0) pre-checks on cloud infrastructure", "scan web services for vulnerabilities like SQL injection and XSS", "audit cloud servers, databases, object storage, and load balancers for misconfigurations", "define custom YAML-based cloud scanning rules", "get best-practice recommendations for cloud compliance baselines"], "what_it_is": "RiskScanner is an open-source multi-cloud security compliance scanning platform built on Cloud Custodian, Prowler, and Nuclei engines. It performs security compliance checks (CIS, China MLPS 2.0) and vulnerability scanning across major public and private clouds including AWS, Azure, GCP, Alibaba Cloud, Tencent Cloud, Huawei Cloud, OpenStack, and VMware vSphere.", "when_to_avoid": ["you need actively maintained software - the project is discontinued and migrated to CloudExplorer Lite", "you only use a single cloud provider with native security tools available", "you need enterprise-grade support or recent vulnerability rule updates"], "when_to_choose": ["you need unified security compliance scanning across multiple Chinese and international cloud providers", "you want CIS or MLPS 2.0 compliance checks with a web UI", "you need both cloud resource compliance and web vulnerability scanning in one self-hosted platform"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/riskscanner", "repo": "fit2cloud/riskscanner", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.230412+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:32.849177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d7514a62fa156dcb641af156ed8ae6fd810fd1d609cd70648d83656a88ba35b4", "fetched_at": "2026-08-28T04:03:47.230412+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fit2cloud/riskscanner"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2143, "days_push": 1237, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}