|
19 | 19 | <namespace>http://csrc.nist.gov/ns/oscal/1.0</namespace>
|
20 | 20 | <json-base-uri>http://csrc.nist.gov/ns/oscal</json-base-uri>
|
21 | 21 | <remarks>
|
22 |
| - <p>The OSCAL Component Definition Model can be used to describe the implementation of controls in a <code>component</code> or a set of components grouped as a <code>capability</code>. A component can be either a <em>technical component</em>, or a <em>documentary component</em>. A technical component is a component that is implemented in hardware (physical or virtual) or software. A documentary component is a component implemented in a document, such as a process, procedure, or policy.</p> |
23 |
| - <p>The root of the OSCAL Implementation Component format is <code>component-definition</code>. |
24 |
| - </p> |
25 |
| - <p>NOTE: This documentation is a work in progress. As a result, documentation for many of the information elements is missing or incomplete.</p> |
| 22 | + <p>The OSCAL Component Definition Model can be used to describe the implementation of controls in a <code>component</code> or a set of components grouped as a <code>capability</code>. A component can be either a <em>technical component</em>, or a <em>documentary component</em>.</p> |
| 23 | + <p>A technical component is a component that is implemented in hardware (physical or virtual) or software. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their hardware and software.</p> |
| 24 | + <p>A documentary component is a component implemented for a documented process, procedure, or policy. Suppliers may document components in an OSCAL component definition that describes the implementation of controls in their process, procedure, or policy.</p> |
| 25 | + <p>The information provided by a technical or documentary component can be used by component consumers to provide starting narratives for documenting control implementations in an OSCAL SSP.</p> |
| 26 | + <p>The root of the OSCAL Implementation Layer Component Definition model is <code>component-definition</code>.</p> |
26 | 27 | </remarks>
|
27 | 28 |
|
28 | 29 | <import href="oscal_implementation-common_metaschema.xml"/>
|
|
34 | 35 | <define-flag name="uuid" as-type="uuid" required="yes">
|
35 | 36 | <formal-name>Component Definition Universally Unique Identifier</formal-name>
|
36 | 37 | <!-- Identifier Declaration -->
|
37 |
| - <description>A <a href="/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this component definition elsewhere in <a href="/concepts/identifier-use/#component-definition-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>component definition</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</description> |
| 38 | + <description>Provides a globally unique means to identify a given component definition instance.</description> |
| 39 | + <prop name="value-type" value="identifier"/> |
| 40 | + <prop name="identifier-type" value="machine-oriented"/> |
| 41 | + <prop name="identifier-uniqueness" value="global"/> |
| 42 | + <prop name="identifier-scope" value="cross-instance"/> |
| 43 | + <prop name="identifier-persistence" value="change-on-write"/> |
38 | 44 | </define-flag>
|
39 | 45 | <model>
|
40 | 46 | <assembly ref="metadata" min-occurs="1"/>
|
|
72 | 78 | <define-flag name="href" as-type="uri-reference" required="yes">
|
73 | 79 | <formal-name>Hyperlink Reference</formal-name>
|
74 | 80 | <description>A link to a resource that defines a set of components and/or capabilities to import into this collection.</description>
|
| 81 | + <remarks> |
| 82 | + <p>This value may be one of:</p> |
| 83 | + <ol> |
| 84 | + <li>an <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#absolute-uri">absolute URI</a> that points to a network resolvable resource,</li> |
| 85 | + <li>a <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#relative-reference">relative reference</a> pointing to a network resolvable resource whose base URI is the URI of the containing document, or</li> |
| 86 | + <li>a bare URI fragment (i.e., `#uuid`) pointing to a <code>back-matter</code> resource in this or an imported document (see <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#linking-to-another-oscal-object">linking to another OSCAL object</a>).</li> |
| 87 | + </ol> |
| 88 | + </remarks> |
75 | 89 | </define-flag>
|
76 | 90 | </define-assembly>
|
77 | 91 |
|
|
81 | 95 | <define-flag name="uuid" as-type="uuid" required="yes">
|
82 | 96 | <formal-name>Component Identifier</formal-name>
|
83 | 97 | <!-- Identifier Declaration -->
|
84 |
| - <description>A <a href="/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this component elsewhere in <a href="/concepts/identifier-use/#component-definition-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>component</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</description> |
| 98 | + <description>Provides a globally unique means to identify a given component.</description> |
| 99 | + <prop name="value-type" value="identifier"/> |
| 100 | + <prop name="identifier-type" value="machine-oriented"/> |
| 101 | + <prop name="identifier-uniqueness" value="global"/> |
| 102 | + <prop name="identifier-scope" value="cross-instance"/> |
| 103 | + <prop name="identifier-persistence" value="per-subject"/> |
85 | 104 | </define-flag>
|
86 | 105 | <flag ref="defined-component-type" required="yes">
|
87 | 106 | <use-name>type</use-name>
|
|
252 | 271 | <define-flag required="yes" name="uuid" as-type="uuid">
|
253 | 272 | <formal-name>Capability Identifier</formal-name>
|
254 | 273 | <!-- Identifier Declaration -->
|
255 |
| - <description>A <a href="/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this capability elsewhere in <a href="/concepts/identifier-use/#component-definition-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>capability</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This UUID should be assigned <a href="/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</description> |
| 274 | + <description>Provides a globally unique means to identify a given capability.</description> |
| 275 | + <prop name="value-type" value="identifier"/> |
| 276 | + <prop name="identifier-type" value="machine-oriented"/> |
| 277 | + <prop name="identifier-uniqueness" value="global"/> |
| 278 | + <prop name="identifier-scope" value="cross-instance"/> |
| 279 | + <prop name="identifier-persistence" value="per-subject"/> |
256 | 280 | </define-flag>
|
257 | 281 | <define-flag name="name" as-type="string" required="yes">
|
258 | 282 | <formal-name>Capability Name</formal-name>
|
|
284 | 308 | <p>A given <code>component</code> must not be referenced more than once within the same <code>capability</code>.</p>
|
285 | 309 | </remarks>
|
286 | 310 | </is-unique>
|
| 311 | + <!-- Feature Request: add constraint ensuring a capability's incorporates-component references //component-definition/component/@uuid in the same component definition instance or an imported instance--> |
287 | 312 | </constraint>
|
288 | 313 | </define-assembly>
|
289 | 314 | <define-assembly name="incorporates-component">
|
290 | 315 | <formal-name>Incorporates Component</formal-name>
|
291 | 316 | <!-- TODO: needs a description -->
|
292 |
| - <description>TBD</description> |
| 317 | + <description>The collection of components comprising this capability.</description> |
293 | 318 | <define-flag required="yes" name="component-uuid" as-type="uuid">
|
294 | 319 | <formal-name>Component Reference</formal-name>
|
295 | 320 | <!-- Identifier Reference -->
|
|
309 | 334 | <define-flag name="uuid" as-type="uuid" required="yes">
|
310 | 335 | <formal-name>Control Implementation Set Identifier</formal-name>
|
311 | 336 | <!-- Identifier Declaration -->
|
312 |
| - <description>A <a href="/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference a set of implemented controls elsewhere in <a href="/concepts/identifier-use/#component-definition-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>control implementation set</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</description> |
| 337 | + <description>Provides a means to identify a set of control implementations that are supported by a given component or capability.</description> |
| 338 | + <prop name="value-type" value="identifier"/> |
| 339 | + <prop name="identifier-type" value="machine-oriented"/> |
| 340 | + <prop name="identifier-uniqueness" value="global"/> |
| 341 | + <prop name="identifier-scope" value="cross-instance"/> |
| 342 | + <prop name="identifier-persistence" value="per-subject"/> |
313 | 343 | </define-flag>
|
314 |
| - <flag ref="source" required="yes"> |
| 344 | + <define-flag name="source" as-type="uri-reference" required="yes"> |
| 345 | + <formal-name>Source Resource Reference</formal-name> |
| 346 | + <description>A reference to an OSCAL catalog or profile providing the referenced control or subcontrol definition.</description> |
315 | 347 | <remarks>
|
316 |
| - <p>A URL reference to the source catalog or profile for which this component is implementing controls for.</p> |
| 348 | + <p>This value may be one of:</p> |
| 349 | + <ol> |
| 350 | + <li>an <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#absolute-uri">absolute URI</a> that points to a network resolvable resource,</li> |
| 351 | + <li>a <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#relative-reference">relative reference</a> pointing to a network resolvable resource whose base URI is the URI of the containing document, or</li> |
| 352 | + <li>a bare URI fragment (i.e., `#uuid`) pointing to a <code>back-matter</code> resource in this or an imported document (see <a href="https://pages.nist.gov/OSCAL/concepts/uri-use/#linking-to-another-oscal-object">linking to another OSCAL object</a>).</li> |
| 353 | + </ol> |
317 | 354 | </remarks>
|
318 |
| - </flag> |
| 355 | + </define-flag> |
319 | 356 | <model>
|
320 | 357 | <define-field name="description" as-type="markup-multiline" min-occurs="1" in-xml="WITH_WRAPPER">
|
321 | 358 | <formal-name>Control Implementation Description</formal-name>
|
|
352 | 389 | <define-flag name="uuid" as-type="uuid" required="yes">
|
353 | 390 | <formal-name>Control Implementation Identifier</formal-name>
|
354 | 391 | <!-- Identifier Declaration -->
|
355 |
| - <description>A <a href="/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference a specific control implementation elsewhere in <a href="/concepts/identifier-use/#component-definition-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>control implementation</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This UUID should be assigned <a href="/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</description> |
| 392 | + <description>Provides a globally unique means to identify a given control implementation by a component.</description> |
| 393 | + <prop name="value-type" value="identifier"/> |
| 394 | + <prop name="identifier-type" value="machine-oriented"/> |
| 395 | + <prop name="identifier-uniqueness" value="global"/> |
| 396 | + <prop name="identifier-scope" value="cross-instance"/> |
| 397 | + <prop name="identifier-persistence" value="per-subject"/> |
356 | 398 | </define-flag>
|
357 | 399 | <flag ref="control-id" required="yes"/>
|
358 | 400 | <model>
|
359 | 401 | <define-field name="description" as-type="markup-multiline" min-occurs="1" in-xml="WITH_WRAPPER">
|
360 | 402 | <formal-name>Control Implementation Description</formal-name>
|
361 |
| - <description>A suggestion for how the specified control may be implemented if the containing component or capability is instantiated in a system security plan.</description> |
| 403 | + <description>A suggestion from the supplier (e.g., component vendor or author) for how the specified control may be implemented if the containing component or capability is instantiated in a system security plan.</description> |
362 | 404 | </define-field>
|
363 | 405 | <assembly ref="property" max-occurs="unbounded">
|
364 | 406 | <group-as name="props" in-json="ARRAY"/>
|
|
398 | 440 | </is-unique>
|
399 | 441 | </constraint>
|
400 | 442 | <remarks>
|
401 |
| - <p>Implemented requirements within a component or capability in a component definition provide a means to suggest possible control implementation details, which may be used by a different party when authoring a system security plan. Thus, these requirements defined in a component definition are only a suggestion of how to implement, which may be adopted wholesale, changed, or ignored by a person defining an information system implementation.</p> |
| 443 | + <p>Implemented requirements within a component or capability in a component definition provide a means for component suppliers to suggest possible control implementation details, which may be used by a different party (e.g., component consumers) when authoring a system security plan. Thus, these requirements defined in a component definition are only a suggestion of how to implement, which may be adopted wholesale, changed, or ignored by a person defining an information system implementation.</p> |
402 | 444 | <p>Use of <code>set-parameter</code> in this context, sets the parameter for the referenced control and any associated statements.</p>
|
403 | 445 | </remarks>
|
404 | 446 | </define-assembly>
|
|
0 commit comments