Open brian-ruf opened 3 weeks ago
There are five scenarios that require tracking as part of External Systems and Services Not Having FedRAMP Authorization:
A service from an underlying leveraged system, where the underlying system is FedRAMP-authorized; however, the service is not included in the underlying system's authorization. (The service is not included in the underlying's system's FedRAMP Marketplace details.)
//component[@type='service']/prop[@name='offered-by-system-uuid'][@ns='http://fedramp.gov/ns/oscal']/@value
FedRAMP-Authorized System connecting to an external system that may or may not be FedRAMP-authorized.
//component[@type='service']/prop[@name='connected-to-system-uuid'][@ns='http://fedramp.gov/ns/oscal']/@value
//component[@type='service']/prop[@name='connected-to-system-uuid'][@ns='http://fedramp.gov/ns/oscal']/@value
FedRAMP-Authorized System using an API or service from an external system:
//component[@type='service']/prop[@name='offered-by-system-uuid'][@ns='http://fedramp.gov/ns/oscal']/@value
FedRAMP-Authorized System offering an API or service for external systems:
FedRAMP-Authorized System using an CLI to manage remote or underlying system:
//component[@type='service']/prop[@name='offered-by-system-uuid'][@ns='http://fedramp.gov/ns/oscal']/@value
TARGET:
//system-implementation/component[((@type=('system', 'service')) and not(./prop[@name='leveraged-authorization-uuid']) and ./prop[@name='implementation-point' and @value='external']) or (@type='interconnection') or (@type='software' and ./prop[@name='asset-type' and @value='cli'])]
Data | Location | UnAuth Service from LA |
Intercon | External Service |
External API |
Offered API |
Management CLI |
|
---|---|---|---|---|---|---|---|---|
# | n/a / Sequential Numbering | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
System/Service/API/CLI Name [1] | ./title (required field) |
Y | Y | Y | Y | Y | Y | |
Service Processor Name [1] | ./responsible-role[@name='provider']/party-uuid |
Y | Y | Y | Y | |||
Connection Details (Direction) [1 or 2] | ./prop[@name='direction']/@value |
Y | Y | Y | ||||
Connection Details (Local IPv4 Address) [0+] | ./prop[@name='ipv4-address' and @class='local' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | |||||
Connection Details (Local IPv6 Address) [0+] | ./prop[@name='ipv6-address' and @class='local' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | |||||
Connection Details (Local Port) [0+] | ./protocol[@name='local']/port-range |
Y | Y | |||||
Connection Details (Remote IPv4 Address) [0+] | ./prop[@name='ipv4-address' and @class='remote' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | ? | |||
Connection Details (Remote IP6 Address) [0+] | ./prop[@name='ipv6-address' and @class='remote' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | ? | |||
Connection Details (Remote Port) [0+] | ./protocol[@name='remote']/port-range |
Y | Y | Y | ? | |||
Connection Details (Non-IP Based) [0 or 1] | ./prop[@name='non-ip-based-connection' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | ||||||
Connection Details (Security) [1] | ./prop[@name='' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | Y | Y | ||
Nature of Agreement [1] | ./prop[@name='nature-of-agreement' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | ||||
Still Supported? [1] | ./prop[@name='still-supported' and @ns='http://fedramp.gov/ns/oscal'] |
Y | Y | Y | Y | |||
Data Types [1+] | ./prop[@name='information-type' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | Y | Y | Y | |
Data Categorization (Confidentiality) [1+] | //system-characteristics/system-information/information-type[./categorization[@system='https://doi.org/10.6028/NIST.SP.800-60v2r1']/information-type-id/text()=./prop[@name='information-type' and @ns='http://fedramp.gov/ns/oscal']/@value]/confidentiality-impact/selected |
Y | Y | Y | Y | Y | Y | |
Data Categorization (Integrity) [1+] | //system-characteristics/system-information/information-type[./categorization[@system='https://doi.org/10.6028/NIST.SP.800-60v2r1']/information-type-id/text()=./prop[@name='information-type' and @ns='http://fedramp.gov/ns/oscal']/@value]/integrity-impact/selected |
Y | Y | Y | Y | Y | Y | |
Data Categorization (Availability) [1+] | //system-characteristics/system-information/information-type[./categorization[@system='https://doi.org/10.6028/NIST.SP.800-60v2r1']/information-type-id/text()=./prop[@name='information-type' and @ns='http://fedramp.gov/ns/oscal']/@value]/availability-impact/selected |
Y | Y | Y | Y | Y | Y | |
Authorized Users [0+] | ./responsible-role[@role-id='authorized-users']/party-uuid |
Y | Y | Y | Y | Y | ||
User Authentication Method [0 or 1] | ./prop[@name='user-authentication' and @ns='http://fedramp.gov/ns/oscal'] |
Y | Y | Y | Y | Y | ||
Other Compliance Programs [0+] | ./prop[@name='compliance-program' and @ns='http://fedramp.gov/ns/oscal']/@value |
Y | Y | Y | Y | Y | ||
Description [1] OSCAL | ./description (Required) |
Y | Y | Y | Y | Y | Y | |
Hosting Environment [1] | ./prop[@name='hosting-environment' and @ns='http://fedramp.gov/ns/oscal'] |
Y | Y | Y | Y | |||
Risk [0+] | ./prop[@name='risk' and @ns='http://fedramp.gov/ns/oscal']/remarks |
Y | Y | Y | Y | Y | Y | |
Impact [0+] | ./prop[@name='impact' and @ns='http://fedramp.gov/ns/oscal']/remarks |
Y | Y | Y | Y | Y | Y | |
Mitigation [0+] | ./prop[@name='mitigation' and @ns='http://fedramp.gov/ns/oscal']/remarks |
Y | Y | Y | Y | Y | Y |
Every role defined in //component/responsible-role/@role-id exists in //metadata/role/@id index
Every party defined in //component/responsible-role/@role-id/party-uuid references a valid party in //metadata/party/@uuid index
The following scenarios require a "direction" property/extension:
If ./prop[@name='direction' and @ns='http://fedramp.gov/ns/oscal' and @value='incoming']
count(./prop[@name=('ipv4-address', 'ipv6-address') and @class='local' and @ns='http://fedramp.gov/ns/oscal']/@value) >=1
count(./protocol[@name='local']/port-range/@start)
If ./prop[@name='direction' and @ns='http://fedramp.gov/ns/oscal' and @value='outgoing']
count(./prop[@name=('ipv4-address', 'ipv6-address') and @class='remote' and @ns='http://fedramp.gov/ns/oscal']/@value) >=1
count(./protocol[@name='remote']/port-range/@start)
count(./responsible-role[@name='provider']/party-uuid) = 1
: Exactly one provider party
./responsible-role[@name='provider']/party-uuid
exists in //part
index
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