Skip to content

Latest commit

 

History

History

architecture

openRMF Architecture

This has the current architecture information for the OpenRMF application as of version 0.8.

Image

The Genesis

The January 2019 Phase 1 Vision / Concept as drawn on my whiteboard in my basement: Image

Current Architecture

The architecture was setup to do a few things for this tool and for myself actually:

I started this project with separate microservices all over including messaging for API-to-API communication. Future enhancements are to organically add publish / subscribe pieces such as compliance, auditing, logging, etc. to make this more user and enterprise ready. Along with all the error trapping, checking for NATS connection, etc. that a production 1.0 application would have.

Current Messaging Architecture

OpenRMF uses NATS messaging to work eventual consistency as well as API-to-API communication. The items below talk on the types of messaging, who initiates the communication, the receiving NATS client, and a description of what it does.

Subject Msg Type Calling API Receiving Client Description
openrmf.checklist.read Request/Reply Score (Msg Client), Compliance openrmf-msg-checklist Ask for a full checklist/artifact record based on the ID passed in
openrmf.system.checklists.read Request/Reply Compliance openrmf-msg-checklist Ask for all checklist records for a given system title passed in
openrmf.checklist.save.new Subscribe Upload openrmf-msg-score Grab the new uploaded checklist ID sent and generate the score of open, not applicable, not a finding, and not reviewed items across categories
openrmf.checklist.save.update Subscribe Upload openrmf-msg-score Grab the updated checklist ID sent and generate the score of open, not applicable, not a finding, and not reviewed items across categories
openrmf.checklist.delete Subscribe Save openrmf-msg-score Delete the score record for the passed in checklist ID
openrmf.score.read Subscribe Read openrmf-msg-score Read API calling for the score when generating an XLSX checklist download listing the score.
openrmf.compliance.cci Request/Reply Compliance openrmf-msg-compliance Send back all CCI to NIST Major Controls listing.
openrmf.compliance.cci.control Request/Reply Compliance, Read openrmf-msg-compliance Send back a full listing of CCI items based on the NIST/RMF control passed in.
openrmf.controls Request/Reply Compliance openrmf-msg-controls Send back the list of all controls.
openrmf.controls.search Request/Reply Controls openrmf-msg-controls Send back a single record for the passed in control (i.e. AC-2).