Giter VIP home page Giter VIP logo

cybnity / foundation Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 2.0 21.38 MB

Open source cyber-serenity platform that help the security teams designing and managing companies' ISMS, and which allow them to create resilient digital systems with efficient responses against to cyber-threats.

License: Apache License 2.0

cyber-security cybersecurity governance isms iso27001 java nist platform software

foundation's Introduction

image

Let's Make Safe Digital World!

CYBNITY open source cybersecurity platform help you to govern the cyber defense of your digital assets for operate them with complete serenity.

PURPOSE

Welcome on the CYBNITY open souce program which target to deliver a security platform efficient and flexible for each company with need to design its Information Security Management System (ISMS) and/or to operate digital systems in a secure way against the cyberthreats.

Our Mission

We develop an open source technological defense platform to help the security teams designing and managing companies’ security solutions, create sustainable digital systems with efficient responses against to cyber-threats.

How It Works?

The CYBNITY platform makes it possible to design the strategic governance of the digital assets cybersecurity, and to pilot tactical operational protection systems guaranteeing the neutralization of security incidents.

WHAT CYBERSECURITY PROBLEM THE PROJECT SOLVE?

For any organization with complex areas to defend:

image

Who want to design, implement, manage and keep control of any custom Information Security Management System (ISMS):

companies-design-isms-with-CYBNITY

WHAT WE BUILD?

We develop a technology, deployable as a platform (in-house, on-cloud, in hybrid environment) based on a modular architecture, that support security activities performed by security teams (e.g CISO, ISSO, Risk Executive, RSSI...) with easy implementation of standard (e.g NIST, ISO/IEC 27001, IEC 62443...).

Modular architecture

image

Security activities supported

image

Our Design Approach

Several security domains are covered by our targeted architecture model, implementing a Domain-Driven-Development approach.

Operational Cockpits (User Interfaces)

We capitalize experiences and best defense practices (e.g military or police systems/methods) to build tactical tools integared suite allowing dynamic build according to the deployment context of companies and/or to a risk situation in progress.

image

Applications (domain contexts)

image

THE PROGRAM

Our Methods

BUILD PROCESS

The idea creation process implemented by the project (for definition of more relevant features to develop for enhance the solution), is based on a mix of inspirations coming from proprietary solutions available on the market (maturity level to have), standards and frameworks relevant for the companies (e.g regulation to support), problems and need meet by customers (e.g companies with digital assets, electronic solutions manufacturers) and contextual drivers (e.g countries conflicts increasing cyber-attacks).

image

DELIVERY PROCESS

image

Support & Docs

OTHER RESOURCES

COMMUNICATION CHANNELS

  • Information web site about the project latest news, and documentations about concept, requirements, business/technology/systems architectures...
  • CYBNITY LinkedIn page where project news are promoted to professional ecosystem.

foundation's People

Contributors

olivierlemee avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

mileashter

foundation's Issues

As technology, I should support Boundary mechanisms are deployed to separate computing systems and network infrastructures

https://www.notion.so/cybnity/461-9d5ed9bb12524abb9c8a2ad6c5902cf5

REQ_SEC_10 : Control the flow of information and access across network boundaries in computing and communications infrastructures, and to enforce the proper separation of user groups, a suite of access control devices and accompanying access control policies are used

Rationale: Determine the following for communications across network boundaries:
• What external interfaces are required
• Whether information is pushed or pulled
• What ports, protocols, and network services are required
• What requirements exist for system information exchanges; for example, trust relationships, database replication services, and domain name resolution processes.

As technology, I should support Dedicated channels per application/feature perimeter

https://www.notion.so/cybnity/446-db4c69bed1304685ab50258b5641c791

REQ_MAIN_3: Internal queues and topics are only used per application domain and/or feature perimeter without visibility/access by other domains
Internal queues and topics are only used per application domain and/or feature perimeter without visibility/access by other domains
implementation: Each feature and/or application module requiring internal uses of channels (e.g Kafka topics implementing a feature’s process; UI capability’s module implementing capabilities command chain) is only authorized (e.g dedicated permission scheme) to use them.
The elements of infrastructure supporting each bounded context (application domain) shall implement a commands bus (that is imperative as “make this action”) and a event messages bus (notifications coming from the domain aggregated objects like “order confirmed”) that are independent.

