-
Notifications
You must be signed in to change notification settings - Fork 95
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
Connection Security Allowed Values #961
Comments
I looked around old docs and the extensions when coding the other issue, where did these values come from outside of OSCAL, @brian-ruf? |
Also SFTP protocol happens inside of SSH tunnels so maybe it is nice to have but isn't it redundant if we are talking about connection security and not the application layer protocol? |
These are new and was a quick list based on light research. It likely does need vetting and modification. |
Moving the draft list from the original issue to this comment as it is only an early, suggested draft and needs to be reviewed/shaped/vetted. Allow Others: YES Allowed values:
|
Outside GitHub one concern raised was whether we should allow values where FedRAMP reviewers would not accept. The concern was that we don't want users believing any of the defined allowed values are acceptable to FedRAMP. We need to balance this against the idea that when an SSP is delivered to an assessor, AO, or the FedRAMP PMO it should reflect the current state of the system - even if some aspects are not normally acceptable. In other words, if we eliminate choices that FedRAMP normally finds unacceptable, we block the ability to document that unacceptable choice if it is in-fact the current state of the system. Further, there are instances - especially with LI-SaaS - where an AO is willing to accept a less secure connection because the information being passed isn't sensitive or because the external system that only supports insecure connection types is the only source of required information. One way to balance these competing concerns is to have a larger list of allowed values, but also a constraint that raises a warning if the selected value is not one of the choices commonly acceptable to FedRAMP Reviewers and AOs. We could also annotate the text for certain allowed values as "preferred", "depreciated" or "insecure". |
I actually completely agree with this perspective. Maybe we should warn based on learned experience, but we have to allow those values as the end of the day. I didn't want to nitpick, if anything I was unclear why SFTP was a separation connection security ... do we say protocol? ... from SSH. I understand that is probably a common way of phrasing it and FedRAMP may receive packages with that notion, and VPN is general, but I assume the reflects where everyone is today, secure or not. I am happy with the above requirements to move forward as-is given your comments and the discussion. 🫡 |
@aj-stein-gsa I just removed the SFTP choices. I had done some quick searches and it was in a list that also included SSH. I hadn't considered that SFTP tunnels through SSH by design. The only portion of this list where I am aware of clear FedRAMP guidance is the depreciation of SSH and TLS 1.1 with a requirement for TLS 1.2 or 1.3. Even that is old information and I suspect 1.2 is at least depreciated if not outright unacceptable. This is another area where we should really ask the review team:
|
A couple of observations, if I may:
|
Correct - having In any case, we can and should warn if the provided value is not recognized in the allowed-values list. The biggest reason for having allowed-values here is to introduce consistency in how the data is presented for the choices we do know about. We don't want to deal with |
Well, the problem is Since I cannot create a failing test, validations fail, and I won't be able to merge the branch into GitHub. To solve the problem, here's what I did:
Let me know if such setup is acceptable. |
Are you saying it's impossible to have a list of acceptable values with That sounds like a problem with the pipeline. I don't think this is acceptable in that other tools interpreting the metaschema are being incorrectly instructed not to allow other values. It sounds like the issue is that the CI/CD pipeline needs to be adjusted to allow no failure test when |
It's been like that for quite a while. I've already faced that dilemma a couple of months ago. |
In this sense, you are saying "I accept anything, but I also want an error for it using the same What is the specific use-case we want here? We can do it redundantly with an |
I'm not saying "I accept anything, but also want an error". The opposite. I am saying I want a suggested set of allowed values, and want to accept other values that we may not have reasonably predicted. I expect OSCAL tools to use the allowed-values construct to offer these pre-defined choices to the user. If the user selects one of the suggested choices, I expect the tool to use our pre-defined value associated with that choice. But I also need to allow that tool to handle other choices that we failed to reasonably predict. The "allow-others" flag is how the tool knows whether it should allow the user to provide other choices or strictly limit the user to the defined choices. I feel like I am being told that we cannot define allowed values unless they are used to produce a warning/error. And that If true, why is the allow-others choice available at all? I am fine with a warning if none of the allowed values are present, but I wasn't asking for that. I am not comfortable with explicitly defining/stating in our metaschema that no other values are allowed when that is not true. |
Was trying to frame the language in a personified way and that was clearly not helpful. I was posing that to say from the Metaschema implementation and saying why it is not coded to handle it that way.
Understood, I am just saying I thought this was actionable in the past from the Metaschema processing and specification was enhanced at one point for
I am fine with defining them. What Dimitri is saying, and I am trying to reiterate (and I did so too abruptly without further explanation) is that testing recommended values through negative testing (putting a wrong value) with |
Gentlemen: If I may, in this particular case, what is the setback of having I mean, I have a corresponding In short, can't we use |
@DimitriZhurkin as I said above, After further discussion with @aj-stein-gsa, we agree this needs to be implemented with Please remember metaschema is a specification beyond just constraint enforcement. It is also a specification to tools for other aspects of OSCAL processing. This is one of those situations where allowed-values is for other aspects of processing and not for constraint enforcement. In this case, it is only to increase consistency of values for the choices we can reasonably predict. But the specification needs to signal to tools that other values may be used when there is a choice we didn't reasonably predict. There is ample precedence for this in the core OSCAL specification. Thank you for the questions, and for bringing this into alignment with what was defined in the task. |
When I set
|
@aj-stein-gsa can you help with this? See Dimitri's comment above? |
There are two ways we can handle it: we can exclude it from the feature list or code-in a bypass, I will look at the test harness code. |
@DimitriZhurkin just to make clear our discussion during standup, can you work on this approach for the negative test. Thanks to @wandmagic, sorry I spaced on this. # driver for the connection-security-or-whatever unit test
test-case:
name: Test Invalid Connection Security Use
description: This test case is to explicitly document that this allowed-values constraint cannot have a negative fail test because it allows other values.
expectations: # check the constraint result
- constraint-id: connection-security-or-whatever
fail_count:
type: "exact"
value: 0 |
Unfortunately, that did not work. After quite a bit of experimentation, this did work:
|
Apologies I riffed off the latest one I found from looking code in |
Initially, I did without
|
i'll take a look on monday we may need to adjust the test running script |
Constraint Task
In order to increase consistency in the responses to the "connection-security" property in
components
, we need an allowed values list that allows additional entries in case there are additional choices beyond those we considered.Intended Outcome
Syntax Type
This is required core OSCAL syntax.
Allowed Values
Allowed values are being discussed in the comments below starting at this comment.
Metapath(s) to Content
Purpose of the OSCAL Content
To provide additional information about the security of the connection as part of risk management trade-off decisions.
Dependencies
None
Acceptance Criteria
oscal-cli metaschema metapath eval -e "expression"
.Other information
None.
The text was updated successfully, but these errors were encountered: