diff --git a/features/fedramp_extensions.feature b/features/fedramp_extensions.feature
index ecf2d4156..955fce586 100644
--- a/features/fedramp_extensions.feature
+++ b/features/fedramp_extensions.feature
@@ -167,6 +167,20 @@ Examples:
| security-level-PASS.yaml |
| security-sensitivity-level-matches-security-impact-level-FAIL.yaml |
| security-sensitivity-level-matches-security-impact-level-PASS.yaml |
+ | user-has-authorized-privilege-FAIL.yaml |
+ | user-has-authorized-privilege-PASS.yaml |
+ | user-has-privilege-level-FAIL.yaml |
+ | user-has-privilege-level-PASS.yaml |
+ | user-has-role-id-FAIL.yaml |
+ | user-has-role-id-PASS.yaml |
+ | user-has-sensitivity-level-FAIL.yaml |
+ | user-has-sensitivity-level-PASS.yaml |
+ | user-has-user-type-FAIL.yaml |
+ | user-has-user-type-PASS.yaml |
+ | user-privilege-level-FAIL.yaml |
+ | user-privilege-level-PASS.yaml |
+ | user-sensitivity-level-FAIL.yaml |
+ | user-sensitivity-level-PASS.yaml |
| user-type-FAIL.yaml |
| user-type-PASS.yaml |
#END_DYNAMIC_TEST_CASES
@@ -260,5 +274,12 @@ Examples:
| scan-type |
| security-level |
| security-sensitivity-level-matches-security-impact-level |
+ | user-has-authorized-privilege |
+ | user-has-privilege-level |
+ | user-has-role-id |
+ | user-has-sensitivity-level |
+ | user-has-user-type |
+ | user-privilege-level |
+ | user-sensitivity-level |
| user-type |
#END_DYNAMIC_CONSTRAINT_IDS
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-all-VALID.xml b/src/validations/constraints/content/ssp-all-VALID.xml
index 641840263..5e0a5b33e 100644
--- a/src/validations/constraints/content/ssp-all-VALID.xml
+++ b/src/validations/constraints/content/ssp-all-VALID.xml
@@ -203,8 +203,15 @@
System Administrator
-
+
+
system-admin
+
+ Admin
+ admin user
+ administration
+
+
diff --git a/src/validations/constraints/content/ssp-privilege-level-INVALID.xml b/src/validations/constraints/content/ssp-privilege-level-INVALID.xml
index 8413ce1bc..dcd963ded 100644
--- a/src/validations/constraints/content/ssp-privilege-level-INVALID.xml
+++ b/src/validations/constraints/content/ssp-privilege-level-INVALID.xml
@@ -5,7 +5,7 @@
uuid="12345678-1234-4321-8765-123456789012">
-
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-user-INVALID.xml b/src/validations/constraints/content/ssp-user-INVALID.xml
new file mode 100644
index 000000000..3e73a1fb1
--- /dev/null
+++ b/src/validations/constraints/content/ssp-user-INVALID.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-user-privilege-level-INVALID.xml b/src/validations/constraints/content/ssp-user-privilege-level-INVALID.xml
new file mode 100644
index 000000000..695e56111
--- /dev/null
+++ b/src/validations/constraints/content/ssp-user-privilege-level-INVALID.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/validations/constraints/content/ssp-user-sensitivity-level-INVALID.xml b/src/validations/constraints/content/ssp-user-sensitivity-level-INVALID.xml
new file mode 100644
index 000000000..a1e2b8801
--- /dev/null
+++ b/src/validations/constraints/content/ssp-user-sensitivity-level-INVALID.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/validations/constraints/fedramp-external-allowed-values.xml b/src/validations/constraints/fedramp-external-allowed-values.xml
index 4b5ae3b06..b79d8aa7d 100644
--- a/src/validations/constraints/fedramp-external-allowed-values.xml
+++ b/src/validations/constraints/fedramp-external-allowed-values.xml
@@ -1,5 +1,5 @@
-
+
@@ -155,6 +155,7 @@
User Type
The type of user.
+
Internal
External
Privileged
@@ -164,9 +165,10 @@
The system used for categorizing information types.
NIST SP 800-60 Volume 2 Revision 1
-
+
Privilege Level
The privilege level of the user.
+
Read
Read-Write
Write
@@ -377,6 +379,26 @@
Industry Sector Income Stabilization
+
+
+ Privilege Level
+ The privilege level of the user.
+
+ Read
+ Read-Write
+ Write
+ No Access
+
+
+ User Sensitvity Level
+ Sensitivity level of the user.
+
+ High Risk
+ Severe
+ Moderate
+ Limited
+ Not Applicable
+
diff --git a/src/validations/constraints/fedramp-external-constraints.xml b/src/validations/constraints/fedramp-external-constraints.xml
index 6c024946b..58c1985c1 100644
--- a/src/validations/constraints/fedramp-external-constraints.xml
+++ b/src/validations/constraints/fedramp-external-constraints.xml
@@ -1,5 +1,5 @@
-
+
@@ -42,6 +42,32 @@
+
+
+
+
+
+
+ A FedRAMP document MUST define a user with a type.
+
+
+
+ A FedRAMP document MUST define a user with a privilege for their use of the system.
+
+
+
+ A FedRAMP document MUST define a user with a sensitivity level of their use of the system.
+
+
+
+ A FedRAMP document MUST define a user with at least one role by a role identifier.
+
+
+
+ A FedRAMP document MUST define a user with at least one authorized privilege by a privilege identifier.
+
+
+
diff --git a/src/validations/constraints/unit-tests/user-has-authorized-privilege-FAIL.yaml b/src/validations/constraints/unit-tests/user-has-authorized-privilege-FAIL.yaml
new file mode 100644
index 000000000..6e6e6c3f2
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-authorized-privilege-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for user-has-authorized-privilege
+ description: >-
+ This test case validates the behavior of constraint
+ user-has-authorized-privilege
+ content: ../content/ssp-user-INVALID.xml
+ expectations:
+ - constraint-id: user-has-authorized-privilege
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-has-authorized-privilege-PASS.yaml b/src/validations/constraints/unit-tests/user-has-authorized-privilege-PASS.yaml
new file mode 100644
index 000000000..3964c8422
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-authorized-privilege-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for user-has-authorized-privilege
+ description: >-
+ This test case validates the behavior of constraint
+ user-has-authorized-privilege
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-has-authorized-privilege
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-has-privilege-level-FAIL.yaml b/src/validations/constraints/unit-tests/user-has-privilege-level-FAIL.yaml
new file mode 100644
index 000000000..89e5cebb3
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-privilege-level-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for user-has-privilege-level
+ description: This test case validates the behavior of constraint user-has-privilege-level
+ content: ../content/ssp-user-INVALID.xml
+ expectations:
+ - constraint-id: user-has-privilege-level
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-has-privilege-level-PASS.yaml b/src/validations/constraints/unit-tests/user-has-privilege-level-PASS.yaml
new file mode 100644
index 000000000..cc9f3218d
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-privilege-level-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for user-has-privilege-level
+ description: This test case validates the behavior of constraint user-has-privilege-level
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-has-privilege-level
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-has-role-id-FAIL.yaml b/src/validations/constraints/unit-tests/user-has-role-id-FAIL.yaml
new file mode 100644
index 000000000..051e3f77c
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-role-id-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for user-has-role-id
+ description: This test case validates the behavior of constraint user-has-role-id
+ content: ../content/ssp-user-INVALID.xml
+ expectations:
+ - constraint-id: user-has-role-id
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-has-role-id-PASS.yaml b/src/validations/constraints/unit-tests/user-has-role-id-PASS.yaml
new file mode 100644
index 000000000..917dea426
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-role-id-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for user-has-role-id
+ description: This test case validates the behavior of constraint user-has-role-id
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-has-role-id
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-has-sensitivity-level-FAIL.yaml b/src/validations/constraints/unit-tests/user-has-sensitivity-level-FAIL.yaml
new file mode 100644
index 000000000..1fcd4e448
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-sensitivity-level-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for user-has-sensitivity-level
+ description: >-
+ This test case validates the behavior of constraint
+ user-has-sensitivity-level
+ content: ../content/ssp-user-INVALID.xml
+ expectations:
+ - constraint-id: user-has-sensitivity-level
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-has-sensitivity-level-PASS.yaml b/src/validations/constraints/unit-tests/user-has-sensitivity-level-PASS.yaml
new file mode 100644
index 000000000..cc8adf6ee
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-sensitivity-level-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for user-has-sensitivity-level
+ description: >-
+ This test case validates the behavior of constraint
+ user-has-sensitivity-level
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-has-sensitivity-level
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-has-user-type-FAIL.yaml b/src/validations/constraints/unit-tests/user-has-user-type-FAIL.yaml
new file mode 100644
index 000000000..c0399549f
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-user-type-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for user-has-user-type
+ description: This test case validates the behavior of constraint user-has-user-type
+ content: ../content/ssp-user-INVALID.xml
+ expectations:
+ - constraint-id: user-has-user-type
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-has-user-type-PASS.yaml b/src/validations/constraints/unit-tests/user-has-user-type-PASS.yaml
new file mode 100644
index 000000000..c13224ed4
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-has-user-type-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for user-has-user-type
+ description: This test case validates the behavior of constraint user-has-user-type
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-has-user-type
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-privilege-level-FAIL.yaml b/src/validations/constraints/unit-tests/user-privilege-level-FAIL.yaml
new file mode 100644
index 000000000..bb542e47a
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-privilege-level-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for user-privilege-level
+ description: This test case validates the behavior of constraint user-privilege-level
+ content: ../content/ssp-user-privilege-level-INVALID.xml
+ expectations:
+ - constraint-id: user-privilege-level
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-privilege-level-PASS.yaml b/src/validations/constraints/unit-tests/user-privilege-level-PASS.yaml
new file mode 100644
index 000000000..db272e857
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-privilege-level-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for user-privilege-level
+ description: This test case validates the behavior of constraint user-privilege-level
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-privilege-level
+ result: pass
diff --git a/src/validations/constraints/unit-tests/user-sensitivity-level-FAIL.yaml b/src/validations/constraints/unit-tests/user-sensitivity-level-FAIL.yaml
new file mode 100644
index 000000000..c3e7f295a
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-sensitivity-level-FAIL.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Negative Test for user-sensitivity-level
+ description: This test case validates the behavior of constraint user-sensitivity-level
+ content: ../content/ssp-user-sensitivity-level-INVALID.xml
+ expectations:
+ - constraint-id: user-sensitivity-level
+ result: fail
diff --git a/src/validations/constraints/unit-tests/user-sensitivity-level-PASS.yaml b/src/validations/constraints/unit-tests/user-sensitivity-level-PASS.yaml
new file mode 100644
index 000000000..582d4cd37
--- /dev/null
+++ b/src/validations/constraints/unit-tests/user-sensitivity-level-PASS.yaml
@@ -0,0 +1,7 @@
+test-case:
+ name: Positive Test for user-sensitivity-level
+ description: This test case validates the behavior of constraint user-sensitivity-level
+ content: ../content/ssp-all-VALID.xml
+ expectations:
+ - constraint-id: user-sensitivity-level
+ result: pass