Tech: redis, kafka

As technology, I should support A channels consumers group is implemented per deployable application

https://www.notion.so/cybnity/451-d5cfa0ecd1dd44a6b412839a5c80005a

REQ_SCA_2: Each applicative module (e.g an application grouping several features regarding a bounded context; an application grouping several capabilities regarding a capabiy domain) own a dedicated group of consumers required by its embedded functions

impl: All the consumers (e.g capability Verticle using dedicated Redis channels) implemented by a UI Capability domain module (e.g capabilities module deployable as independent component on a JVM process) are categorized as one group of consumers in front of the messaging queues (e.g Redis topics) and consume one partition dedicated to each capability. Same approach is implemented for all the consumers of a Feature domain module which are categorized into one group for consumption of messaging queues (e.g Kafka topics) for consume one partition per feature use case.

tech:java: redis: kafka

As technology, I should support Authenticate users and processes ensuring appropriate access control decisions both within and across domains

https://www.notion.so/cybnity/471-a2f7516030c34763ba3e654dbb73834d

HAProxy APIs Gateway

Node.JS

  • implementation of foundation web-reactive-frontend integration with keycloak
    • plug of keycloak over keycloak configuration file (adapter of access-control-sso-adapter-impl) auto-packaged during the helm configuration of the nodejs web app
    • nodejs server-side automatically discover dynamically at runtime the keycloak.json file according to the webapp module's layer (allow to adapter to use the good keycloak client profile)
    • SSL usage between frontend and keycloak
  • FRONTEND FEATURES : capabilities developed as default basic user interfaces flow
    • user create account and credentials on existing realms (with/without async validation step by tenant id/realms owner) via domain process of ac-control-service
      • user can access from existing account to organization realm only when ciso accepted his registration (or rejected it) with MFA
    • new user without organization create account AND organization (tenant ID) with automatic tenantId creation (realms in keycloak)
      • autocreate roles, permissions in realms (application modules, default roles according to the default framework for organization)
      • organization's root user considered can access to front with profil access to admin console only to manage manually internal users (no access to technical configurations), else could by replaced by future profile UI in reactjs
      • any valid and authorized user can see his profile (e.g sso page with attributes values; future replacement by frontend reactjs views)

Validate behaviors

  • manual test of tester account regarding deployed nodejs front app

  • unit tests campaign of integration (bdd test) over http allowing to deploy in staging environment with check of integrated frontend app, keycloak/postgresql

    • creation of test account over http (keycloak standard page) reusable by test campaign
    • authentication test with tester account and received tokens read/check (embedded mandatory information like tenant-user, role(s), access/user/refresh token)
    • refresh token test allowing continuity of web-frontend usage over base expiration period
    • logout test validating session closed and token removed
  • Keycloak adapter for NodeJS doc

JAVA

  • implementation of ac-adapter-impl library including the dynamic read of keycloak.json files (connector as layer module: use of good keycloak client adapter according to the server app layer that is running and using the adapter) embedded into any server module using the library

  • ADMINISTRATION FEATURES

    • configurationmanager (domain layer) via keycloak admin rest api via keycloak-admin-client java library
      • auto-discovery of the realms to connect according to the deployed K8s cluster (application context read by the instantiated ac-adapter-api)
      • create default client adapters, permissions required by cybnity modules for run
      • autostart when ac-service started (to init keycloak and open accesses to other adapters)
      • replace manual procedure doc by the auto-procedure realized by ac-service module
    • created sub-project dedicated to ac-adapter-impl/keycloak-adapter-impl as default implementation (allowing to implement futures additional UIAM solutions compatibility) and sub-projects of ac-translator/keycloak-translator dependency
    • adapter fonctions allowing creation of realms (organization=tenantid) by a new user of frontend with/without existent realm
  • packaging and unit test validating the dynamic behavior of the adapter api and impl libraries reusable by any java component (ui layer components, rts components...) requiring to validate (sso token check) or to read user information (role, permission, user description) from application and domain layers area

  • Keycloak adapter for Java doc

  • Keycloak multi-tenancy doc

  • Use OpenID connect protocol : OIDC is an extension of OAuth2, with data structures in JSON format (JWT), and simple HTTPS flows for transport. User identity data (“claims”) are issued in a JSON web token (ID Token). The claims will include a persistent identifier and user data defined by the requested scopes. Conventionally, this token is digitally signed, and may also be encrypted where required.

  • With Vert.x extension (backend api)

  • implementation of operational state check regarding the sso server (via client dedicated to module type), including the dynamic packaging of keycloak.json apdater configuration (helm), the link to ac-adapter libraries (api, impl) from a ui layer module or from a application layer module

  • unit tests campaign of integration regarding the sso check use case tests required by the capability/domain/applicative component reusing the ac-adapter facade during application processes (e.g validation of endpoint request during a command entry received over the uis space)

  • Authentication : see Java JAAS and Jaas tutorial documentations

  • Keycloak java client documentation

