GithubHelp home page GithubHelp logo

mozilla-github-standards / cdca4284a94044aeccf0706083f51598384eca3debd2955a8124c743a20aa0c9 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mozilla-iam/federated_access_proxy

0.0 1.0 0.0 818 KB

BeyondCorp-style federated access proxy

License: Mozilla Public License 2.0

Dockerfile 3.52% Makefile 3.32% Lua 6.21% Python 26.79% Shell 11.22% CSS 33.26% JavaScript 8.43% HTML 7.25%

cdca4284a94044aeccf0706083f51598384eca3debd2955a8124c743a20aa0c9's Introduction

Build Status

STATUS: POC

Youtube Demo

Federated Access Proxy

Diagram

This is a BeyondCorp-style federated access proxy. Beyond corp is a USENIX white paper/concept from 2014, by R.WARD explaining Google's next-gen network perimeter: there is none. Instead of using network access control to create a guarded perimeter where only trusted users have access (such as via VPN tunnel, which provides network access), beyond corp uses things like:

  • HTTPS as a transport for all communications to the trusted environment (usually through an HTTPS reverse-proxy listening on the Internet).
  • Web based authentication (usually with OpenID Connect or SAML w/ 2FA, or any enterprise single sign on solution).
  • Direct authentication to the service (zero network trust) all authentication and encryption are end-to-end without any exception.
  • No permanent credentials stored on the user's machine, only ephemeral credentials.
  • No VPN required (optional).

This federated access proxy implements this (with optional transport proxying for compatibility and latency reasons, for example SSH protocol can be proxied over HTTPS, or not proxied, at the choice of the operator).

The concepts and code behind the federated access proxy can be applied to any command-line client for any protocol that requires some kind of access token as proof of being authenticated/identified with an identity provider.

Sequence diagram - flow with OpenSSH authentication

SequenceDiagram

Deployment

Docker

  • cd Docker
  • Build the image
    • make
  • Start the dev local image
    • Populate compose/local.env as desired, these are the credstash variables mainly, such as flask_secret=... or client_secret=...
    • make compose
  • Start the stage, prod images (uses remote image, feel free to override it)
    • make compose-staging, make compose-production, ...

Cloudformation

  • ./deploy-{dev,prod,...}.sh
  • it reads from cloudformation/*

Credstash

See https://github.com/fugue/credstash for setup.

Values required:

  • accessproxy.flask_secret
  • accessproxy.discovery_url
  • accessproxy.client_secret
  • accessproxy.client_id
  • accessproxy.ca_user_key (see scripts/02_gen_client_ca.sh)
  • accessproxy.ca_user_key_pub (ditto)

cdca4284a94044aeccf0706083f51598384eca3debd2955a8124c743a20aa0c9's People

Contributors

andrewkrug avatar gdestuynder avatar gdestuynder-mozilla-owner avatar mozilla-github-standards avatar

Watchers

 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.