B Schemas

Oracle Data Vault uses these schemas for plug-in manifest files and collection plug-ins.

B.1 Sample Schema for a plugin-manifest.xml file

To validate any plugin-manifest.xml file that you author, Oracle recommends that you use the sample schema for a plugin-manifest.xml file.

Example B-1 Sample plugin-manifest.xsd file

<?xml version="1.0" encoding="utf-8"?>
<!-- This schema defines the structure of the Oracle Audit Vault Plugin -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://foobar.example.com/av/plugin"
           targetNamespace="http://foobar.example.com/av/plugin"
           elementFormDefault="qualified">
 
  <xs:element name="plugin">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="targetVersion">
          <xs:complexType>
            <xs:attribute name="min" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="extensionSet">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="extensionPoint">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="fileList">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="jars" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="templates" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="bin" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="config" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="shell" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="patch" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="unresolved-external" minOccurs="0" maxOccurs="1">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="include">
                                  <xs:complexType>
                                    <xs:attribute name="file" type="xs:string" use="required" />
                                    <xs:attribute name="permission" type="xs:string" use="optional" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="securedTargetTypeInfo">
                      <xs:complexType>
                        <xs:attribute name="name" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="trailInfo">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="trailType" type="xs:string" />
                          <xs:element minOccurs="0" name="trailLocation" type="xs:string" />
                          <xs:element maxOccurs="unbounded" name="className">
                            <xs:complexType>
                              <xs:attribute name="name" type="xs:string" use="required" />
                              <xs:attribute name="securedTargetVersion" type="xs:decimal" use="optional" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="eventPatch">
                      <xs:complexType>
                        <xs:attribute name="name" type="xs:string" use="required" />
                        <xs:attribute name="order" type="xs:unsignedByte" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="type" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required" />
      <xs:attribute name="id" type="xs:string" use="required" />
      <xs:attribute name="version" type="xs:string" use="required" />
      <xs:attribute name="provider-name" type="xs:string" use="required" />
      <xs:attribute name="copyright" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
</xs:schema>

B.2 Database Table Collection Plug-in Mapper File

Example B-2 Database Table Collection Plug-in Mapper Schema

<?xml version="1.0"?>
 
<!--
 Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
-->
 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--Existing Set of Core Fields-->
<xsd:simpleType name="CoreFieldValues">
    <xsd:restriction base="xsd:string">
    <xsd:enumeration value="EventTimeUTC"/>       
    <xsd:enumeration value="UserName"/>
    <xsd:enumeration value="OSUserName"/>
    <xsd:enumeration value="CommandClass"/>               
    <xsd:enumeration value="TargetObject"/>
    <xsd:enumeration value="ClientHostName"/>
    <xsd:enumeration value="ClientIP"/>
        <xsd:enumeration value="ClientProgramName"/>
    <xsd:enumeration value="TargetOwner"/>
    <xsd:enumeration value="ErrorId"/>
    <xsd:enumeration value="ErrorMessage"/>
    <xsd:enumeration value="EventStatus"/>
    <xsd:enumeration value="EventName"/>
    <xsd:enumeration value="TargetType"/>
        <xsd:enumeration value="TerminalName"/>
        <xsd:enumeration value="ClientId"/>
    </xsd:restriction>
</xsd:simpleType>
 
<!--Existing Set of Large Fields-->
<xsd:simpleType name="LargeFieldValues">
    <xsd:restriction base="xsd:string">           
        <xsd:enumeration value="CommandText"/>
        <xsd:enumeration value="CommandParam"/>
    </xsd:restriction>
</xsd:simpleType>
 
<!-- XML Document Structure-->
<xsd:element name="AVTableCollectorTemplate" >
    <xsd:complexType>
        <xsd:all>
            <!-- Audit table name -->     
            <xsd:element name="TableName" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <!-- Database connection information -->              
            <xsd:element name="ConnectionInfo" minOccurs="1" maxOccurs="1">
                <xsd:complexType>
                    <xsd:sequence>        
                        <!-- JDBC datasource class -->
                        <xsd:element name="DataSource" type="xsd:string"  minOccurs="1" maxOccurs="1"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <!-- Secured Target to AV server fields Mapping for Core, Large, Extension fields and Marker-->
            <xsd:element name="FieldMappingInfo" minOccurs="1" maxOccurs="1">
                <xsd:complexType>
                    <xsd:all>
                        <!-- Core Field Mapping -->
                        <xsd:element name="CoreFields" minOccurs="1" maxOccurs="1">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="Map" minOccurs="1" maxOccurs ="14">
                <xsd:complexType>
                <xsd:all>
                <xsd:element name="Name" type="xsd:string" />
                <xsd:element name="MapTo" type="CoreFieldValues" />       
                <xsd:element name="Transformation" minOccurs="0" maxOccurs="1">
                <xsd:complexType>                                                                                                          
                    <xsd:sequence>
                        <xsd:element name="ValueTransformation" minOccurs="0" maxOccurs ="1000" >
                            <xsd:complexType>
                                <xsd:attribute name="from" type="xsd:string" use="required"/>
                                <xsd:attribute name="to" type="xsd:string" use="required"/>
                </xsd:complexType>        
                </xsd:element>
                <xsd:element name="FieldTransformation" minOccurs="0" maxOccurs ="1000" >
                    <xsd:complexType>
                        <xsd:attribute name="from" type="xsd:string" use="required"/>
                        <xsd:attribute name="to" type="xsd:string" use="required"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
                                        </xsd:element>    
                                    </xsd:all>
                                </xsd:complexType>                                                                        
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element> 
                <!-- Large Field Mapping -->
                <xsd:element name="LargeFields" minOccurs="0" maxOccurs="1">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="Map" minOccurs="0" maxOccurs="2">
        <xsd:complexType>
        <xsd:all> 
        <xsd:element name="Name" type="xsd:string" />
        <xsd:element name="MapTo" type="LargeFieldValues" />
        <xsd:element name="Transformation" minOccurs="0" maxOccurs="1">
           <xsd:complexType>                                                                                                               
                <xsd:sequence>
                    <xsd:element name="ValueTransformation" minOccurs="0" maxOccurs ="1000" >
                        <xsd:complexType>
                            <xsd:attribute name="from" type="xsd:string" use="required"/>
                            <xsd:attribute name="to" type="xsd:string" use="required"/>
            </xsd:complexType>    
        </xsd:element>
        <xsd:element name="FieldTransformation" minOccurs="0" maxOccurs ="1000" >
            <xsd:complexType>
                <xsd:attribute name="from" type="xsd:string" use="required"/>
                <xsd:attribute name="to" type="xsd:string" use="required"/>
            </xsd:complexType>    
        </xsd:element>                                                                                                               
    </xsd:sequence>