tech: keycloak

As user, I want to Find assessed risks

https://www.notion.so/cybnity/40-5eefc1a4251147fd8b6d19aad353eaa8

Search cybersecurity risks that are assessed (e.g in progress, finalized and consistents, reviewed) with consideration of threats, vulnerabilities, likelihoods and impacts analysis performed given a realistic visibility for their management (e.g identification of control measures to implement) regarding existent assets, and/or future (e.g projects in progress). This scope consider the processes initialized and/or finalized of risks identication, assessment, analysis.

REQ_FCT_53: https://www.notion.so/cybnity/Find-assessed-risks-97090742f19e475d83c4a3b9cadbb5d4?pvs=4

As technology, I should support Clusterizable independent unit per technical or functional concern

https://www.notion.so/cybnity/447-d01de61153714443ae8fc294300b773a

REQ_MAIN4: https://www.notion.so/cybnity/REQ_MAIN_4-8513483dd519412087185e24134453bc?pvs=4
As Clusterizable independent unit per technical or functional concern:

  • One Vert.x Verticle is deployable per JVM and per CPU core for each technical concern (e.g Bridge for routing a an API http/rest or event bus API exposed to Internet) according to the exposed protocol, and with securized isolation (e.g dedicated settings and sla)
  • Each technical service (e.g Vert.x bridge Verticle for protocol routing as backend gateway) or functional service (e.g UI capability entry point exposing a capabilities domain’s api; one feature Verticle per JVM per CPU core on computation units) is packaged/deployable as an independent applicative component on an independent JVM and CPU core (e.g allowing horizontal scalability).

Components: vertx server, reactjs, docker, K8s cluster

