Class SystemComponent

java.lang.Object
dev.metaschema.oscal.lib.model.SystemComponent
All Implemented Interfaces:
dev.metaschema.core.model.IBoundObject

@MetaschemaAssembly(formalName="Component", description="A defined component that can be part of an implemented system.", name="system-component", moduleClass=OscalImplementationCommonModule.class, remarks="Components may be products, services, application programming interface (APIs), policies, processes, plans, guidance, standards, or other tangible items that enable security and/or privacy.\n\nThe `type` indicates which of these component types is represented.\n\nWhen defining a `service` component where are relationship to other components is known, one or more `link` entries with rel values of provided-by and used-by can be used to link to the specific component identifier(s) that provide and use the service respectively.", valueConstraints=@ValueConstraints(allowedValues={@AllowedValues(id="oscal-component-prop-name-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values={@AllowedValue(value="implementation-point",description="Relative placement of component (\'internal\' or \'external\') to the system."),@AllowedValue(value="leveraged-authorization-uuid",description="UUID of the related leveraged-authorization assembly in this SSP."),@AllowedValue(value="inherited-uuid",description="UUID of the component as it was assigned in the leveraged system\'s SSP."),@AllowedValue(value="asset-type",description="Simple indication of the asset\'s function, such as Router, Storage Array, DNS Server."),@AllowedValue(value="asset-id",description="An organizationally specific identifier that is used to uniquely identify a logical or tangible item by the organization that owns the item."),@AllowedValue(value="asset-tag",description="An asset tag assigned by the organization responsible for maintaining the logical or tangible item."),@AllowedValue(value="public",description="Identifies whether the asset is publicly accessible (yes/no)"),@AllowedValue(value="virtual",description="Identifies whether the asset is virtualized (yes/no)"),@AllowedValue(value="vlan-id",description="Virtual LAN identifier of the asset."),@AllowedValue(value="network-id",description="The network identifier of the asset."),@AllowedValue(value="label",description="A human-readable label for the parent context."),@AllowedValue(value="sort-id",description="An alternative identifier, whose value is easily sortable among other such values in the document."),@AllowedValue(value="baseline-configuration-name",description="The name of the baseline configuration for the asset."),@AllowedValue(value="allows-authenticated-scan",description="Can the asset be check with an authenticated scan? (yes/no)"),@AllowedValue(value="function",description="The function provided by the asset for the system."),@AllowedValue(value="hardware-model",description="\\*\\*(deprecated)\\*\\* Use \'model\' instead.",deprecatedVersion="1.2.0"),@AllowedValue(value="model",description="The model of the component."),@AllowedValue(value="os-name",description="The name of the operating system used by the asset."),@AllowedValue(value="os-version",description="The version of the operating system used by the asset."),@AllowedValue(value="software-name",description="The software product name used by the asset."),@AllowedValue(value="software-version",description="The software product version used by the asset."),@AllowedValue(value="software-patch-level",description="The software product patch level used by the asset."),@AllowedValue(value="version",description="The version of the component."),@AllowedValue(value="patch-level",description="The specific patch level of the component."),@AllowedValue(value="release-date",description="The date the component was released, such as a software release date or policy publication date."),@AllowedValue(value="validation-type",description="Used with component-type=\'validation\' to provide a well-known name for a kind of validation."),@AllowedValue(value="validation-reference",description="Used with component-type=\'validation\' to indicate the validating body\'s assigned identifier for their validation of this component.")}),@AllowedValues(id="oscal-component-link-rel-values",level=ERROR,target="link/@rel",allowOthers=true,values={@AllowedValue(value="depends-on",description="A reference to another component that this component has a dependency on."),@AllowedValue(value="validation",description="A reference to another component of component-type=validation, that is a validation (e.g., FIPS 140-2) for this component"),@AllowedValue(value="proof-of-compliance",description="A pointer to a validation record (e.g., FIPS 140-2) or other compliance information."),@AllowedValue(value="baseline-template",description="A reference to the baseline template used to configure the asset."),@AllowedValue(value="uses-service",description="This service is used by the referenced component identifier."),@AllowedValue(value="system-security-plan",description="A link to the system security plan of the external system."),@AllowedValue(value="uses-network",description="This component uses the network provided by the identified network component."),@AllowedValue(value="imported-from",description="The hyperlink identifies a URI pointing to the `component` in a `component-definition` that originally defined the `component`.")}),@AllowedValues(id="oscal-component-responsible-role-id-values",level=ERROR,target="responsible-role/@role-id",allowOthers=true,values={@AllowedValue(value="asset-owner",description="Accountable for ensuring the asset is managed in accordance with organizational policies and procedures."),@AllowedValue(value="asset-administrator",description="Responsible for administering a set of assets."),@AllowedValue(value="security-operations",description="Members of the security operations center (SOC)."),@AllowedValue(value="network-operations",description="Members of the network operations center (NOC)."),@AllowedValue(value="incident-response",description="Responsible for responding to an event that could lead to loss of, or disruption to, an organization\'s operations, services or functions."),@AllowedValue(value="help-desk",description="Responsible for providing information and support to users."),@AllowedValue(value="configuration-management",description="Responsible for the configuration management processes governing changes to the asset."),@AllowedValue(value="maintainer",description="Responsible for the creation and maintenance of a component."),@AllowedValue(value="provider",description="Organization responsible for providing the component, if this is different from the \"maintainer\" (e.g., a reseller).")}),@AllowedValues(id="oscal-component-prop-asset-type-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'asset-type\']/@value",allowOthers=true,values={@AllowedValue(value="operating-system",description="System software that manages computer hardware, software resources, and provides common services for computer programs."),@AllowedValue(value="database",description="An electronic collection of data, or information, that is specially organized for rapid search and retrieval."),@AllowedValue(value="web-server",description="A system that delivers content or services to end users over the Internet or an intranet."),@AllowedValue(value="dns-server",description="A system that resolves domain names to internet protocol (IP) addresses."),@AllowedValue(value="email-server",description="A computer system that sends and receives electronic mail messages."),@AllowedValue(value="directory-server",description="A system that stores, organizes and provides access to directory information in order to unify network resources."),@AllowedValue(value="pbx",description="A private branch exchange (PBX) provides a a private telephone switchboard."),@AllowedValue(value="firewall",description="A network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules."),@AllowedValue(value="router",description="A physical or virtual networking device that forwards data packets between computer networks."),@AllowedValue(value="switch",description="A physical or virtual networking device that connects devices within a computer network by using packet switching to receive and forward data to the destination device."),@AllowedValue(value="storage-array",description="A consolidated, block-level data storage capability."),@AllowedValue(value="appliance",description="A physical or virtual machine that centralizes hardware, software, or services for a specific purpose.")}),@AllowedValues(id="oscal-component-prop-allows-authenticated-scan-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'allows-authenticated-scan\']/@value",values={@AllowedValue(value="yes",description="The component allows an authenticated scan."),@AllowedValue(value="no",description="The component does not allow an authenticated scan.")}),@AllowedValues(id="oscal-component-prop-is-public-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'public\']/@value",values={@AllowedValue(value="yes",description="The component is publicly accessible."),@AllowedValue(value="no",description="The component is not publicly accessible.")}),@AllowedValues(id="oscal-component-prop-is-virtual-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'virtual\']/@value",values={@AllowedValue(value="yes",description="The component is virtualized."),@AllowedValue(value="no",description="The component is not virtualized.")}),@AllowedValues(id="oscal-component-prop-implementation-point-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'implementation-point\']/@value",values={@AllowedValue(value="internal",description="The component is implemented within the system boundary."),@AllowedValue(value="external",description="The component is implemented outside the system boundary.")}),@AllowedValues(id="oscal-component-hardware-service-software-prop-name-values",level=ERROR,target="(.)[@type=(\'software\', \'hardware\', \'service\')]/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values=@AllowedValue(value="vendor-name",description="The name of the company or organization")),@AllowedValues(id="oscal-component-prop-validation-link-rel-values",level=ERROR,target="(.)[@type=\'validation\']/link/@rel",allowOthers=true,values=@AllowedValue(value="validation-details",description="A link to an online information provided by the authorizing body.")),@AllowedValues(id="oscal-component-software-prop-name-values",level=ERROR,target="(.)[@type=\'software\']/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values=@AllowedValue(value="software-identifier",description="If a \"software\" component-type, the identifier, such as a SWID tag, for the software component.")),@AllowedValues(id="oscal-component-service-link-rel-values",level=ERROR,target="(.)[@type=\'service\']/link/@rel",allowOthers=true,values={@AllowedValue(value="provided-by",description="This service is provided by the referenced component identifier."),@AllowedValue(value="used-by",description="This service is used by the referenced component identifier.")}),@AllowedValues(id="oscal-component-interconnection-prop-name-values",level=ERROR,target="(.)[@type=\'interconnection\']/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values={@AllowedValue(value="isa-title",description="Title of the Interconnection Security Agreement (ISA)."),@AllowedValue(value="isa-date",description="Date of the Interconnection Security Agreement (ISA)."),@AllowedValue(value="isa-remote-system-name",description="The name of the remote interconnected system."),@AllowedValue(value="ipv4-address",description="The Internet Protocol Version 4 address is for an interconnection, service, or software component."),@AllowedValue(value="ipv6-address",description="The Internet Protocol Version 6 address is for an interconnection, service, or software component."),@AllowedValue(value="direction",description="The direction categorizes the network connectivity of an interconnection, service, or software component."),@AllowedValue(value="uri",description="A Uniform Resource Identifier (URI) is for an interconnection, service, or software component."),@AllowedValue(value="fqdn",description="The full-qualified domain name (FQDN) of the asset.")}),@AllowedValues(id="oscal-component-interconnection-service-software-system-prop-name-values",level=ERROR,target="(.)[@type=(\'interconnection\', \'service\', \'software\', \'system\')]/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values={@AllowedValue(value="ipv4-address",description="The Internet Protocol Version 4 address is for an interconnection, service, or software component."),@AllowedValue(value="ipv6-address",description="The Internet Protocol Version 6 address is for an interconnection, service, or software component."),@AllowedValue(value="direction",description="The direction categorizes the network connectivity of an interconnection, service, or software component."),@AllowedValue(value="uri",description="A Uniform Resource Identifier (URI) is for an interconnection, service, or software component."),@AllowedValue(value="fqdn",description="The full-qualified domain name (FQDN) of the asset.")}),@AllowedValues(id="oscal-component-prop-ipaddress-class-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=(\'ipv4-address\',\'ipv6-address\')]/@class",values={@AllowedValue(value="local",description="The identified IP address is for this system."),@AllowedValue(value="remote",description="The identified IP address is for the remote system to which this system is connected.")}),@AllowedValues(id="oscal-component-interconnection-link-rel-values",level=ERROR,target="(.)[@type=\'interconnection\']/link/@rel",allowOthers=true,values=@AllowedValue(value="isa-agreement",description="A link to the system interconnection agreement.")),@AllowedValues(id="oscal-component-interconnection-responsible-role-id-values",level=ERROR,target="(.)[@type=\'interconnection\']/responsible-role/@role-id",allowOthers=true,values={@AllowedValue(value="isa-poc-local",description="Interconnection Security Agreement (ISA) point of contact (POC) for this system."),@AllowedValue(value="isa-poc-remote",description="Interconnection Security Agreement (ISA) point of contact (POC) for the remote interconnected system."),@AllowedValue(value="isa-authorizing-official-local",description="Interconnection Security Agreement (ISA) authorizing official for this system."),@AllowedValue(value="isa-authorizing-official-remote",description="Interconnection Security Agreement (ISA) authorizing official for the remote interconnected system.")}),@AllowedValues(id="oscal-component-prop-direction-values",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'direction\']/@value",values={@AllowedValue(value="incoming",description="Data from the remote system flows into this system."),@AllowedValue(value="outgoing",description="Data from this system flows to the remote system.")})},indexHasKey=@IndexHasKey(id="oscal-component-prop-physical-location",level=ERROR,target="prop[@name=\'physical-location\']",indexName="index-metadata-location-uuid",keyFields=@KeyField(target="@value")),matches={@Matches(id="oscal-component-inherited-uuid-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'inherited-uuid\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.UuidAdapter.class),@Matches(id="oscal-component-release-date-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'release-date\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.DateAdapter.class),@Matches(id="oscal-component-prop-isa-date-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'isa-date\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.DateTimeAdapter.class),@Matches(id="oscal-component-prop-ipv4address-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'ipv4-address\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.IPv4AddressAdapter.class),@Matches(id="oscal-component-prop-ipv6address-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'ipv6-address\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.IPv6AddressAdapter.class),@Matches(id="oscal-component-prop-uri-value-datatype",level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'uri\']/@value",typeAdapter=dev.metaschema.core.datatype.adapter.UriAdapter.class)}), modelConstraints=@AssemblyConstraints(unique=@IsUnique(id="oscal-unique-system-component-responsible-role",level=ERROR,target="responsible-role",keyFields=@KeyField(target="@role-id"),remarks="Since `responsible-role` associates multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once."))) public class SystemComponent extends Object implements dev.metaschema.core.model.IBoundObject
A defined component that can be part of an implemented system.
  • Constructor Details

    • SystemComponent

      public SystemComponent()
      Constructs a new dev.metaschema.oscal.lib.model.SystemComponent instance with no metadata.
    • SystemComponent

      public SystemComponent(dev.metaschema.core.model.IMetaschemaData data)
      Constructs a new dev.metaschema.oscal.lib.model.SystemComponent instance with the specified metadata.
      Parameters:
      data - the metaschema data, or null if none
  • Method Details

    • getMetaschemaData

      public dev.metaschema.core.model.IMetaschemaData getMetaschemaData()
      Specified by:
      getMetaschemaData in interface dev.metaschema.core.model.IBoundObject
    • getUuid

      @NonNull public UUID getUuid()
      Get the "Component Identifier".

      A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this component elsewhere in this or other OSCAL instances. The locally defined UUID of the component can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.

      Returns:
      the uuid value
    • setUuid

      public void setUuid(@NonNull UUID value)
      Set the "Component Identifier".

      A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this component elsewhere in this or other OSCAL instances. The locally defined UUID of the component can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.

      Parameters:
      value - the uuid value to set
    • getType

      @NonNull public String getType()
      Get the "Component Type".

      A category describing the purpose of the component.

      Returns:
      the type value
    • setType

      public void setType(@NonNull String value)
      Set the "Component Type".

      A category describing the purpose of the component.

      Parameters:
      value - the type value to set
    • getTitle

      @NonNull public dev.metaschema.core.datatype.markup.MarkupLine getTitle()
      Get the "Component Title".

      A human readable name for the system component.

      Returns:
      the title value
    • setTitle

      public void setTitle(@NonNull dev.metaschema.core.datatype.markup.MarkupLine value)
      Set the "Component Title".

      A human readable name for the system component.

      Parameters:
      value - the title value to set
    • getDescription

      @NonNull public dev.metaschema.core.datatype.markup.MarkupMultiline getDescription()
      Get the "Component Description".

      A description of the component, including information about its function.

      Returns:
      the description value
    • setDescription

      public void setDescription(@NonNull dev.metaschema.core.datatype.markup.MarkupMultiline value)
      Set the "Component Description".

      A description of the component, including information about its function.

      Parameters:
      value - the description value to set
    • getPurpose

      @Nullable public dev.metaschema.core.datatype.markup.MarkupLine getPurpose()
      Get the "Purpose".

      A summary of the technological or business purpose of the component.

      Returns:
      the purpose value, or null if not set
    • setPurpose

      public void setPurpose(@Nullable dev.metaschema.core.datatype.markup.MarkupLine value)
      Set the "Purpose".

      A summary of the technological or business purpose of the component.

      Parameters:
      value - the purpose value to set, or null to clear
    • getProps

      @NonNull public List<Property> getProps()
      Get the "Property".

      An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.

      Returns:
      the prop value
    • setProps

      public void setProps(@NonNull List<Property> value)
      Set the "Property".

      An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.

      Parameters:
      value - the prop value to set
    • addProp

      public boolean addProp(Property item)
      Add a new Property item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeProp

      public boolean removeProp(Property item)
      Remove the first matching Property item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getLinks

      @NonNull public List<Link> getLinks()
      Get the "Link".

      A reference to a local or remote resource, that has a specific relation to the containing object.

      Returns:
      the link value
    • setLinks

      public void setLinks(@NonNull List<Link> value)
      Set the "Link".

      A reference to a local or remote resource, that has a specific relation to the containing object.

      Parameters:
      value - the link value to set
    • addLink

      public boolean addLink(Link item)
      Add a new Link item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeLink

      public boolean removeLink(Link item)
      Remove the first matching Link item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getStatus

      @NonNull public SystemComponent.Status getStatus()
      Get the "Status".

      Describes the operational status of the system component.

      Returns:
      the status value
    • setStatus

      public void setStatus(@NonNull SystemComponent.Status value)
      Set the "Status".

      Describes the operational status of the system component.

      Parameters:
      value - the status value to set
    • getResponsibleRoles

      Get the "Responsible Role".

      A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.

      Returns:
      the responsible-role value
    • setResponsibleRoles

      public void setResponsibleRoles(@NonNull List<ResponsibleRole> value)
      Set the "Responsible Role".

      A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.

      Parameters:
      value - the responsible-role value to set
    • addResponsibleRole

      public boolean addResponsibleRole(ResponsibleRole item)
      Add a new ResponsibleRole item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeResponsibleRole

      public boolean removeResponsibleRole(ResponsibleRole item)
      Remove the first matching ResponsibleRole item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getProtocols

      @NonNull public List<Protocol> getProtocols()
      Get the "Service Protocol Information".

      Information about the protocol used to provide a service.

      Returns:
      the protocol value
    • setProtocols

      public void setProtocols(@NonNull List<Protocol> value)
      Set the "Service Protocol Information".

      Information about the protocol used to provide a service.

      Parameters:
      value - the protocol value to set
    • addProtocol

      public boolean addProtocol(Protocol item)
      Add a new Protocol item to the underlying collection.
      Parameters:
      item - the item to add
      Returns:
      true
    • removeProtocol

      public boolean removeProtocol(Protocol item)
      Remove the first matching Protocol item from the underlying collection.
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getRemarks

      @Nullable public dev.metaschema.core.datatype.markup.MarkupMultiline getRemarks()
      Get the "Remarks".

      Additional commentary about the containing object.

      Returns:
      the remarks value, or null if not set
    • setRemarks

      public void setRemarks(@Nullable dev.metaschema.core.datatype.markup.MarkupMultiline value)
      Set the "Remarks".

      Additional commentary about the containing object.

      Parameters:
      value - the remarks value to set, or null to clear
    • toString

      public String toString()
      Overrides:
      toString in class Object