Class SystemComponent

java.lang.Object
gov.nist.secauto.oscal.lib.model.SystemComponent
All Implemented Interfaces:
gov.nist.secauto.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(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="version",description="The version of the component."),@AllowedValue(value="patch-level",description="The specific patch level of the component."),@AllowedValue(value="model",description="The model 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(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(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(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(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(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(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(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(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(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(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(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(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="An Internet Protocol Version 4 interconnection address"),@AllowedValue(value="ipv6-address",description="An Internet Protocol Version 6 interconnection address"),@AllowedValue(value="direction",description="An Internet Protocol Version 6 interconnection address")}),@AllowedValues(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(level=ERROR,target="(.)[@type=\'interconnection\']/link/@rel",allowOthers=true,values=@AllowedValue(value="isa-agreement",description="A link to the system interconnection agreement.")),@AllowedValues(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(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(level=ERROR,target="prop[@name=\'physical-location\']",indexName="index-metadata-location-uuid",keyFields=@KeyField(target="@value")),matches={@Matches(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'inherited-uuid\']/@value",typeAdapter=gov.nist.secauto.metaschema.core.datatype.adapter.UuidAdapter.class),@Matches(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'release-date\']/@value",typeAdapter=gov.nist.secauto.metaschema.core.datatype.adapter.DateAdapter.class),@Matches(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'isa-date\']/@value",typeAdapter=gov.nist.secauto.metaschema.core.datatype.adapter.DateTimeAdapter.class),@Matches(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'ipv4-address\']/@value",typeAdapter=gov.nist.secauto.metaschema.core.datatype.adapter.IPv4AddressAdapter.class),@Matches(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\') and @name=\'ipv6-address\']/@value",typeAdapter=gov.nist.secauto.metaschema.core.datatype.adapter.IPv6AddressAdapter.class)},expect=@Expect(level=ERROR,test="not(exists((.)[not(@type=\'service\')]/protocol))")), modelConstraints=@AssemblyConstraints(unique=@IsUnique(id="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 gov.nist.secauto.metaschema.core.model.IBoundObject
A defined component that can be part of an implemented system.
  • Constructor Details

  • Method Details

    • getMetaschemaData

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

      public UUID getUuid()
    • setUuid

      public void setUuid(UUID value)
    • getType

      public String getType()
    • setType

      public void setType(String value)
    • getTitle

      public gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine getTitle()
    • setTitle

      public void setTitle(gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine value)
    • getDescription

      public gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline getDescription()
    • setDescription

      public void setDescription(gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline value)
    • getPurpose

      public gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine getPurpose()
    • setPurpose

      public void setPurpose(gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine value)
    • getProps

      public List<Property> getProps()
    • setProps

      public void setProps(List<Property> value)
    • 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

      public List<Link> getLinks()
    • setLinks

      public void setLinks(List<Link> value)
    • 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

    • setStatus

      public void setStatus(SystemComponent.Status value)
    • getResponsibleRoles

    • setResponsibleRoles

    • 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

    • setProtocols

      public void setProtocols(List<Protocol> value)
    • 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

      public gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline getRemarks()
    • setRemarks

      public void setRemarks(gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline value)
    • toString

      public String toString()
      Overrides:
      toString in class Object