kanidm/README.md

102 lines
3.5 KiB
Markdown
Raw Normal View History

2019-07-28 13:25:51 +02:00
<p align="center">
2020-01-17 02:51:15 +01:00
<img src="https://raw.githubusercontent.com/kanidm/kanidm/master/artwork/logo-small.png" width="20%" height="auto" />
2019-07-28 13:25:51 +02:00
</p>
2019-02-02 02:44:31 +01:00
# Kanidm
2018-09-29 09:54:16 +02:00
2019-02-02 02:44:31 +01:00
Kanidm is an identity management platform written in rust. Our goals are:
2018-09-29 09:54:16 +02:00
* Modern identity management platform
* Simple to deploy and integrate with
2019-07-28 14:25:12 +02:00
* Extensible for various needs
* Correct and secure behaviour by default
2021-02-15 00:35:52 +01:00
Today the project is still under heavy development to achieve these goals - We have many foundational
parts in place, and many of the required security features, but it is still an Alpha, and should be
treated as such.
2018-09-29 09:54:16 +02:00
2021-03-25 01:34:29 +01:00
## Documentation / Getting Started / Install
If you want to deploy kanidm to see what it can do, you should read the [kanidm book]
We also publish limited [support guidelines].
[kanidm book]: https://github.com/kanidm/kanidm/blob/master/kanidm_book/src/SUMMARY.md
[support guidelines]: https://github.com/kanidm/kanidm/blob/master/project_docs/RELEASE_AND_SUPPORT.md
## Code of Conduct / Ethics
2018-09-29 09:54:16 +02:00
See our [code of conduct]
2019-07-28 14:25:12 +02:00
See our documentation on [rights and ethics]
[code of conduct]: https://github.com/kanidm/kanidm/blob/master/CODE_OF_CONDUCT.md
2020-01-17 02:51:15 +01:00
[rights and ethics]: https://github.com/kanidm/kanidm/blob/master/ethics/README.md
2019-07-28 14:25:12 +02:00
## Getting in Contact / Questions
2020-04-25 05:18:19 +02:00
We have a [gitter community channel] where we can talk. Firstyear is also happy to
answer questions via email, which can be found on their github profile.
2020-04-25 05:18:19 +02:00
[gitter community channel]: https://gitter.im/kanidm/community
2021-03-25 01:34:29 +01:00
## Developer Getting Started
If you want to develop on the server, there is a getting started [guide for developers]. IDM
is a diverse topic and we encourage contributions of many kinds in the project, from people of
all backgrounds.
[guide for developers]: https://github.com/kanidm/kanidm/blob/master/DEVELOPER_README.md
2021-02-18 00:28:36 +01:00
## Features
2019-07-28 14:25:12 +02:00
2021-02-18 00:28:36 +01:00
### Implemented
* SSH key distribution for servers
* Pam/nsswitch clients (with limited offline auth)
* MFA - TOTP
* Highly concurrent design (MVCC, COW)
* RADIUS integration
2021-03-25 01:34:29 +01:00
* MFA - Webauthn
2021-02-18 00:28:36 +01:00
### Currently Working On
* CLI for administration
2021-03-25 01:34:29 +01:00
* WebUI for self service with wifi enrollment, claim management and more.
* RBAC/Claims/Policy (limited by time and credential scope)
2021-02-18 00:28:36 +01:00
### Upcoming Focus Areas
* OIDC/Oauth
2019-07-28 14:25:12 +02:00
* Replication (async multiple active write servers, read only servers)
2021-02-18 00:28:36 +01:00
### Future
2021-03-25 01:34:29 +01:00
* SSH CA management
2021-02-18 00:28:36 +01:00
* Sudo rule distribution via nsswitch
* WebUI for administration
2018-09-29 09:54:16 +02:00
* Account impersonation
2019-07-28 14:25:12 +02:00
* Synchronisation to other IDM services
2018-09-29 09:54:16 +02:00
2021-03-25 01:34:29 +01:00
## Some key project ideas
* All people should be respected and able to be respresented securely.
* Devices represent users and their identities - they are part of the authentication.
* Human error occurs - we should be designed to minimise human mistakes and empower people.
* The system should be easy to understand and reason about for users and admins.
2021-03-25 01:34:29 +01:00
### Features We Want to Avoid
2021-03-25 01:34:29 +01:00
* Auditing: This is better solved by SIEM software, so we should generate data they can consume.
* Fully synchronous behaviour: This prevents scaling and our future ability to expand.
* Generic database: We don't want to be another NoSQL database, we want to be an IDM solution.
* Being like LDAP/GSSAPI/Kerberos: These are all legacy protocols that are hard to use and confine our thinking - we should avoid "being like them" or using them as models.
2019-03-22 01:09:05 +01:00
2021-03-25 01:34:29 +01:00
## What does Kanidm mean?
2019-02-02 02:44:31 +01:00
The original project name was rsidm while it was a thought experiment. Now that it's growing
and developing, we gave it a better project name. Kani is Japanese for "crab". Rust's mascot is a crab.
Idm is the common industry term for identity management services.
2018-09-29 09:54:16 +02:00