Skip to content

Commit a6afc70

Browse files
authored
Update README.md with details (#2247)
Signed-off-by: Lars Kamp <lars@some.engineering>
1 parent 1d0504a commit a6afc70

File tree

1 file changed

+143
-19
lines changed

1 file changed

+143
-19
lines changed

README.md

Lines changed: 143 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,161 @@
99
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/someengineering/fixinventory/requirements.txt)](https://app.snyk.io/org/some-engineering-inc./projects)
1010
[![CodeCoverage](https://codecov.io/gh/someengineering/fixinventory/graph/badge.svg?token=ZEZW5JAR5J)](https://codecov.io/gh/someengineering/fixinventory)
1111

12+
Fix Inventory detects compliance and security risks in cloud infrastructure accounts. Fix Inventory is open source and was built for cloud and security engineers.
1213

13-
## Overview
14-
🔍 Search Infrastructure: Fix Inventory maps out your cloud infrastructure in a [directed acyclic graph](https://inventory.fix.security/concepts/asset-inventory-graph) and provides a simple [search syntax](https://inventory.fix.security/docs/concepts/search).
14+
Check out our [Quick Start Guide](https://inventory.fix.security/docs/getting-started/) for step-by-step instructions on getting started.
1515

16-
📊 Generate Reports: Fix Inventory keeps track of and reports infrastructure changes over time, making it easy to [audit resource usage and cleanup](https://inventory.fix.security/docs/concepts/cloud-data-sync).
16+
## 💡Why Fix Inventory?
1717

18-
🤖 Automate Tasks: Tedious tasks like rule enforcement, resource tagging, and cleanup can be [automated using jobs](https://inventory.fix.security/docs/concepts/automation).
18+
Fix Inventory was built from the ground up for cloud-native infrastructure. Fix Inventory is open source and supports over 300 cloud services across:
1919

20-
Currently, Fix Inventory can collect [AWS](plugins/aws), [Google Cloud](plugins/gcp), [DigitalOcean](plugins/digitalocean), [VMWare vSphere](https://github.com/someengineering/fixinventory-plugin-vsphere), [OneLogin](plugins/onelogin), and [Slack](plugins/slack) resources. If the cloud you are using is not listed, it is easy to write your own collectors. An example can be found [here](plugins/example_collector).
20+
- [Amazon Web Services (AWS)](https://github.com/someengineering/fixinventory/blob/main/plugins/aws)
21+
- [Google Cloud Platform (GCP)](https://github.com/someengineering/fixinventory/blob/main/plugins/gcp)
22+
- [Microsoft Azure](https://github.com/someengineering/fixinventory/tree/main/plugins/azure)
23+
- [DigitalOcean](https://github.com/someengineering/fixinventory/blob/main/plugins/digitalocean)
24+
- [Hetzner](https://github.com/someengineering/fixinventory/tree/main/plugins/hetzner)
25+
- [Kubernetes (K8)](https://github.com/someengineering/fixinventory/tree/main/plugins/k8s)
26+
- [GitHub](https://github.com/someengineering/fixinventory/tree/main/plugins/github)
2127

28+
If you want to collect data for resources that are not supported yet, you can use our [example collector](https://github.com/someengineering/fixinventory/tree/main/plugins/example_collector) to write your own collectors.
2229

23-
## Getting started
30+
The tool works in three phases:
2431

25-
Continue reading [the Quick Start Guide](https://inventory.fix.security/docs/getting-started/)
32+
1. **Collect inventory data**: Fix Inventory queries cloud infrastructure APIs (aka “agentless”) for metadata about the resources in your cloud accounts.
33+
34+
2. **Normalize cloud data**: Fix Inventory creates a graph schema to normalize the universe of detected cloud resources, their configurations, and relationships.
35+
36+
3. **Triage security risks**: Fix Inventory scans the collected data with custom and pre-configured compliance frameworks to search for misconfigurations, risks, and other security issues.
2637

38+
Fix Inventory also provides ways to export and integrate the data it collects to build alerting and remediation workflows.
2739

28-
# Component list
29-
- [`fixcore`](fixcore) the platform maintaining the [MultiDiGraph](https://en.wikipedia.org/wiki/Multigraph#Directed_multigraph_(edges_with_own_identity)).
30-
- [`fixshell`](fixshell) the Fix Inventory shell to interact with the core.
31-
- [`fixworker`](fixworker) provides workers that load [plugins](plugins) to perform collect and cleanup operations.
32-
- [`fixmetrics`](fixmetrics) is a [Prometheus](https://prometheus.io/) [exporter](https://prometheus.io/docs/instrumenting/exporters/).
33-
- [`plugins`](plugins) are a collection of worker plugins like [AWS](plugins/aws)
40+
## 🍀 How is Fix Inventory different?
3441

35-
# Contributing
42+
In cloud-native infrastructure, misconfigurations from developer activity and frequent updates through automation are a fact of life. It's impossible to catch all misconfigurations before they reach production, so the key question becomes: how quickly can you identify and fix (hence the name…) the most critical risks?
3643

37-
You have a bugfix or want to provide a cool new feature? Awesome!
38-
Please follow our [contribution guidelines](https://inventory.fix.security/development) to get started.
44+
Traditional cloud security tools struggle to answer basic questions such as “what’s the blast radius of this public resource?” or “is there a path to get from this resource to a privileged role?”, because they lack the context from the hidden dependencies between cloud resources.
3945

40-
## Contact
41-
If you have any questions, feel free to [join our Discord](https://discord.gg/fixsecurity) or [open a GitHub issue](https://github.com/someengineering/fixinventory/issues/new).
46+
We believe that the only effective approach is to use a graph-based data model that works across all cloud platforms.
4247

48+
- **Deploy anywhere:** Fix Inventory can be deployed on your laptop or in the cloud, and we also offer a SaaS version.
49+
50+
- **High performing**: Fix Inventory scales across thousands of cloud accounts, is optimized for performance, and collects data in parallel while being mindful of cloud provider API quotas.
51+
52+
- **Dependency and access graph**: Fix Inventory stores dependency and access metadata in a graph database and makes it queryable for users. For risk analysis, you can traverse the graph and weave together interconnected risks in a fraction of a second.
53+
54+
- **Multi-cloud abstractions**: Our unified data model uses over 40 “[base kinds](https://inventory.fix.security/reference/unified-data-model/base-kinds)” to describe common resources such as ‘database’ or ‘ip_address’, to implement a single set of policies (e.g. “no unencrypted storage volumes”) that works across all clouds.
55+
56+
- **Resource lifecycle tracking:** By default, Fix takes an hourly snapshot of your inventory and tracks configuration changes for each resource. Each snapshot is stored, which creates a timeline and diff view for every resource and its changes.
57+
58+
## 🛠️ Use cases
59+
60+
Fix Inventory supports common cloud security use cases, and is an open source alternative to proprietary cloud security tools like Orca Security, Prisma Cloud or Wiz.
61+
62+
- **Cloud Security Posture Management (CSPM)**: Monitor and enforce security policies across your cloud infrastructure, Identify and remediate misconfigurations.
63+
64+
- **AI Security Posture Management (AI-SPM)**: Automatic discovery of AI services in use, and the data sources they connect to.
65+
66+
- **Cloud Compliance**: Run automated compliance assessments across your cloud accounts with standard compliance frameworks.
67+
68+
- **Cloud Infrastructure Entitlement Management (CIEM)**: Discover human and non-human identities (NHI), detect risky service accounts with access to sensitive data.
69+
70+
- **Cloud Asset Inventory:** Gain visibility into your multi-cloud environments by collecting, normalizing, unifying resource configuration data and prevent shadow IT
71+
72+
- **Container & Kubernetes Security**: Get complete visibility, from individual containers and Kubernetes objects to namespaces, nodes, clusters, and the underlying cloud infrastructure.
73+
74+
- **Security Data Fabric**: Integrate security data from multiple cloud providers into a single place and export data for usage in other systems and databases.
75+
76+
- **Policy-as-code:** Script and apply policies across your multi-cloud infrastructure and establish best practices for reliability, cost control, and resource configurations. 
77+
78+
Please also see [Fix Security](https://fix.security/), our hosted SaaS offering that is built on top of Fix Inventory.
79+
80+
## 🏄 Key concepts
81+
82+
Three concepts are helpful to understand how Fix Inventory works and how it’s different from other cloud security tools.
83+
84+
### 1. Normalized cloud data
85+
86+
Fix Inventory has knowledge of the provider-specific data model for every resource. To collect metadata from every cloud, Fix Inventory uses a pluggable architecture. Each collector plugin includes logic to extract data from the cloud provider APIs.
87+
88+
Post-collection, Fix Inventory normalizes the data and maps it to our [unified data model](https://inventory.fix.security/reference/unified-data-model) with [common properties](https://inventory.fix.security/reference/unified-data-model#resource-base-kind), [static typing](https://inventory.fix.security/reference/unified-data-model#complex-and-simple-kinds) and [inheritance](https://inventory.fix.security/reference/unified-data-model#resource-hierarchy).
89+
90+
In Fix Inventory, everything is a `resource` - cloud services, users, policies, etc.
91+
92+
- `id``name``kind``tags``age`, `last_access`, `last_update` are normalized resource properties
93+
- `cloud``account`, and `region` data denote the location of each resource.
94+
95+
The mapping with common properties, static typing and inheritance allow you to interact with resources across cloud providers in a consistent fashion.
96+
97+
For example, resource time stamps in Fix Inventory are normalized, which allows the use of relative times. Assume we want to find resources created in the last 3 days, no matter which cloud. Then we could express this with a relative duration string:
98+
99+
```jsx
100+
search age < "3d”
101+
```
102+
103+
### 2. Query language & policies
104+
105+
Fix Inventory comes with a human-readable query language, and the user interface is our [CLI](https://inventory.fix.security/reference/cli). The CLI provides an easy way to explore your infrastructure and get answers to security-related questions such as:
106+
107+
- Does user X have privileged access to resource Y?
108+
109+
- What resources are behind public IP address X?
110+
111+
- Which resources are incorrectly tagged?
112+
113+
Due to its statically typed data model, you can search for names, strings, or numbers in any combination. You can also leverage the dependency and access graph to include the relationships between resources, users, and permissions in your searches. Fix Inventory also supports [full-text search](https://inventory.fix.security/reference/search/full-text).
114+
115+
One key purpose of our query language is to define rules and policies that govern how your infrastructure should behave and then automatically trigger alerts and actions when these rules are violated.
116+
117+
For example, if you have a policy that all volumes must be encrypted, the following search will return all unencrypted volumes:
118+
119+
```python
120+
> search is(volume) and volume_encrypted=false
121+
```
122+
123+
The search leverages the common kind `volume` and will return results for all clouds. Turning a search into a policy and setting up [alerting](https://inventory.fix.security/how-to-guides/alerting) is also possible.
124+
125+
Fix Inventory ships with industry-standard benchmarks, like the CIS Benchmarks for AWS or Azure, the ISO-27001 or NIS-2. A report can be generated by invoking the [report](https://inventory.fix.security/reference/cli/report/benchmark) command:
126+
127+
```jsx
128+
> report benchmark run iso27001
129+
```
130+
131+
### Dependency and access graph
132+
133+
Fix Inventory stores relationships between resources in your cloud environment to understand logical dependencies and detect hidden pathways to potential breaches. You can:
134+
135+
- Query complex relationships across cloud layers.
136+
137+
- Add context by filtering for resource properties.
138+
139+
- Visualize search outputs to make risks more understandable.
140+
141+
For example, suppose I want to understand which S3 buckets in my infrastructure a user “Matthias” has write access to. In that case, I can write a query that uses the IAM (identity access management) graph to find out. I can pipe the search results into a [DOT file](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) and create a visualization that explains relationships to people without cloud or security expertise.
142+
143+
```bash
144+
> search --with-edges is(aws_iam_user) and name=matthias -iam[0:]{permissions[*].level==write}-> is(aws_iam_user, aws_s3_bucket) | format --dot
145+
```
146+
147+
Read more about [traversing the graph](https://inventory.fix.security/concepts/asset-inventory-graph#traversal) in our docs. Fix Security, our hosted SaaS product, offers these visualizations out of the box.
148+
149+
## 💖 Community
150+
151+
Fix Inventory is an open-source project by Some Engineering. Contact us on [our Discord server](https://discord.gg/fixsecurity) for:
152+
153+
- help with getting started
154+
155+
- issues you encounter
156+
157+
- writing queries
158+
159+
- using the dependency and access graph
160+
161+
## 🙏 Contributing
162+
163+
Feel free to [open a GitHub issue](https://github.com/someengineering/fixinventory/issues/new) for small fixes and changes. For bigger changes and new plugins, please open an issue first to prevent duplicated work and to have the relevant discussions first.
164+
165+
Please follow our [contribution guidelines](https://inventory.fix.security/development) to get started.
166+
167+
## 🎟 License
43168
44-
## License
45169
See [LICENSE](LICENSE) for details.

0 commit comments

Comments
 (0)