Coder Social home page Coder Social logo

nais / device Goto Github PK

View Code? Open in Web Editor NEW
17.0 8.0 6.0 11.32 MB

naisdevice is a application suite that enables NAV developers to connect to internal resources in a secure and friendly manner.

Home Page: https://doc.nais.io/device/install

License: MIT License

Shell 2.53% Go 88.89% Makefile 1.82% Smarty 0.16% Jinja 1.11% Dockerfile 0.13% NSIS 4.14% PLpgSQL 0.38% Nix 0.85%
wireguard go tray-application

device's Introduction

naisdevice

naisdevice is a mechanism enabling NAVs developers to connect to internal resources in a secure and friendly manner.

Each resource is protected by a gateway, and the developer is only granted access to the gateway if all of the following requirements are met:

  • Has a valid account
  • Has accepted naisdevice terms and conditions
  • Device is healthy
  • Is member of the AAD access group for the gateway (e.g. to connect to team A's DB (via gateway), you must be member of team A's AAD-group)

Deploying client changes

Executing make release-frontend is required for deploy of new naisdevice client to be released and made available for download/install/update.

key attributes

  • minimal attack surface
  • instantly reacting to relevant security events
  • improved auditlogs: who connected when and to what
  • moving away from traditional device management enables building a strong security culture through educating our users on client security instead of automatically configuring their computers

components

apiserver

The apiserver component serves as the gRPC API server, responsible for handling various configurations and managing communication with other agents. Its primary functionalities include:

gateway-agent

The gateway-agent runs on virtual machines (VMs) and interacts with the apiserver to receive and apply configurations. Key features of the gateway-agent include:

  • Streaming configurations from the apiserver.
  • Dynamic setup of:
    • WireGuard for communication from devices.
    • iptables for forwarding traffic.

auth-server

The auth-server operates in a cloud run environment and plays a crucial role in user authentication. Its functionalities include:

  • Authenticating users.
  • Issuing tokens to devices for secure communication.

enroller

The enroller is deployed on Cloud Run and is responsible for managing the enrollment process for both gateways and devices.

  • Handling the enrollment of gateways and devices securely.

device-helper

The device-helper serves as the gRPC API for the device-agent and performs essential setup tasks for devices. Key functionalities include:

  • Providing a gRPC API for the device-agent.
  • Reading device serial information.
  • Configuring network interfaces, routes, and WireGuard for secure communication.

device-agent

The device-agent is a crucial component responsible for managing device configurations and facilitating communication with the apiserver. Its main features include:

  • Streaming configurations from the apiserver.
  • Delegating configuration tasks to the device-helper via its gRPC API.
  • Serving status updates through its gRPC API to the CLI/systray.
  • Executing the authentication flow to obtain user tokens.

systray

The systray component acts as a graphical user interface (GUI) for the agent, utilizing its gRPC API. It provides a convenient way for users to interact with and monitor the agent's status.

controlplane-cli

The controlplane-cli serves as an administrative command-line interface (CLI) interacting with the apiserver through its gRPC API. This CLI is designed for administrative tasks and configurations.

prometheus-agent

The prometheus-agent component connects to all gateways over WireGuard and configures Prometheus (deployed on the same VM) to scrape relevant metrics.

  • Establishing connections to gateways using WireGuard.
  • Configuring Prometheus to scrape metrics from connected gateways.

FAQ

How to install

See https://doc.nais.io/operate/naisdevice/how-to/install/

Stuff we use

Kolide

WireGuard

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.