Skip to content

Commit

Permalink
Add constraint leveraged-authorization-has-authorized-users
Browse files Browse the repository at this point in the history
  • Loading branch information
Rene2mt committed Nov 18, 2024
1 parent 2eb9a94 commit b1995ee
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 2 deletions.
3 changes: 3 additions & 0 deletions features/fedramp_extensions.feature
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ Examples:
| inventory-item-public-PASS.yaml |
| inventory-item-virtual-FAIL.yaml |
| inventory-item-virtual-PASS.yaml |
| leveraged-authorization-has-authorized-users-FAIL.yaml |
| leveraged-authorization-has-authorized-users-PASS.yaml |
| leveraged-authorization-has-component-FAIL.yaml |
| leveraged-authorization-has-component-PASS.yaml |
| leveraged-authorization-has-implementation-point-FAIL.yaml |
Expand Down Expand Up @@ -326,6 +328,7 @@ Examples:
| inventory-item-allows-authenticated-scan |
| inventory-item-public |
| inventory-item-virtual |
| leveraged-authorization-has-authorized-users |
| leveraged-authorization-has-component |
| leveraged-authorization-has-implementation-point |
| leveraged-authorization-has-information-type |
Expand Down
16 changes: 14 additions & 2 deletions src/validations/constraints/content/ssp-all-VALID.xml
Original file line number Diff line number Diff line change
Expand Up @@ -320,11 +320,17 @@
</description>
<prop name="leveraged-authorization-uuid"
value="94d678fb-6d33-4eef-a17a-897bb4809487" />
<prop name="nature-of-agreement" ns="http://fedramp.gov/ns/oscal" value="SLA" />
<prop name="information-type" ns="http://fedramp.gov/ns/oscal" value="C.3.5.8" />
<prop name="nature-of-agreement" ns="http://fedramp.gov/ns/oscal" value="SLA" />
<prop name="information-type" ns="http://fedramp.gov/ns/oscal" value="C.3.5.8" />
<!-- <prop name="inherited-uuid" value="11111111-0000-4000-9001-000000000001" /> -->
<prop name="implementation-point" value="external"/>
<status state="operational"/>
<responsible-role role-id="system-admin">
<party-uuid>6b286b5d-8f07-4fa7-8847-1dd0d88f73fb</party-uuid>
<remarks>
<p>Using responsible-role to represent the CSPs "authorized users" who have access the leveraged authorization service.</p>
</remarks>
</responsible-role>
</component>

<component uuid="58350560-dbf7-4f43-9d86-bd0e15555e50" type="system">
Expand All @@ -337,6 +343,12 @@
<prop name="information-type" ns="http://fedramp.gov/ns/oscal" value="C.3.5.4" />
<prop name="implementation-point" value="external"/>
<status state="operational"/>
<responsible-role role-id="asset-administrator">
<party-uuid>6b286b5d-8f07-4fa7-8847-1dd0d88f73fb</party-uuid>
<remarks>
<p>Using responsible-role to represent the CSPs "authorized users" who have access the leveraged authorization service.</p>
</remarks>
</responsible-role>
</component>

<component uuid="55555555-0000-4000-9000-000000000005" type="this-system">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<system-security-plan xmlns="http://csrc.nist.gov/ns/oscal/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://csrc.nist.gov/ns/oscal/1.0 https://github.com/usnistgov/OSCAL/releases/download/v1.1.2/oscal_ssp_schema.xsd"
uuid="12345678-1234-4321-8765-123456789012">

<system-implementation>
<leveraged-authorization uuid="94d678fb-6d33-4eef-a17a-897bb4809487" >
<title>Name of Underlying System</title>
<!-- FedRAMP Package ID -->
<prop name="leveraged-system-identifier"
ns="https://fedramp.gov/ns/oscal"
value="F9999999999" />
<prop ns="https://fedramp.gov/ns/oscal" name="authorization-type"
value="fedramp-agency"/>
<prop ns="https://fedramp.gov/ns/oscal" name="impact-level" value="moderate"/>
<link href="//path/to/leveraged_system_legacy_crm.xslt" />
<link href="//path/to/leveraged_system_responsibility_and_inheritance.xml" />
<party-uuid>11111111-0000-4000-9000-000000000003</party-uuid>
<date-authorized>2019-01-01</date-authorized>
<remarks>
<p>Sample leveraged authorization (e.g., underlying IaaS).</p>
</remarks>
</leveraged-authorization>

<!-- Leveraged authorization has associcated service component BUT missing "authorized users"-->
<component uuid="7622fb94-ac33-498a-a955-fb3501f02d83" type="system">
<title>Name of Leveraged System</title>
<description>
<p>Briefly describe leveraged system.</p>
</description>
<prop name="leveraged-authorization-uuid" value="94d678fb-6d33-4eef-a17a-897bb4809487" />
<prop name="nature-of-agreement" ns="http://fedramp.gov/ns/oscal" value="eula" />
<prop name="implementation-point" value="external"/>
<status state="operational"/>
<!-- missing responsible-role / role-id to indidate "authorized users" -->
</component>

</system-implementation>

</system-security-plan>
5 changes: 5 additions & 0 deletions src/validations/constraints/fedramp-external-constraints.xml
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,11 @@
<prop namespace="https://docs.oasis-open.org/sarif/sarif/v2.1.0" name="help-url" value="https://automate.fedramp.gov/documentation/ssp/4-ssp-template-to-oscal-mapping/#leveraged-fedramp-authorized-services"/>
<message>Each leveraged authorization system component MUST have exactly one implementation point property. The leveraged authorization with uuid '{ $leveraged-authorization-uuid }' has a "system" component with { count(../component[@type='system'][prop[@name='leveraged-authorization-uuid' and @value=$leveraged-authorization-uuid]]/prop[@name='implementation-point' and @value='external']) } defined "implementation-point" props.</message>
</expect>
<expect id="leveraged-authorization-has-authorized-users" target="." test="count(../component[@type='system'][prop[@name='leveraged-authorization-uuid' and @value=$leveraged-authorization-uuid]]/responsible-role/@role-id) gte 1" level="WARNING">
<formal-name>Leveraged Authorization Has System Component</formal-name>
<prop namespace="https://docs.oasis-open.org/sarif/sarif/v2.1.0" name="help-url" value="https://automate.fedramp.gov/documentation/ssp/4-ssp-template-to-oscal-mapping/#leveraged-fedramp-authorized-services"/>
<message>Each leveraged authorization system component SHOULD have at least one role for authorized users. The leveraged authorization with uuid '{ $leveraged-authorization-uuid }' has a "system" component with { count(../component[@type='system'][prop[@name='leveraged-authorization-uuid' and @value=$leveraged-authorization-uuid]]/responsible-role/@role-id) } roles specified.</message>
</expect>
</constraints>
</context>
<context>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
test-case:
name: Negative Test for leveraged-authorization-has-authorized-users
description: >-
This test case validates the behavior of constraint leveraged-authorization-has-authorized-users
content: ../content/ssp-leveraged-authorization-has-authorized-users-INVALID.xml
expectations:
- constraint-id: leveraged-authorization-has-authorized-users
result: fail
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
test-case:
name: Positive Test for leveraged-authorization-has-authorized-users
description: >-
This test case validates the behavior of constraint
leveraged-authorization-has-authorized-users
content: ../content/ssp-all-VALID.xml
expectations:
- constraint-id: leveraged-authorization-has-authorized-users
result: pass

0 comments on commit b1995ee

Please sign in to comment.