-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SSP Completeness Checks: 9 Services, Ports, and Protocols #806
Comments
Per @aj-stein-gsa: Check #881 and #882 for alignment with this issue. |
[I wrote this comment almost two weeks ago, but just found it unsaved in a browser tab.] PPS is addressed strictly using Similarly #882 is specifically about inventory items having an asset-id. This also has no impact to our approach to modeling PPS for FedRAMP SSPs. |
By the time we moved ahead the work was almost done, so I let it go (I realized I had not properly categorized the constraints, but the scope of work was clear and in review before I could recategorize). Apologies. 🤦 So I should have update this issue and had not. |
From the SSP:
|
AnalysisThe term "service" as it is used above is similar, but not equivalent to an OSCAL "service" Component. For example, an IaaS provides a PostgreSQL server database service to a SaaS customer. The SaaS SSP documents the entire database service as an OSCAL "service" component. This OSCAL component lists the PostgreSQL product and version, indicates who administers it, and includes a The SSP ports, protocols and services table is intended to be a summary of that SummaryEvery component that "listens" on one or more ports must have a If this is enforced, the OSCAL ports, protocols and services table becomes a summary of required documentation. |
If we can have components with one direction that is outgoing, does that not mean it is more whatever port is used for ingoing or outgoing communication if not in the ephemeral range? We can have "write-only" outbound services that are not daemonized system services listening on a TCP/UDP/what-have-you-port, correct? |
@aj-stein-gsa Sorry - I stepped away from dinner while I was still working here, but I'm not sure I fully follow your question. The PPS is about the communication happening within the boundary between components or across the boundary. To the best of my understanding of the way IP works, one component has to be "listening" for another component to initiate communication. The initiating component uses a random port to do so, while the "listening" component is on a pre-defined port. It's the pre-defined ports we are interested in capturing, as well as the protocol and IANA-registered service name associated with those ports. I think it's also important to clarify that the direction of information flow is separate from the direction of connection initiation.
Regardless, we are interested in the ports on Component B and the protocols associated with those ports. Even if Component A is only writing. The NIST OSCAL definitions for incoming and outgoing are data focused:
Although this raises a good point that a few of the constrains I defined for Table 7-1 may have inadvertently conflated data flow and connection initiation. I added a comment to #930 suggesting we pause any work involving |
Sure thing.
My question is hypothesizing that Component A is part a system in boundary that communicates only with Component B as a form of interconnection to offload application logs in a secure append-only location. Component A can only send log records to B with outgoing communication over HTTPS (TCP 443 for a client to send data to the consuming service, very much like but not exactly the Splunk HTTP Event Collector or HEC; many log provider services operate this way). So my question given this scenario: do inventory items that compose Component A have to declare HTTPS (TCP 443) even though the listening daemon on HTTPS inventory items that compose Component B? I'll skip the ephemeral port stuff and not complicate it further but this still for A is outgoing only and does not have a service listening so I am curious if and how the protocol declaration for inventory is required. |
Constraints NeededThe following component types MUST have a
The following MAY also have a
Further, any Constraints
NOTE: Documentation to be handled in GSA/automate.fedramp.gov#131 |
This is a great example, and it's considered a Scenario 3 from #808.
Because it listens on 443/SSL, component B would have a If Components A, X, Y, and Z all send their logs to Component B, then Component B would have four "used-by" links:
There is no content required within Component A's information regarding its communication with Component B. The many-to-many relationship that can exist when documenting communication pairs among components is only documented on the "listening" side in OSCAL. |
@aj-stein-gsa / @Rene2mt this is ready to have tasks issued against it |
A lot of this discourse is assuming all interactions are point to point. In the cloud world when egress and ingress rules are written and they control communication flow between "gates" you don't really establish point to point....that is inherent with the endpoint addressing. The provided-by is of course required because a cloud service is providing the "gating" and operating the ports. The Used-by can be more challenging. |
@vmangat you raised some good points. Also, after performing analysis for Appendix Q Cryptographic Modules, it seems we have a few challenges.
Can we schedule some time to better discuss the technologies you have in mind and make sure we fully understand your use case(s)? In the mean time, I am working on a diagram that will attempt to depict the relationship between:
I'll provide a draft here when ready. |
So I better understand you and b |
@brian-ruf yes we are also looking at correlating software/protocols/networkdiagrams/by-component-statements so that the information provided in the SSP correlates well. Yes this is going beyond the word templates as those tables are not really designed for real correlation. @aj-stein-gsa we will request office hours to have a further discussion, we may reserve 2 consequent 30 min sessions to make sure we have enough time. |
@vmangat Thank you for calling out that there is some ambiguity between "software" and "service" components. I think that is a fair observations. While I have some thoughts on that topic, which may be better hashed out in those office hours. For now I'll just offer the way I have been personally thinking about the difference between these two. I believe there is overlap between the two, and it may be best to simply allow them to be largely interchangeable. From the perspective of my own system:
Similarly, if I expose Example 1 above (PostgreSQL on Ubuntu) to downstream customers that don't have insight/control into how I am deploying/managing that PostgreSQL instance, it may be a "software" component for me, but it is a "service" component for them. Again, it may be that these nuances are too subtle and it is best to just treat the two as interchangeable. |
This is a ...
fix - something needs to be different
This relates to ...
User Story
As a consumer of FedRAMP automated completeness checks I want the following OSCAL-based SSP items to be automatically verified for completeness by metaschema constraints:
Goals
SSP Completeness checks are defined, tested and documented
Dependencies
No response
Acceptance Criteria
Other information
No response
TASKS
The text was updated successfully, but these errors were encountered: