Git Product home page Git Product logo

ithos's Introduction

ithos Latest Version Build Status Apache 2 licensed

Modern directory services and credential management

What is ithos?

ithos (pronounced ˈēTHäs like "ethos") is a modern directory server designed to be a master access control system for a fleet of Linux or other Unix-like servers. The design is inspired by LDAP, but using gRPC and JSON APIs in lieu of the LDAP wire protocol. As ithos is intended for highly secure applications, it's written in the Rust language to ensure safety.

The key differentiating feature of ithos over other directory servers is the use of a cryptographically authenticated append-only log, similar to a "blockchain", to mediate all changes to the directory. This means every change is fully auditable and can be attributed to one or more credentials for users or automated processes who authorized the change.

NOTE: gRPC support forthcoming

Is it any good?

Yes.

Is it "Production Ready™"?

DANGER: EXPERIMENTAL

ithos does not yet provide the minimum viable functionality it needs to be useful. The documentation below covers the current functionality, but it does not yet explain how to deploy a practical production system.

tl;dr: Not ready yet. Check back later.

Building

These instructions assume you have a Rust installation. If you haven't yet installed Rust, please visit https://www.rustup.rs/ for instructions on how to install Rust.

  1. Clone the ithos git repository:

    $ git clone https://github.com/cryptosphere/ithos.git
    Cloning into 'ithos'...
    
  2. Compile ithos with Cargo:

    $ cargo build --release
    
  3. Ensure binary works:

    $ target/release/ithos -h
    ithos v0.1
    
    USAGE:
        ithos [SUBCOMMAND]
    
    FLAGS:
        -h, --help       Prints help information
        -V, --version    Prints version information
    
    SUBCOMMANDS:
        db        Creates a new ithos database
        domain    Adds a new domain to an ithos database
        help      Prints this message or the help of the given subcommand(s)
    

Usage

Creating a new ithos database

  1. Create a filesystem directory where the database will live:

    $ mkdir my_ithos
    
  2. Create a new ithos database inside the newly created directory:

    $ target/release/ithos db my_ithos
    Creating database at: my_ithos
    
    Database created! Below is the password for the admin user ('manager')
    Don't lose it! You will need it to perform administrative actions:
    
    ITHOS-GENPASS-xitak-refuk-lipef-zuxax-48214
    
  3. Create an initial domain within your ithos database

    $ target/release/ithos domain example.com --path my_ithos
    Creating domain 'example.com' in database at my_ithos
    manager's password:
    Domain example.com created!
    

License

Copyright (c) 2016-2017 Tony Arcieri. Distributed under the Apache 2.0 License. See LICENSE file for further details.

ithos's People

Contributors

tarcieri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.