</xsd:complexType>
</xsd:element>                                                                                            
</xsd:all>
</xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
            </xsd:element>        
            <!-- List of fields to be mapped to extension fields-->
            <xsd:element name="ExtensionField" minOccurs="0" maxOccurs="1">
                <xsd:complexType>
                    <xsd:sequence>                                                                        
                        <xsd:element name="Name" type="xsd:string" minOccurs="0" maxOccurs ="500" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>        
            <!-- List of fields which uniquely identify each audit record-->
            <xsd:element name="MarkerField" minOccurs="1" maxOccurs="1">
                <xsd:complexType>
                    <xsd:sequence> 
                        <xsd:element name="Name" type="xsd:string"  minOccurs="1" maxOccurs="20"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:all>
        </xsd:complexType>
        </xsd:element>    
        </xsd:all>
        <!-- Secured Target Type-->
        <xsd:attribute name="securedTargetType" type="xsd:string" use="required"/>
        <!-- Max Secured Target version supported by the template-->
        <xsd:attribute name="maxSecuredTargetVersion" type="xsd:string" use="required"/>
        <!-- Min Secured Target version supported by the template-->
        <xsd:attribute name="minSecuredTargetVersion" type="xsd:string"/>
        <!-- Template file version-->
        <xsd:attribute name="version" type="xsd:string" use="required"/>          
    </xsd:complexType>
</xsd:element>
</xsd:schema>

B.3 Schema For XML File Collection Plug-in Mapper File

Example B-3 XML file collection plug-in Mapper Schema

<?xml version="1.0"?>

<!--
 Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:include schemaLocation="ezCollectorTemplate_schema.xsd"/>

<!-- XML Document Structure-->
<xsd:element name="AVXMLCollectorTemplate" >
        <xsd:complexType>
                <xsd:all> 
                        <xsd:element name="HeaderInfo"  minOccurs="1" maxOccurs="1">
                                <xsd:complexType>
                                        <xsd:all>
                                                <!-- StartTag tag contains Root element of XML Audit data file-->
                                                <xsd:element name="StartTag" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        </xsd:all>
                                </xsd:complexType>
                        </xsd:element>                    
                        <xsd:element name="RecordInfo"  minOccurs="1" maxOccurs="1">
                                <xsd:complexType>
                                        <xsd:all>
                                                <!-- start tag of xml audit record in XML audit file-->
                                                <xsd:element name="StartTag" type="xsd:string" minOccurs="1" maxOccurs="1"/>                              
                                        </xsd:all>
                                </xsd:complexType>
                        </xsd:element>
                        <!-- tag for specifying xsl transformation related information -->
                        <xsd:element name="XslTransformation" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                        <xsd:all>
                                                <!-- tag to specify name of XSL file-->
                                                <xsd:element name="XslFile" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                <!-- tag for specifying Root element of source XML Audit data file to be transformed-->
                                                <xsd:element name="SourceFileStartTag" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        </xsd:all>
                                </xsd:complexType>
                        </xsd:element>
                        <!-- Secured Target to AV server fields Mapping for Core, Large, Extension fields and Marker-->
                        <xsd:element name="FieldMappingInfo" type="FieldMappingInfoType" minOccurs="1" maxOccurs="1"/>
                        <!-- Event Filter. This is optional. If it is not used, all the audit events will be collected-->
                        <xsd:element name="EventFilter" type="EventFilterType" minOccurs="0" maxOccurs="1"/>
                </xsd:all>
                <!-- Secured Target Type-->
                <xsd:attribute name="securedTargetType" type="xsd:string" use="required"/>
                <!-- Max Secured Target version supported by the template-->
                <xsd:attribute name="maxSecuredTargetVersion" type="xsd:string" use="required"/>
                <!-- Min Secured Target version supported by the template-->
                <xsd:attribute name="minSecuredTargetVersion" type="xsd:string"/>
                <!-- Template file version-->
                <xsd:attribute name="version" type="xsd:string" use="required"/>          
        </xsd:complexType>
</xsd:element>
</xsd:schema>