diff --git a/features/fedramp_extensions.feature b/features/fedramp_extensions.feature
index 29eefbf85..2866750ac 100644
--- a/features/fedramp_extensions.feature
+++ b/features/fedramp_extensions.feature
@@ -36,6 +36,7 @@ Examples:
| cia-impact-has-selected |
| cloud-service-model |
| component-has-authentication-method |
+ | component-has-non-provider-responsible-role |
| component-has-provider-responsible-role |
| component-type |
| control-implementation-status |
@@ -114,6 +115,7 @@ Examples:
| marking |
| missing-response-components |
| network-component-has-implementation-point |
+ | non-provider-responsible-role-references-user |
| party-has-name |
| privilege-level |
| prop-response-point-has-cardinality-one |
@@ -180,6 +182,8 @@ Examples:
| cloud-service-model-PASS.yaml |
| component-has-authentication-method-FAIL.yaml |
| component-has-authentication-method-PASS.yaml |
+ | component-has-non-provider-responsible-role-FAIL.yaml |
+ | component-has-non-provider-responsible-role-PASS.yaml |
| component-responsible-role-references-party-FAIL.yaml |
| component-responsible-role-references-party-PASS.yaml |
| component-type-FAIL.yaml |
@@ -336,6 +340,8 @@ Examples:
| missing-response-components-PASS.yaml |
| network-component-has-implementation-point-FAIL.yaml |
| network-component-has-implementation-point-PASS.yaml |
+ | non-provider-responsible-role-references-user-FAIL.yaml |
+ | non-provider-responsible-role-references-user-PASS.yaml |
| party-has-name-FAIL.yaml |
| party-has-name-PASS.yaml |
| privilege-level-FAIL.yaml |
diff --git a/src/validations/constraints/content/ssp-all-VALID.xml b/src/validations/constraints/content/ssp-all-VALID.xml
index adb0d6c42..3980e921c 100644
--- a/src/validations/constraints/content/ssp-all-VALID.xml
+++ b/src/validations/constraints/content/ssp-all-VALID.xml
@@ -337,10 +337,16 @@
Some description of the external authentication method.
-
+
11111111-0000-4000-9000-000000000001
+
+ 11111111-0000-4000-9000-000000000001
+
+
+
+
@@ -386,6 +392,9 @@
11111111-0000-4000-9000-000000000001
+
+ 11111111-0000-4000-9000-000000000001
+
diff --git a/src/validations/constraints/content/ssp-component-has-non-provider-responsible-role-INVALID.xml b/src/validations/constraints/content/ssp-component-has-non-provider-responsible-role-INVALID.xml
new file mode 100644
index 000000000..ffed46f4a
--- /dev/null
+++ b/src/validations/constraints/content/ssp-component-has-non-provider-responsible-role-INVALID.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ 11111111-0000-4000-9000-000000000001
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-non-provider-responsible-role-references-user-INVALID.xml b/src/validations/constraints/content/ssp-non-provider-responsible-role-references-user-INVALID.xml
new file mode 100644
index 000000000..3416c1cd0
--- /dev/null
+++ b/src/validations/constraints/content/ssp-non-provider-responsible-role-references-user-INVALID.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/fedramp-external-constraints.xml b/src/validations/constraints/fedramp-external-constraints.xml
index 956ecbcb7..bd9f75b82 100644
--- a/src/validations/constraints/fedramp-external-constraints.xml
+++ b/src/validations/constraints/fedramp-external-constraints.xml
@@ -67,11 +67,19 @@
else if (system-characteristics/security-sensitivity-level = 'fips-199-moderate')
then ('fips-199-moderate', 'fips-199-high')
else ('fips-199-low', 'fips-199-moderate', 'fips-199-high')"/>
+
+
+
Component Has Authentication Method
A FedRAMP SSP MUST include at least one authentication method for each leveraged system.
+
+ Component Has Non-Provider Responsible Role
+
+ A FedRAMP SSP MUST have each component describing leveraged systems, interconnections, or authorized services identify at least one responsible role other than "provider".
+
Component Has Provider Responsible Role
@@ -109,7 +117,12 @@
Leveraged Authorization Has Valid Impact Level
A FedRAMP SSP MUST define the appropriate FIPS-199 impact level (low, moderate, or high) for each leveraged authorization.
-
+
+
+ Non-Provider Responsible Role References User
+
+ A FedRAMP SSP MUST have each component describing leveraged systems, interconnections, or authorized services reference at least one user with an authorized privilege and function performed via the "privilege-uuid" property.
+
@@ -510,17 +523,17 @@
-
+
-
- System Implementation Has Inventory Items
-
- A FedRAMP SSP system implementation section MUST have at least two inventory items.
-
+
+ System Implementation Has Inventory Items
+
+ A FedRAMP SSP system implementation section MUST have at least two inventory items.
+
Leveraged Authorization Has Authorization Type
@@ -545,7 +558,7 @@
A FedRAMP SSP's inventory item MUST have an Asset ID that is unique across all inventory items in the system and its components.
-
+
diff --git a/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-FAIL.yaml b/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-FAIL.yaml
new file mode 100644
index 000000000..8df5c3feb
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for component-has-non-provider-responsible-role
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-non-provider-responsible-role
+ content: ../content/ssp-component-has-non-provider-responsible-role-INVALID.xml
+ expectations:
+ - constraint-id: component-has-non-provider-responsible-role
+ result: fail
diff --git a/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-PASS.yaml b/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-PASS.yaml
new file mode 100644
index 000000000..1ef1f78c2
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-non-provider-responsible-role-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for component-has-non-provider-responsible-role
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-non-provider-responsible-role
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: component-has-non-provider-responsible-role
+ result: pass
diff --git a/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-FAIL.yaml b/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-FAIL.yaml
new file mode 100644
index 000000000..30cc42fe1
--- /dev/null
+++ b/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for non-provider-responsible-role-references-user
+ description: >-
+ This test case validates the behavior of constraint
+ non-provider-responsible-role-references-user
+ content: ../content/ssp-non-provider-responsible-role-references-user-INVALID.xml
+ expectations:
+ - constraint-id: non-provider-responsible-role-references-user
+ result: fail
diff --git a/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-PASS.yaml b/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-PASS.yaml
new file mode 100644
index 000000000..688c8b4d5
--- /dev/null
+++ b/src/validations/constraints/unit-tests/non-provider-responsible-role-references-user-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for non-provider-responsible-role-references-user
+ description: >-
+ This test case validates the behavior of constraint
+ non-provider-responsible-role-references-user
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: non-provider-responsible-role-references-user
+ result: pass