TODO

  • create helm github repository supporting the helm chart source codes

    • configure repositoy, workflows...
    • branch rules, roles, permission
  • develop multi-environments support from charts/sub-charts with migration of existing sh scripts (Node areas)

  • develop workflow CI (based on existing helm chart for one envt without specific cluster configuration) that deploy a version into a github environnement (not self-hosted used with public repo; minikube based) allowing to test components during a common development, or during a tests campaign execution of Test stage

  • Infrastructure services area

    • Defense platform cluster as Kubernetes Local Dev cluster (deployable as mono instance cluster of modules into a Minikube stack)
      • Provisioning management of networking, load balancer, database, users, permissions... and Kubernetes cluster (orchestration management) via Helm (Local cluster for dev on workstation's Minikube; "Staging & QA" cluster for test on OVHCloud)

      • Docker image & resources configuration management via Helm source codes (Configuration of systems' resources, logs, forwarding ports of Docker image, Kubernetes objects (e.g baseline/live replica cluster allowing pre-prod dress rehearsal, canary cluster for code changed and rollout with automated recovery, production/live cluster) supporting environments/infrastructures deployment AT APPLICATION LEVEL

      • Control Plane

        • API server (including https public root certificates) and Controller Manager > Cloud provider API link > cluster external ip address
        • Volumes configuration as stateful set (and \deployment\local-deployment.yaml file definition)
      • User interfaces area as Kubernetes Node (including external ip address)

        • Kube-Proxy (including inside/outside cluster network session rules)
      • Domains I/O area Node (including external ip address)

        • Kube-Proxy (including inside/outside cluster network session rules)
      • Domains area Node (including external ip address)

        • Kube-Proxy (including inside/outside cluster network session rules)
      • Infrastructure Services Area Node (including external ip address)

        • Kube-Proxy (including inside/outside cluster network session rules)
    • Infrastructure services zone firewall
    • Domains zone firewall as Calico enforcer, kubernetes network policy
  • Foundation common modules

    • UI area
      • Internet DMZ firewall as calico enforcer, kubernetes network policy
      • UIS brokers registry system as zookeeper cluster (helm project)
        • Kubernetes control plan (\service\uis-broker-service.yaml file definition)
        • Kubernetes control plan (\service\uis-broker-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
      • Users Interactions Space - UIS system as Redis cluster (helm project)
        • Kubernetes control plan (\service\uis-service.yaml file definition)
        • Kubernetes control plan (\service\uis-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
      • Reactive messaging gateway system as vert.x backend server (helm project)
        • Kubernetes control plan (\service\backend-service.yaml file definition)
        • Kubernetes control plan (\service\backend-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
      • Web reactive frontend system as ReactJS and Node.js server (helm project)
        • Kubernetes control plan (\service\frontend-service.yaml file definition)
        • Kubernetes control plan (\service\frontend-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
    • Domains I/O area
      • Domains API zone firewall as calico enforcer, kubernetes network policy
      • DIS brokers registry as Zookeeper cluster (helm project)
        • Kubernetes control plan (\service\dis-broker-service.yaml file definition)
        • Kubernetes control plan (\service\dis-broker-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
      • Domains Interactions Space as Kafka cluster (helm project)
        • Kubernetes control plan (\service\dis-service.yaml file definition)
        • Kubernetes control plan (\service\dis-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
    • Domains area
  • Access control domain deployable modules

    • Infrastructure services area
    • UI area
      • Keycloack SSO backoffice & database server as PostgreSQL server, Keycloack backoffice server supporting the API delegation for teams members permissions, accounts etc.. managed by a final user (e.g CISO) : Helm project
        • Keycloack SSO service (defined in infrastructure area over Kubernetes Node) and in UI layer (only login view module) as delegation login screen from CYBNITY frontend
        • delegation adapter usable from access control domain gateway to check sso from many areas (ui for sso login, doamin for sso token check)
      • access control ui - e.g security team member permissions, ui capabilities server
        • Kubernetes control plan (\service\access-control-domain-ui-service.yaml file definition)
        • Kubernetes control plan (\service\access-control-domain-ui-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
    • Domains I/O area
      • access control domain gateway system as Vert.x server
        • Kubernetes control plan (\service\access-control-domain-gw-service.yaml file definition)
        • Kubernetes control plan (\service\access-control-domain-gateway-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
    • Domains area
      • Migrate Postgresql module from ui layer into the infrastructure layer (including access to keycloack back office) + open network connection between SSO service to node
      • Access control process module system as Flink server (rts process module, apache flink, apache flink cep, kafka client, mongodb client, zookeeper client)
        • Flink server (Docker image) including port as dedicated Docker image template
        • Kubernetes control plan (\service\access-control-domain-process-service.yaml file definition)
        • Kubernetes control plan (\service\access-control-domain-process-systems-deployment.yaml file definition)
        • Volumes configuration as stateful set linking to systems-deployment file
        • Kubernetes POD (see Assembly strategy )
        • Kubernetes Service (including POD VPN address, POD unique IP address)
  • Update the Implementation View documentation regarding:

    • the packaging models (docker and kubernetes components level)
    • the configuration-management (helm resources and settings level per specific docker image)
    • the system IaC (terraform IaC and systems level)
    • update the containerized system documentation about systems platform
    • the runtime dependencies overview between deployable components and macro-links between them (e.g CYBNITY system components level between park of CYBNITY Docker Images executed into Kubernetes services activated)
    • the map of logical stream ports (e.g internal / external) helping to understand the path of events/interactions flow between the Kubernetes Nodes (supposed deployable as application Space Based Architecture; with visibility on location where security policy about permissions/flow opened are controlling the runtime perimeters)
  • tech: kubernetes, docker, terraform, helm

As technology, I should support Usage of unique identities ensuring accountability of users, devices, systems

https://www.notion.so/cybnity/472-102e61be3cf443f08997ab4286d0aa0f

REQ_SEC_21: The users, their devices, the third-parties systems or any solution using the applications are uniquely identified (e.g based on logical information like name, contact, a digital object; and/or based on physical information like owned object, device id, biometrics) during their interactions

An identity may represent an actual user or a process with its own identity, e.g., a program making a remote access. Unique identities are a required element in order to be able to:
• Maintain accountability and traceability of a user or process
• Assign specific rights to an individual user or process
• Provide for non-repudiation
• Enforce access control decisions
• Establish the identity of a peer in a secure communications path
• Prevent unauthorized users from masquerading as an authorized user.

help: identity/account implementation in access-control domain shall be inspired by https://freeduse.atlassian.net/wiki/spaces/IR/pages/6225984/BAI03.01+Entities+Design+Specification for mapping/integration and encapsulation of Keycloack api

  • url and ports documentation about the local-dev environment helping to enhance the development context easily when new pod/service are included into the dev cluster

HAProxy APIs Gateway

  • packaged module for minikube deployment as apis gateway
  • plug with keycloak routes allowing oauth2 authentication for web-reactive-frontend application
  • plug and usage of Ingress Controller by HAProxy service regarding url path-based routing (in place of services/ports mapping)

Node.JS

  • Implementation of foundation web-reactive-frontend integration with keycloak
    • base html/react js page as default html single page
      • requiring secure access
    • Configuration of the reverse proxy for routing rule from external 80 to frontend + sameSite cookie modification in header (allowing browser with tracking protection)
      JAVA
  • ADMINISTRATION FEATURES
    • created sub-project dedicated to ac-adapter-impl/keycloak-adapter-impl as default implementation (allowing to

As technology, I should support Deployable module per application (bounded context)

https://www.notion.so/cybnity/444-39c830770a634e6eb7149a8826549146

REQ_MAIN_1 : https://www.notion.so/cybnity/REQ_MAIN_1-3459109933554db8a4a36623823e8b0a

As security system, I should ensure IA-5(1) Password-based authentication

https://www.notion.so/cybnity/311-210680c3921e4c2da0b9472f0e620597

IA-5(1):
For password-based authentication: 

  • Maintain a list of commonly-used, expected, or compromised passwords and update the list [Assignment: hosting organization-defined frequency] and when organizational passwords are suspected to have been compromised directly or indirectly; 
  • Verify, when users create or update passwords, that the passwords are not found on the list of commonly-used, expected, or compromised passwords in IA-5(1)(a); 
  • Transmit passwords only over cryptographically-protected channels; 
  • Store passwords using an approved salted key derivation function, preferably using a keyed hash; 
  • Require immediate selection of a new password upon account recovery; 
  • Allow user selection of long passwords and passphrases, including spaces and all printable characters; 
  • Employ automated tools to assist the user in selecting strong password authenticators; and 
  • Enforce the following composition and complexity rules: [Assignment: hosting organization-defined composition and complexity rules].

As technology, I should support Tenant support for users of same organization

https://www.notion.so/cybnity/454-452f0645dd524fd1b57d07a68a368a3d

REQ_SEC_3 : TenantId support is implemented to allow notification of several users attached to a same company and/or solution infrastructure dedicated to a company
The exchanges to multiple connected users of a same company (e.g security team authorized/connected on a dedicated solution instance receiving a transversal notification event on eventbus/tenantId/all/* or via eventbus/all/*) are possible with total confidentiality (without possible visibility for other companies and/or infrastructures when solution is deployed on a Cloud/SaaS strategy).

ech: Vert.x Web; sockJS event bus bridge

upgrade fact repository and store persistence interface contract (immutable project) to support tenant id segregation according to the page 401 DDD book

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.