8000 GitHub - ferriskey/ferriskey: FerrisKey is an open-source IAM solution designed for modern cloud-native environments, high-performance and written in Rust. · GitHub
[go: up one dir, main page]

Skip to content
ferriskeyPublic

About

FerrisKey is an open-source IAM solution designed for modern cloud-native environments, high-performance and written in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

749 stars

Watchers

4 watching

Forks

Latest commit

 

History

1,067 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

FerrisKey logo

FerrisKey
Open-source identity and access management, written in Rust

CI Release OpenSSF Scorecard OpenSSF Best Practices CNCF Landscape License Stars Sponsor

Sponsors

Cloud-IAM     France Nuage     Gilded Health     Nudibranches


Why FerrisKey?

FerrisKey is an identity and access management (IAM) server written in Rust. It implements OpenID Connect and OAuth 2.0, keeps the users, roles and clients of each tenant in a separate realm, and ships with an admin console and a Helm chart. It is meant as an open-source alternative to the heavier IAM servers.

Table of contents

Features

Capability Details
OpenID Connect / OAuth 2.0 Standard flows for applications and services.
Multi-tenant realms Users, roles, clients and secrets are isolated per realm.
Clients and service accounts Fine-grained role mapping on a bitwise role system.
MFA TOTP, WebAuthn, magic links and recovery codes, enforced through required actions.
Observability Prometheus metrics and a security event log.
Kubernetes Helm chart published as an OCI artifact.

Quick start

For local development with the repository justfile, see DEVELOPMENT.md.

Option A: published Docker images

docker compose --profile registry up -d

Option B: build the Docker images

docker compose --profile build up -d

With either option, the console is at http://localhost:5555. The default credentials are admin / admin.

The compose file mounts pgdata at /var/lib/postgresql, the mount point recommended from Postgres 18. If an older local setup used a different path, remove or migrate the old volume first. docker compose down -v resets it and deletes its data.

Option C: Helm (Kubernetes)

The chart needs a reachable Postgres, external or deployed by your platform's operator. See the chart documentation.

Option D: Cargo

  1. Clone the repository.

    git clone https://github.com/ferriskey/ferriskey
    cd ferriskey
  2. Start the database and run the migrations.

    cd api
    cp env.example .env
    # edit .env if the defaults do not suit you
    docker compose up -d
    cd ../core
    # sqlx-cli: cargo install sqlx-cli --no-default-features --features postgres
    DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate run
  3. Start the API. It needs a recent stable Rust toolchain (rustup update).

    cd ../api
    cargo run
  4. Start the frontend (optional).

    cd ../front
    cp .env.example .env
    pnpm install
    pnpm run dev

The console is at http://localhost:5555. The default credentials are admin / admin.

Configuration

Common environment variables:

PORT=3333
ENV=development
LOG_LEVEL=info
DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey

ADMIN_PASSWORD=admin
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@ferriskey.rs

ALLOWED_ORIGINS=http://localhost:5555

ALLOWED_ORIGINS lists the origins accepted on every route. Each client can also declare its own web origins at runtime, enforced per realm (see the web-origins endpoints of a client). Those per-client origins never replace ALLOWED_ORIGINS: /config, the health probes and the API docs carry no realm, so an admin console served from another origin than the API must keep its origin in ALLOWED_ORIGINS.

By default, the API listens on port 3333 and the frontend on port 5555.

Database migrations

FerrisKey uses SQLx for database migrations. To apply pending migrations:

cd core
DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate run

To check migration status:

DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate info

If DATABASE_URL is set in your environment or in .env, you can drop it from the command.

Modules

  • Trident: multi-factor authentication (TOTP, WebAuthn, magic links, recovery codes) and the required actions that enforce it.
  • SeaWatch: security event log, queryable and exportable from the console.
  • Webhooks: notifications on user, client and realm lifecycle events, so integrations do not need a fork.

Architecture

FerrisKey follows a hexagonal (ports and adapters) architecture. The domain logic does not depend on the database or the HTTP layer: those implement the ports the domain defines, and can be replaced without touching it.

Observability

The API serves Prometheus metrics on /metrics, under the configured root path.

Roadmap

The public roadmap is at https://ferriskey.rs/roadmap. ROADMAP.md lists the epics in progress and how the roadmap is maintained.

Adopters

Organizations using FerrisKey are listed in ADOPTERS.md. If you run FerrisKey, add yourself with a pull request.

Contributing

Bug fixes, features, documentation and tests are all welcome.

  1. Read CONTRIBUTING.md.
  2. Pick an issue. Those labelled good first issue are a good place to start.
  3. Open a pull request with tests and a short description.

Questions about modules, APIs or the console go to Discussions.

Code of conduct

FerrisKey follows the CNCF Code of Conduct. See CODE_OF_CONDUCT.md for scope and how to report an incident.

Security

Report vulnerabilities privately through the Security tab, never in a public issue. Supported versions, response targets and the disclosure process are in SECURITY.md.

Sponsors and governance

FerrisKey is Apache-2.0 only, with no CLA, no open-core model and no enterprise edition. Sponsors fund the project but do not control it. See Sponsors and open source commitments in GOVERNANCE.md.

The project is preparing a CNCF Sandbox application, tracked in #1623. The answers to the Day 0 General Technical Review live in docs/cncf/general-technical-review.md.

License

FerrisKey is released under the Apache-2.0 license.

Links

About

FerrisKey is an open-source IAM solution designed for modern cloud-native environments, high-performance and written in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

749 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0