Accessibility Skip to Top Navigation Skip to Main Content Home  |  Change Text Size  |  Contact IRS  |  About IRS  |  Site Map  |  Español  |  Help  

10.8.4  Relational Database Management Systems (RDBMS) Security Configurations (Cont. 1)

10.8.4.5 
Technical Controls

10.8.4.5.1 
Identification and Authentication

10.8.4.5.1.6  (02-21-2008)
Non-interactive/Automated Processing Accounts

  1. Accounts created for and used by non-interactive/automated processing are subject to special consideration. These database accounts may be used for a variety of functions such as activity log storage by remote or local devices, unattended database maintenance batch jobs, etc. These accounts shall not be shared with interactive (i.e., human user) database users. The primary vulnerability associated with the use of non-interactive database accounts is a frequent requirement to store the account name and password within application code or external files and the possibility of exposure of this information during the logon process. The mechanisms for protecting the username and password vary by operating system and database system. Accounts used for automated processing should be further protected by restricting the account used to appropriate hours of access where possible. Additional policy for securing these accounts is located in specific database and OS-specific sections.

    1. The SA shall ensure only authorized users will have access to database utilities and batch submissions that contain account names and passwords.

    2. The DBA shall ensure that non-interactive/automated processing accounts meet the same security requirements as database application user database accounts meet with the exception of password lifetime.

    3. The DBA shall restrict the password lifetime for non-interactive/automated processing accounts to a maximum of one year.

    4. The DBA shall ensure that use of non-interactive/automated processing accounts is documented and authorized by the DAA.

    5. The DBA shall ensure that database utilities and batch submissions do not contain or store unencrypted database account names and passwords.

10.8.4.5.1.7  (02-21-2008)
Multiple-Tier Application Connection Accounts

  1. Many databases require the use of a single account to support multiple tier or "N-Tier" application connections from an application server to a backend database. Such connections rely upon the degree of security applied to the network connection and the authentication method used between the middle-tier server and the database server. Also, the ability to audit at the individual user level may be lost at the database level. It becomes the responsibility in this scenario of the application level to audit individual activities as required. The access to the N-Tier connection account shall be restricted by network configuration and authentication method to the connecting middle-tier server. Acceptance of risk for the limited auditing capability of the database in this configuration shall be documented and filed with the SecSpec.

    1. The DBA shall ensure that access to a shared database N-Tier connection account is restricted by network configuration and authentication method to the connecting application server.

    2. Remote Access accounts shall be documented within the lifecycle.

    3. The DBA shall configure connections between the database server and connecting application server in accordance with policy as listed in IRM 10.8.1.

10.8.4.5.1.8  (02-21-2008)
Application User Database Accounts

  1. Application user database accounts are used to provide access to application database objects to perform a particular application function. Privileges granted to application user database accounts shall follow the principle of least privilege and include only those privileges required to perform the assigned function. Privileges shall not be granted directly to application user database accounts. Privileges shall be granted to application user database accounts only through the use of database roles.

    1. The DBA shall ensure that privileges granted to application user database accounts are restricted to those required to perform the specific application functions assigned.

    2. The DBA shall ensure that privileges are not directly granted to database application user database accounts, but rather are managed through the assignment of roles.

10.8.4.5.1.9  (02-21-2008)
Local Operating System (OS) Accounts for Applications

  1. Database applications that are installed on the DBMS host system and are accessed from the DBMS host by application users may require a specific security configuration. Specific details for any OS account configuration requirements are located in the DBMS-specific sections of the Exhibits.

10.8.4.5.1.10  (02-21-2008)
OS Accounts for DBAs

  1. Database administration OS accounts required for operation and maintenance of the DBMS shall be configured in accordance with the security requirements as specified by the specific DBMS. Details for the DBA account configurations are located in the specific DBMS appendix.

    1. The SA, with the support of the DBA, shall ensure that database administration OS accounts required for operation and maintenance of the DBMS are configured in accordance with the security requirements specified for the specific DBMS.

10.8.4.5.2  (02-21-2008)
Access Control

  1. The IRS shall implement access control measures that shall provide protection from unauthorized alteration, loss, unavailability, or disclosure of information. Access control shall follow the principle of least privilege and separation of duties. Database users shall adhere to IRS policy for access control in accordance with IRM 10.8.1.

10.8.4.5.2.1  (02-21-2008)
Database Object Access

  1. Each database application user database account shall be granted object access to the appropriate database objects through application specific roles. These roles shall be based on the function being performed. Object privileges shall not be assigned directly to individual application user database accounts. Object privileges shall not be granted to PUBLIC (a DBMS defined mandatory all-user role) except those explicitly required by the DBMS vendor. Note that not every role defined by the vendor is required by IRS database applications. Whenever possible, minimize the access by limiting the role even if it is a predefined role. Access to DBA views and tables, which contain access to all data dictionary object information, shall be restricted to DBAs, SecSpecs, application administrators (if required), and batch processing accounts that have been documented within the lifecycle documentation.

    1. The DBA shall ensure that all object privileges granted to application users are granted through the use of application specific roles.

    2. The DBA shall ensure that object privileges are not assigned directly to individual application user database accounts.

    3. The DBA shall ensure that application object privileges are not granted to PUBLIC.

    4. The DBA shall ensure that DBMS installation default object privileges are not granted to PUBLIC except for those object privileges whose removal is not supported by the DBMS vendor.

    5. The DBA shall ensure that access to DBA views and tables is restricted to DBAs and batch processing accounts.

10.8.4.5.2.2  (02-21-2008)
Application Object Ownership/Schema Account

  1. Object ownership grants full privileges to owned objects. All database objects shall be owned by the database system, DBAs, or by an account created especially for application object ownership. It is recommended that for each application a custom database account is created and that this account is used to own all of the database objects accessed by the application. The application user shall not own any database objects. Only the application owner shall have the ability to grant object privileges to the application roles. At no time shall an application user log on to the database account that is the application object owner. The application object owner database account shall be used only for update and maintenance of the application objects within the database. To help protect this account, the custom application owner account shall be disabled when not in use. The default DBMS database accounts shall not be used as the owner of an application’s objects or schema.

    1. The DBA shall ensure that all database objects are owned by the database system, DBAs, or by a separate account created especially for application object ownership.

    2. The DBA shall ensure that application user database accounts do not own any database objects.

    3. The SecSpec shall ensure that DBA accounts do not own application objects.

    4. The DBA shall ensure that the application object owner account is used only for update and maintenance of the application objects.

    5. The DBA shall ensure that the application object owner account is used only for update and maintenance of the application objects.

    6. The DBA shall ensure that custom application owner accounts are disabled/locked when not in use.

    7. The DBA shall ensure that default DBMS database accounts other than the default administration account are not used as the owner of an application’s objects or schema.

10.8.4.5.2.3  (02-21-2008)
Database Roles

  1. A database role allows database privileges to be defined and assigned by application function. Individually required privileges and other database roles may be granted to a single database role thus allowing required privileges to be simultaneously granted to and revoked from database accounts. An example of such roles would be DBA roles, application administrator roles, and specific application user roles for financial applications, sales support applications, inventory applications, etc. All application user roles shall be granted the most limited set of privileges that allows the user to accomplish the specific job function required of their position. No roles shall be granted to PUBLIC. No permissions shall be granted directly to application user database accounts with the following exceptions: 1) accounts created and maintained by default during the installation and maintenance of the database system, and 2) a single application user database account on a database with only one such account.

    1. The DBA shall ensure that all application user roles are granted the most limited set of privileges that allows the user to accomplish the specific job function required of their position.

    2. The DBA shall ensure that roles are not granted to PUBLIC.

    3. The DBA shall ensure that no permissions are granted directly to database accounts except those granted to database application owner accounts, a single application user database account on a database where only one such account is defined, and to accounts created and maintained by default during the installation and maintenance of the database system.

10.8.4.5.2.3.1  (02-21-2008)
DBA Role

  1. The DBA role contains all database system privileges. System privileges include privileges to configure the database, enable the creation, modification, and deletion of database objects, maintain database accounts, and privileges that provide the ability to grant and revoke permissions to these objects. The DBA role also includes exclusive access to database views and tables that house privileged information about the database and database structure. The DBA has full access to the database's data and its’ data dictionary. A DBA has full and complete control of the database, its structure, and its contents. The DBA role shall only be granted to authorized DBAs. In a production environment, the assignment of the DBA role shall be restricted to authorized DBA accounts. In a development environment, the DBA role shall be restricted to DBA accounts and authorized application developer accounts.

    1. The DBA shall ensure that the DBA role is restricted to authorized DBA accounts in a production environment.

    2. The DBA shall ensure that the DBA role is restricted to DBA accounts in a production environment and authorized application developer accounts in a development environment.

    3. Whenever possible, use of the generic DBA account(s) shall be replaced with accounts specific to individuals. For example, the OracleDBA account is not required, but any account with the same permissions will suffice. Where possible each DBA shall have his/her own account thereby increasing individual accountability as required by IRM 10.8.1.

10.8.4.5.2.3.2  (02-21-2008)
Application Developer Roles

  1. The application developer role is used to assign required privileges to developer accounts on a development database. Application developers shall not be permitted access to production databases, except under the circumstances described below:

    1. In emergency troubleshooting situations, the Information System Owner of a production DBMS may authorize a limited number of developers temporary access to a production database for a fixed number of days. The approval of such access must be in writing and must be issued by a Information System Owner management-level official. The duration of the temporary access shall be specified in writing, and shall not exceed 15 days. If developer access to a production database for a period of greater than 15 days is required, a formal deviation request (to deviate from this IRM) shall be submitted in accordance with the deviation process described in IRM 10.8.1.

    2. Developers that have been granted access to a production database shall use "Fire Call" accounts as the means of system access, in accordance with IRM 10.8.1 and operating system specific Fire Call account procedures.

    3. Developers, DBAs, and Information System Owners shall observe the Security Change Management requirements of IRM 10.8.1 in all situations involving developer access to production databases, including the requirement to submit a change request to an appropriate change control board.

10.8.4.5.2.3.3  (02-21-2008)
Application Administrator Roles

  1. Application administrator roles are roles used to assign application user database account maintenance responsibility to users other than DBAs. In some cases, such a capability is required by a specific application. Application administrator roles may have the privileges to create application user database accounts, assign specific application profiles to individual application user database accounts, and assign application roles to application user database accounts. The application administrator role should be activated only for a specified database application or by a password provided by a stored database application. The application administrator role shall not be used as the default role for application user database accounts.

    1. The DBA shall ensure that the application administrator role is used only when performing administration functions.

    2. DBA shall ensure that the application administrator role is not used as the default role for application user database accounts.

10.8.4.5.2.3.4  (02-21-2008)
Application User Database Roles

  1. For each application, distinct roles shall be created that define all privileges necessary for users of the application. A unique, separate role shall be defined for application administrators. If an application performs multiple job functions, individual roles shall be created corresponding to the privileges necessary each of individual the job functions.

  2. Each application user database account shall be granted an appropriate default role upon creation of the account. Application user database accounts may be assigned multiple application user roles based upon their job function. An application user database account shall not be granted the privilege to alter any other database account. All DBA views and tables shall be secured so application user database accounts or application user database roles do not have access to this information.

    1. The DBA shall assure that every application with two or more application user database accounts has distinct application user database roles containing any and all privileges necessary for application users and application administrators.

    2. The DBA shall ensure that all application user database accounts are granted the appropriate application user database role.

    3. The DBA shall ensure that application user database accounts are not granted the privilege to alter any other database account.

    4. Where possible, application developers shall use DBMS security functionality such as "invoker’s rights" or equivalent functionality to ensure that privilege information defined in database roles is passed appropriately to any DBMS stored procedures accessed by applications.

10.8.4.5.3  (02-21-2008)
Audit and Accountability

  1. This section establishes the minimum amount of auditing information required for IRS database management systems. The information in this section provides DBMS-specific detail for the auditing requirements identified in IRM 10.8.3,Audit Logging Security Standards.

10.8.4.5.3.1  (02-21-2008)
Audit Data Requirements

  1. Auditing shall be configured and implemented on all DBMS systems. Auditing shall be capable of capturing all database operations. This includes both events that occur within the database and affect modification to database parameters and resources as well as modifications to the database catalog (object creation, deletion, alteration) and events performed on or by the host system such as database shutdown and startup. Database audit data shall be maintained in accordance with IRM 10.8.1. The audit data is not required to be local to the database for the period of retention, but shall be available for historical analysis if needed. Audit data shall only be readable by personnel authorized by the SecSpec.

    1. The SecSpec shall assure that auditing is configured and implemented on all DBMS software and the host operating systems that the DBMS software runs on.

    2. The SecSpec shall ensure that database audit data is captured and maintained in accordance with IRM 10.8.1 and IRM 10.8.3.

    3. The SA, with support of the DBA, shall ensure that audit data is captured for database events that are auditable at the host system level including database process or service startup/shutdown and database authentication or access.

    4. The DBA shall ensure that audit data is captured for all required database events. See IRM 10.8.4.5.3.2, Minimum Required Audit Operations.

    5. The DBA shall ensure that audit data is only readable by personnel authorized by the SecSpec.

10.8.4.5.3.2  (02-21-2008)
Minimum Required Audit Operations

  1. The following minimum set of operations shall be audited for successful and unsuccessful execution. In the event of intrusive or anomalous activity, more detailed auditing shall be performed. (Reference the DBMS specific appendixes for specific minimum database auditing requirements.) The DBA shall ensure that the following minimum audit requirements are met:

    1. The DBA shall ensure that the creation, alteration, or deletion (drop) of database accounts is audited.

    2. The DBA shall ensure that the creation, alteration, or deletion (drop) of any database system storage structure is audited.

    3. The DBA shall ensure that the creation, alteration, or deletion (drop) of database objects is audited.

    4. The DBA shall ensure that the creation, alteration, or deletion (drop) of database tables is audited.

    5. The DBA shall ensure that the creation, alteration, or deletion (drop) of database indexes is audited.

    6. The DBA shall ensure that enabling and disabling of audit functionality is audited.

    7. The DBA shall ensure that granting and revoking of database system level privileges is audited.

    8. The DBA shall ensure that any action that returns an error message because the object referenced does not exist is audited.

    9. The DBA shall ensure that any action that renames a database object is audited.

    10. The DBA shall ensure that any action that grants or revokes object privileges from a database role or database account is audited.

    11. The DBA shall ensure that all modifications to the data dictionary or database system configuration are audited.

    12. The DBA shall ensure that all database connection failures are audited. Where possible, the DBA shall ensure that both successful and unsuccessful connection attempts are audited.

10.8.4.5.3.3  (02-21-2008)
DBA Auditing

  1. All connections performed to maintain or administer the database shall be audited. All DBA operations shall be audited. At a minimum, the DBA connection shall be audited and the following list of DBA activities shall be reported:

    1. Database startup

    2. Database shutdown

    3. Database online backup

    4. Database archiving

    5. Database performance statistics collection

  2. The SA shall protect database audit files so that they cannot be modified by the DBA.

  3. The DBA shall ensure that all database connections used to perform the above listed DBA actions are audited.

10.8.4.5.3.4  (02-21-2008)
Value-Based Auditing

  1. Value-based auditing is performed on the individual data element. It provides a before and after look of changes to data values. Value-based auditing is required for any system that requires a before and after look of changes to data values. Most databases accommodate this basic requirement by default by recording transactions in log files available for restoration of data prior to an uncommitted transaction. Transaction logs shall be reviewed on a rotating basis, but at a minimum once a quarter, if there have been no reported or suspected security events on that database instance. Transaction logs shall be reviewed when security events occur for sensitive data. Users shall be notified of the last time and date of modification to sensitive data. Ensuring review of the DBMS transaction logs is the responsibility of the SecSpec.

    1. The SecSpec shall ensure that DBMS transaction logs are reviewed weekly or more frequently for suspicious or unauthorized changes to sensitive data.

10.8.4.5.3.5  (02-21-2008)
Required Audit Operations on Audit Data

  1. Unauthorized users often target auditing data in order to hide evidence of unauthorized activity. The audit data shall be reviewed for the following types of operations.

    1. Update of audit information

    2. Deletion of audit information

  2. This level of auditing applies to the actions of all users, including DBAs.

    1. The DBA shall ensure that database audit trail information is audited for all update and deletion operations.

10.8.4.5.3.6  (02-21-2008)
Audit Data Backup

  1. Audit data shall be maintained in accordance with IRM 10.8.1, IRM 10.8.3, applicable operating system specific policies (e.g., the Unix IRM), and this IRM. IRS practice has been to retain archived audit logs/trails for the remainder of the year they were made plus six years. The audit data is not required to reside within the database or reside on local disk storage, but can be available on off-line storage if needed. If an application is not capable of maintaining this amount of audit information, the deficiency shall be documented and a deviation requested.

  2. The audit data shall be stored in a format readable by analysis programs or scripts, and comply with international standards for interchange. This shall enable the SecSpec to perform a historical analysis if intrusive or anomalous behavior is discovered.

  3. When the audit data is archived (backed up) to a historical format, the archived audit information shall be deleted from the database or host system. The deletion of audit records may be the responsibility of the DBA and requires the generation of an audit record. (This means that after the audit data has been archived, only one record shall remain in the active audit trail. This will be the record of deletion of audit information.) This allows the SecSpec and/or the DBA to monitor the audit information and verify that the audit data has been archived.

    1. The DBA shall ensure that all audit data deletion operations cause an audit record to be generated within the active audit trail.

10.8.4.5.3.7  (02-21-2008)
Audit Data Reviews

  1. The collection of user account actions and process activities in the audit files is only part of the process of system monitoring. Collected data shall be examined and analyzed at least weekly to detect any compromise or attempted compromise of system security in accordance with IRM 10.8.1.

  2. The database audit data shall be reviewed at a minimum bi-weekly. This review process shall check for any intrusive activity and any anomalous activity.

    1. The SecSpec shall ensure that the audit data and/or system logs capture the following types of information:

    • Excessive logon attempt failures by single or multiple database accounts

    • Logons at unusual/non-duty hours

    • Failed attempts to access restricted system or data files indicating a possible pattern of deliberate browsing

    • Unusual or unauthorized activity by SAs

    • System failures or errors

    • Unusual or suspicious patterns of activity

  3. At a minimum, the DBA or security administrator shall do the following:

    1. The DBA shall provide reports on current audit data.

    2. The DBA shall provide reports on historical audit data, for trend analysis purposes.

    3. The DBA shall provide a methodology to back up current audit data into an appropriate archive format.

    4. The DBA shall create processes to monitor and provide real-time alerts for high priority incidents.

10.8.4.5.3.8  (02-21-2008)
Audit Data Access

  1. The ability to grant access to database audit data shall be limited to the DBA and SecSpec. This access control shall be strictly enforced. Any access to database audit data beyond that held by the DBA and SecSpec shall be granted only to other personnel who are responsible for reviewing and acting upon audit reports. The SA and data owner shall be notified whenever such access is granted. The DBA and the SecSpec shall maintain a record of such access which shall include the identification of the individual granted access and the period of such access. Select, insert, delete, or update operations on audit information shall be restricted to DBAs or security auditors. Privileges to disable auditing shall be restricted to DBAs or security auditors.

    1. The DBA shall ensure that access to any DBA views that allow a database account to display audit information is restricted to DBAs or security auditors.

    2. The DBA shall ensure that select, insert, delete, or update privileges on audit tables is restricted to DBAs only.

    3. The DBA shall ensure that privileges to disable auditing are restricted only to DBAs.

10.8.4.5.3.9  (02-21-2008)
Database Monitoring

  1. In addition to reviewing audit data collections, unauthorized database activity may also be discovered by actively monitoring the status of database objects. The DBA shall review the DBMS job queues daily to ensure that no unauthorized batch jobs or database scripts are being run against the database. The DBA shall monitor the creation, reload, and compilation of database objects to ensure no unauthorized changes have been made. Where possible, DBAs shall review what applications are being used to access the database to ensure that only authorized applications are allowed access to the database and to discover unauthorized database access attempts.

  2. DBAs shall review what applications are being used to access the database to ensure that only authorized applications are allowed access to the database and to discover unauthorized database access attempts.

  3. The DBA shall regularly and routinely monitor database accounts for expiration and inactivity. Accounts not in use shall be removed in accordance with IRM 10.8.1.

    1. The DBA shall monitor the database for unauthorized changes to database objects.

    2. The DBA shall monitor database batch and job queues to ensure that no unauthorized jobs are accessing the database.

    3. The DBA shall monitor database account expiration and inactivity and remove expired and inactive accounts in accordance with IRM 10.8.1, which requires disabling of accounts after 45 days of inactivity and removal of accounts after 90 days of inactivity.

    4. The DBA shall monitor the database to discover access by unauthorized application software.

10.8.4.5.4  (02-21-2008)
System and Communications Protection

  1. This section describes the requirements for network security as it relates to all database management systems.

10.8.4.5.4.1  (02-21-2008)
Protection of Database Identification Parameters

  1. Database parameters such as instance identifiers, network addresses, and database host names may aid unauthorized users in finding and accessing databases. This information should never be published publicly such as via mailing lists or news groups and should be protected from unauthorized access where possible. Database information for specific databases shall be restricted to authorized database users and administrators of that particular database and not disseminated to all users in the network or environment.

    1. Where possible, the SecSpec shall ensure that database client software includes only database identification parameters of databases to which that user is authorized access.

10.8.4.5.4.2  (02-21-2008)
Network Connections to the Database

  1. When a database connection is requested via the network to a database server, the client shall provide an individual account name and authentication credentials to access the database. The database account name and any password transmission from a client to a database server over a network shall be protected in accordance with IRM 10.8.1.

    1. The SecSpec shall ensure that the transmission of a database account name and password from a client to a database server over a network is protected in accordance with IRM 10.8.1

10.8.4.5.4.3  (02-21-2008)
Remote Administrative Database Access

  1. Remote connections to the database by administrative users to perform administrative functions including database account password resets and account management shall be encrypted. Without encryption, such activity performed during these connections could provide information useful to gain unauthorized access to the database.

    1. The DBA shall ensure that DBMS software features to encrypt remote administrative connections to the database are utilized.

10.8.4.5.4.4  (02-21-2008)
Open Database Connectivity (ODBC)

  1. ODBC, an application programming interface (API), provides another method besides native database methods to connect to a database and issue standard SQL commands. Many popular COTS applications provide connectivity to databases using ODBC drivers. These applications may be easily configured to access the database by a savvy user who can provide authentication information directly to the database. These types of connections emphasize the importance of defining database object access authorizations within the database itself and not solely within the application. ODBC tracing, a function used for debugging applications and connections, shall be disabled or tightly controlled. This will prevent sensitive data from being stored in trace files on disk during debugging activities. Where its use is not justified, the ODBC tracing executable shall be deleted from the system to ensure the function is unavailable. The removal of the executable may require periodic review as some upgrades or other application installations may re-install it. User account privileges defined at the DBMS level are the only privileges guaranteed in effect via ODBC connections. Database account passwords shall not be stored in unencrypted format within ODBC connection definitions or data set names (DSN).

    1. The SecSpec shall ensure that unencrypted passwords are not stored in ODBC connection definitions.

    2. The DBA shall ensure that when not in use the ODBC tracing executable is deleted from the system to ensure the function is unavailable.

  2. Wireless encryption key sizes shall be at least 128 bits in strength as defined by NIST SP 800-57, Recommendation for Key Management.

  3. Encryption being used shall be based on the expected security life of the data being protected. See NIST 800-57, for specific guidance on encryption algorithm selection and key length.

  4. The databases and database information stored or transmitted through a wireless network or device must be assessed to determine the sensitivity of the information and determine the necessary security controls.

  5. Wireless laptops shall encrypt sensitive database files and/or directories in accordance with IRM 10.8.26, Enterprise Laptop Security Strategy.

10.8.4.5.4.5  (02-21-2008)
Java Database Connectivity (JDBC)

  1. JDBC, another application programming interface (API), provides a method for connection to a database from a Java application. JDBC drivers may connect to a database by bridging to ODBC drivers or by using the database native SQL API such as Oracle’s Net (Net8) or Microsoft’s DB library. JDBC connection information, specifically database account passwords, shall not be stored in unencrypted format.

    1. The SecSpec shall ensure that JDBC connection data is not stored in unencrypted format.

10.8.4.5.4.6  (02-21-2008)
Web Server or Middle-Tier Connections to Databases

  1. The availability requirements for the application served by the database and the sensitivity of the data being served determine the appropriate network architecture for web or middle-tier connections to DBMSs. Systems requiring greater assurance for availability should have the DBMS located on a host server separate from the serving web or middle-tier server. This helps limit any security events to the compromised system. Encryption requirements for data transmitted between these systems are dependent on the sensitivity of the data being transmitted, the sensitivity level assigned to the network being traversed, and any differences in need-to-know between the data and the users on the network. Login credentials to the DBMS and web/middle-tier servers shall always be encrypted. Connections to the database shall be protected per IRM 10.8.1.

  2. Connection pooling is a technique for improving the response time of database applications, which is accomplished by establishing a group or "pool" of databases connections which are then shared by applications on an application server. Connection pooling between web or middle-tier servers and databases that support individual identification and authentication of database users shall be used. Individual identification and authentication shall be complied when used to enter an IRS database. Oracle databases support this by means of the Oracle Call Interface (OCI). IBM DB2 databases support connection pooling through JDBC, and Microsoft SQL Server supports connection pooling through ODBC.

10.8.4.5.4.7  (02-21-2008)
Database Session Inactivity Time Out

  1. Inactive database sessions are typically construed as an indication of unattended interactive account connections. While workstation and OS policy already require terminal lock requirements to protect unattended workstations from unauthorized access, an idle database session still uses database and host system resources and may lead to denial of service or session hijacking. Database session inactivity time outs shall be set to a system-wide (in this case, a database-wide) inactivity time out of 15 minutes. Databases requiring user session inactivity timeouts greater than 15 minutes shall be justified and documented in deviation requests.

    1. The application developer shall justify and approve database session inactivity timeouts for specific accounts that require a limit in excess of 15 minutes.

    2. The DBA shall set a default database session inactivity time out of 15 minutes or less unless a system owner-approved letter of justification to exceed this limit is available.

10.8.4.5.4.8  (02-21-2008)
Database Replication

  1. A distinct database account and password for the replication administrator and replication system database accounts shall be used to secure replication procedures and facilities (e.g., disk space). Replication account passwords shall be protected when transmitted over a network. Access to replication procedures and facilities shall be restricted to authorized DBAs and designated replication accounts.

  2. Replication data may be stored temporarily in specific OS locations for retrieval by database replication partners. This data must be securely stored and access to it restricted to the DBA and authorized replication software components. This protection is controlled by OS file and directory permissions as well as database security controls.

    1. The SA shall provide the DBA with appropriate read/write access to OS directories used for replication purposes.

    2. The DBA shall ensure that a distinct database account and password is used to secure the replication procedures and facilities.

    3. The DBA shall ensure that access to replication procedures and facilities is restricted to authorized DBAs and designated replication database accounts.

10.8.4.5.4.9  (02-21-2008)
Database Links

  1. Databases may be configured to share data across remote database systems. Such linked databases may be part of federated or distributed database architectures. Authentication between linked databases may rely upon the credentials of the requesting database session or upon a statically defined username and password. Generally, it is best to use a current user’s network-based security credentials provided by means of a directory service to authenticate to the remote system, as this is the only way to maintain a clear auditable identity across all systems. When distributed databases are required to share or transmit data through database links via network connections, the database initiating the link shall use the credentials of the current database session to connect to the remote database.

  2. Database link access shall be restricted to authorized users when possible. Applications shall not create or use public database links (with the exception of database links required for replication), unless justified and documented in a deviation request. It is possible to create a private database link and establish a public synonym to the database link. This protects the details about the database link, while providing the same capabilities as a public link.

  3. To protect sensitive production database data, database links shall not be defined between production and development databases. This restriction helps to prevent sensitive data from being accessed or downloaded by developers or other unauthorized personnel on a remote database.

    1. The DBA shall ensure that database links use the credentials of the current database session to authenticate to the remote database system except as required by replication configurations.

    2. The DBA shall ensure that PUBLIC database links (i.e., links accessible by all database users) are not used by applications unless justified and documented in approved ELC documentation, with the exception of replication database links required for system availability purposes.

    3. The DBA shall ensure that no database links are defined between production and development databases.

10.8.4.5.4.10  (02-21-2008)
OS Database File Access

  1. Database executable files, configuration files, and data files shall be protected by the operating system from unauthorized access. " Least privilege" access to these files shall be configured, in accordance with recommended security guidance provided by the DBMS software vendor. Local application user OS accounts shall be granted access only to the DBMS application files required by the DBMS. Data files should be encrypted where possible to further protect the data stored within them from unauthorized disclosure. This can be accomplished using native OS file or device encryption. In some cases, the performance impact of the encryption prohibits its use.

    1. The SA, with the support of the DBA, shall ensure that access to DBMS executable files, configuration files, and data files is configured in accordance with vendor security recommendations.

    2. The SA, with the support of the DBA, shall ensure that local application user OS accounts are granted access only to the DBMS application files required to access the DBMS.

10.8.4.5.4.11  (02-21-2008)
OS Group Permissions

  1. Typically, DBMS host configurations grant privileged access to DBAs by means of special OS group assignments. Membership in this group grants access privileges to DBMS directories and files. It also may grant special privileges within the database system itself. Only authorized DBAs shall be granted membership to any DBMS privileged OS groups. Some DBMS installations may require installation under an account created specifically for that purpose. Access to any shared DBMS software installation accounts shall be restricted to authorized personnel only. Use of a shared DBMS software installation account shall be logged and/or audited to indicate the identity of the person who accessed the account.

    1. The SecSpec shall ensure that only authorized DBAs are granted membership to DBMS privileged OS groups.

    2. The SecSpec shall ensure that access to any shared DBMS software installation account is restricted to authorized personnel only.

    3. The SecSpec shall ensure that use of a shared DBMS software installation account is logged and/or audited to indicate the identity of the person who accessed the account.

10.8.4.6  (02-21-2008)
Data Warehouses

  1. Data warehouses leverage underlying database technologies and therefore shall comply with the guidance of this IRM and other applicable IRMs for the specific database technology used. Security requirements and controls will be more important in a data warehouse environment because, by definition, a data warehouse contains data consolidated from multiple sources, and thus from the perspective of a malicious individual trying to steal information a data warehouse can be one of the most lucrative targets in the enterprise.

10.8.4.6.1  (02-21-2008)
Privacy Requirements

  1. The SecSpec shall ensure that data warehouses protect taxpayer and employee privacy rights in accordance with IRM 10.8.1.

  2. Federal taxpayer information (defined according to IRC 6103) shall be kept separate from other information to the maximum extent possible. In situations where separation is not practical, the data shall be protected as if were entirely federal taxpayer information. The SecSpec shall ensure that such protections are implemented.

10.8.4.6.2  (02-21-2008)
Data Warehouse Administrator Responsibilities

  1. A data warehouse administrator is a database administrator (DBA) who manages a data warehouse and therefore assumes the same responsibilities of a DBA with the exception of the additional responsibilities identified in this section. IRS management shall identify and appoint data warehouse administrator whose responsibility it is to protect the data warehouse from unauthorized access and modification.

    1. The data warehouse administrator shall control access to data and limit user access to the level of individual records in the database table required by users’ job functions in accordance with the Access Control and Discretionary Access Control requirements of IRM 10.8.1.

    2. The data warehouse administrator shall identify and document all planned user of the data warehouse.

    3. The data warehouse administrator shall identify, document, and enforce procedures for detecting, reporting, and correcting data anomalies before the data warehouse is made available to end users.

    4. The data warehouse administrator shall identify operational storage thresholds and offload warehouse data to tape or optical disk as necessary.

10.8.4.6.3  (02-21-2008)
End-to-end Data Security Requirements

  1. A data warehouse environment consists of much more than just a database and must be properly secured at each component. The entire environment ranges from the extraction of data from operational system, transportation of this data to the data warehouse, the possible distribution of this data to data marts and other analytic servers, and finally the dissemination of this data to end-users.

    1. The confidentiality, integrity, and availability of a data warehouse shall be ensured according to IRM 10.8.1 and this IRM.

    2. Files used to populate the data warehouse shall be stored in a secure location.

    3. The data warehouse shall provide access controls to ensure that only authorized external operational systems can provide data to the data warehouse and data marts.

    4. The data warehouse shall provide the capability to assess the quality of the source system data during extraction, transformation, and loading of data into the warehouse.

    5. Data warehouse data shall not be modifiable by end users and shall be set to read only.

10.8.4.7  (03-21-2008)
Deviations

  1. Deviations from this policy shall be submitted in accordance with IRM 10.8.1 and use Form 13125, as described in the deviation Standard Operating Procedures (SOPs) provided on the MITS Cybersecurity web site.

  2. Refer to IRM 10.8.1 and the MITS Cybersecurity website for additional information.

Exhibit 10.8.4-1  (02-21-2008)
Appendix A: RELATED PUBLICATIONS

DBMS Vendor Publications:

  1. Oracle 9i, Installation Guide, Release 2 (9.2.0.1.0) for UNIX Systems: AIX-Based Systems, Compaq Tru64 UNIX, HP9000 Series HP-UX, Linux Intel, and Sun Solaris, May 2002, Part No. A96167-01.

  2. Oracle 9i, Database Installation Guide Release 2 (9.2.0.1.0) for Windows, May 2002, Part No. A95493-01.

  3. Oracle 9i Enterprise Edition, Installation Guide, Release 1 (9.0.1) for OS/390, May 2001, Part No. A89900-01.

  4. Oracle 9i Net Services, Reference Guide, Release 2 (9.2), October 2002, Part No. A96581-02.

  5. Oracle 9i, Database Administrator’s Guide Release 1 (9.0.1) for Windows, June 2001, Part No. A90164-01.

  6. Oracle 9i, Administrator’s Reference, Release 2 (9.2.0.1.0) for UNIX Systems: AIX-Based Systems, Compaq Tru64 UNIX, HP 9000 Series HP-UX, Linux Intel, and Sun Solaris, May 2002, A97297-01.

  7. Oracle 9i Enterprise Edition, System Administration Guide Release 2 (9.2.0.1.0) for OS/390, May 2002, Part No. A97313-01.

  8. Oracle 9i, Security Overview, Release 1 (9.0.1), June 2001, Part No. A90148-01.

  9. Hack Proofing Oracle, Howard Smith, Oracle Corporation UK Limited, Paper presented at the Oracle Open World Conference, San Francisco, CA, October 2000.

  10. A Security Checklist for Oracle 9i, An Oracle White Paper, March 2001, Author: Rajiv Sinha.

  11. IBM DB2 Universal Database, Administration Guide: Implementation, Version 8

  12. IBM DB2 Universal Database, Installation and Configuration Supplement, Version 8.

  13. IBM DB2 Universal Database, Federated Systems Guide, Version 8.

  14. IBM DB2 Connect, Connect User’s Guide, Version 8.

Other Publications:

  1. The Center for Internet Security, Level Two Benchmark (Draft) SQL Server 2000, V0.6.

  2. The Center for Internet Security, Oracle Security Benchmark, V1.1, May 2004.

  3. SANS "Securing Oracle Step-by-Step" , January 2003.

Exhibit 10.8.4-2  (02-21-2008)
Appendix B: ORACLE SPECIFIC POLICY AND IMPLEMENTATION

B.1 Current Oracle Version

  1. The information contained in this appendix is specific to Oracle Versions 8.1.x (8i), 9.2 (9i) and 10.1.0 (10g). When version-specific information is presented, it shall be labeled with the version to which it specifically applies.

  2. Any Oracle products installed shall be authorized by the Distributed Systems Software Branch (DSSB), which manages the IRS Enterprise-wide license. Oracle support is provided through this branch.

    1. The DAA shall ensure products are current with the support of DSSB.

    2. The DBA shall ensure that the Oracle version has all patches applied as directed by DSSB.

B.2 Oracle Component Services

  1. A default installation of Oracle includes the installation of several Oracle components. All of these components may not be required by your system. Review installed components and remove any components you do not need. For example, if you are not using JAVA, XML, InterMedia, Replication, etc., components, then remove them by using the Oracle installer. The Oracle components in the list below are required for standard Oracle database operation. Components other than those in the table below shall be removed unless specifically required to support the operation of any database applications. Oracle components listed below that are not required to support the operations of the specific Oracle instance shall be removed.

    Default Oracle Database Components Subject to Removal:

  1. Assistant Common Files

  2. Generic Connectivity Common Files

  3. Generic Connectivity Using Open Database Connectivity (ODBC)

  4. Oracle Net

  5. Oracle Net Listener

  6. Oracle Net Manager

  7. Oracle Net Required Support Files

  8. Oracle Core Required Support Files

  9. Oracle Call Interface

  10. Oracle9i/8i/10g

  11. Oracle9i/8i/10g Database

  12. Oracle9i/8i/10g Development Kit

  13. Parser Generator Required Support Files

  14. Programming Language / Structured Query Language (PL/SQL)

  15. PL/SQL Embedded Gateway

  16. PL/SQL Required Support Files

  17. Platform Required Support Files

  18. RDBMS Required Support Files

  19. Required Support Files

B.3 Oracle Access Controls

  1. Access controls of database objects are an integrated feature of the Oracle DBMS. Oracle defines two types of database accounts: administrative and non-administrative. Administrative database accounts are granted full privileges to manage the database structure, database objects, and other database accounts.

  2. Privileges are divided into two types—system privileges and object privileges. System privileges permit the database account to exercise administrative functions. Object privileges permit the database account to read, modify, and delete data within already existing objects or execute application program objects. Access to data objects may be further controlled by use of database views. Views define a subset of stored data that may be accessed by database accounts. Database accounts may also be further restricted to updates and inserts on specific columns instead of entire rows. Also, using Oracle’s fine-grained access control, access policies may be defined and associated with tables and views that allow retrieval of subsets of rows. This eliminates the requirement to grant database accounts access to all rows in a table or view and is enforced at the database level as opposed to being controlled through the application. Oracle also provides the ability to define an application context. The application context activates access controls for only the specified application. The combination of fine-grained access and application context constitutes Oracle’s Virtual Private Database (VPD).

  3. Database account access to resources is controlled through use of Oracle profiles. Profiles define database account resource quotas and password management guidelines.

B.3.1 Oracle Identification and Authentication

  1. Oracle supports the following authentication options:

    1. Oracle’s own Database Authentication, which is password-based

    2. Operating System Authentication (by the underlying operating system)

    3. Network Service Authentication

    4. Global Authentication (includes SSL and directory services)

    5. N-Tier or Proxy Authentication that supports proxy authentication to the database

B.3.1.1 Database Authentication

  1. Database authentication by the Oracle database requires use of a password. Oracle stores account passwords in encrypted format within the database. Oracle supports individual database accounts for each user. The table that stores database passwords is restricted from direct access by non-DBA database user accounts. The logon process to Oracle database accounts is encrypted by default.

B.3.1.2 Operating System Authentication

  1. Operating system authentication shall NOT be enabled via the network. When operating system authentication is specified, users shall be required to authenticate to the database host system prior to connecting to the database.

  2. Windows authentication allows Windows domain accounts to access the database as locally authenticated users. However, in order to increase security, Oracle shall be configured to require use of the domain name to prevent users with the same account name in different domains to access the database as a shared account.

  3. Users authenticated externally by Windows shall be identified with the domain name prefix.

  1. The DBA shall configure the Oracle database to require the Windows domain prefix for database accounts authenticated externally by Windows.

  2. The DBA shall set the registry value OSAUTH_PREFIX_DOMAIN in HKEY_LOCAL_MACHINE\/SOFTWARE\/ORACLE\/HOMEID to TRUE on Windows DBMS hosts for database versions prior to 8.1.x using Windows authentication.

B.3.1.3 Network Service Authentication

  1. The Oracle Advanced Security option enables secure authentication by external third-party network services such as Kerberos, token cards, smartcards, and biometric devices. Many network authentication services also offer integration with directory services. The DBA and SecSpec shall only permit the use of Network Service Authentication where strong identification and authentication is in place and individual user identities are maintained in the database audit process for such users.

B.3.1.4 Global Authentication

  1. Oracle defines global authentication as authentication via SSL and an external, centralized directory service. Database accounts are then defined as global users. These network authentication services provide a single sign-on capability that can authorize single user access to multiple systems and databases. Users authenticate themselves once to a central service, and may then connect to multiple applications or databases without providing additional credentials. The DBA and SecSpec shall only permit the use of Net Global Authentication where strong identification and authentication is in place and individual user identities are maintained in the database audit process for such users.

B.3.1.5 N-Tier or Proxy Authentication

  1. Users accessing a database through a middle-tier or web application server can authenticate in one of the following ways:

    1. Authenticate the user to the middle-tier server and have the middle-tier server authenticate to the database using a single logon for all users or an individual logon for each user using the individual credentials.

    2. Authenticate to a global source from the middle-tier server that relays the user authentication credentials directly to the database. Authentication occurs via a directory service to the middle tier and database. This procedure shall only be implemented where the OCI can preserve the individual identity and authorization within the database.

    3. Authenticate directly to the database through the middle-tier server. This procedure shall only be implemented where the OCI can preserve the individual identity and authorization within the database.

  2. Although commonly in use, the first configuration listed above using a single logon for all users is the least secure because it does not allow for individual accountability within the database. To allow a middle-tier server to authenticate a user and preserve that user’s individual identity and authorizations within the database, Oracle provides the OCI.

B.3.2 Oracle Connection Pooling

  1. Where connection pooling is desired to an Oracle database, the DBA shall only implement Oracle’s connection pooling. Connection pooling allows multiple users access to a database system across a shared connection. The use of a shared connection reduces the traditional amount of database server resources required to establish multiple individual connections. Oracle’s connection pooling facility is additionally able to preserve individual user accountability across the pooled connection.

  2. Third-party connection pooling mechanisms shall not be implemented . Third-party connection pooling mechanisms require use of a single, specific database account connection. Use of a single account precludes any ability for the database to manage authorizations or provide individual accountability for actions taken within the database. Where connection pooling is required, Oracle’s connection pooling facility should be considered for use.

B.3.3 Secure Distributed Computing

  1. The DBA shall deny use of fixed user database links.

  2. The DBA shall restrict access to the SYS.LINK$ table to authorized DBAs only.

B.3.4 Oracle Administrative Connections

  1. Password file authentication shall not allow remote users access to the database as an administrative user. Password file authentication allows remote users to access the database as an administrative user. Prior to version 9i, Oracle allowed access to the SYS database account using the "connect internal" authentication. This access was granted to authenticated host accounts that were members of the host-specific operating system group (SYSDBA or ORADBA). Use of this account does not allow for individual accountability. Furthermore, actions performed as database account SYS or when administrators connect "AS SYSDBA" or "AS SYSOPER" are not audited by Oracle's auditing facility in Oracle versions earlier than 9.2.

  2. Oracle administrative connections (SYS, "connect internal," as SYSDBAISYSOPER) shall only be used to perform administrative functions available exclusively to an administrative connection. The Oracle administrative connection shall not be used to perform everyday operations.

  3. The use of administrative connections shall not be allowed for automated procedures or utilities that perform automated functions for the DBA. The ability to authenticate to the database with an administrative connection shall be restricted to authorized DBAs. Examples of appropriate operations requiring use of an administrative connection include installation, database creation, backup and recovery, database startup, and database shutdown.

  4. A password file shall not be used unless remote database administration is required. In such cases, its use shall be authorized and documented by the SecSpec. If remote administration is required, the password file shall be used in exclusive mode. Exclusive mode requires individual account authentication and restricts assignment of database administrative privileges to accounts granted the SYSDBA privilege. Where remote administration is required, a password file shall be used in exclusive mode. The DBA shall ensure that Oracle administrative connections are used solely to perform administrative functions available only through an administrative connection. The DBA shall ensure that the ability to authenticate to the database with an administrative connection is restricted to authorized DBAs.

B.3.5 Oracle Administrative OS Groups

  1. The SA shall ensure that only authorized DBAs are granted membership to the Oracle administrative OS group.

  1. The SA shall ensure that only authorized DBAs are granted membership to the Oracle administrative OS group.

B.3.6 Default Oracle Accounts

  1. Access to the default Oracle accounts and their associated passwords shall be restricted to authorized DBAs only. Default accounts, particularly the SYS and SYSTEM accounts, shall be used only for database update and maintenance. Default accounts shall not be used for daily operations except for automated procedures that require use of the SYS or SYSTEM schema. Such automated procedures shall be documented with the SecSpec. Default accounts created for demonstration applications shall be removed.

  2. The SYS account is the owner of all Oracle data dictionary objects. Oracle default accounts shall not be used as the owner of any non-default application schema. Administration personnel shall not use Oracle default accounts for daily operations. No individual accountability is provided when multiple users use shared accounts. Individual accounts with administrator privileges shall be maintained for each DBA for performing administrative functions on the database.

  3. Each DBA shall log on using their individual account to perform everyday administrative functions on the database, thus providing an audit record of all activity. Oracle default accounts shall be locked and expired when not required for daily operation of the database.

  4. Default accounts created for demonstration applications shall be removed.

  5. The DBA shall:

  1. ensure that access to the default Oracle accounts and their associated passwords is restricted to authorized DBAs.

  2. ensure that default accounts are used only for database installation, update, and maintenance.

  3. ensure that the default accounts are not used as the owner of any application schema outside their default function.

  4. not use the Oracle default accounts for standard DBA operations.

  5. ensure that an individual account with administrator privileges is maintained for each DBA performing everyday administrative functions on the database.

  6. lock and expire Oracle default accounts when they are not required for regular operation of the database.

  7. remove default database accounts and objects created for demonstration applications.

B.3.7 Default Oracle Passwords

  1. The default passwords for accounts created during Oracle database creation shall be changed after installation. A list of known default accounts is listed in B.3.7.4. A more complete list may be found in Exhibit F, Oracle Database IRM Compliance Configuration. A database may be created multiple times for the purposes of complete database reorganization. Default account passwords shall be changed each time a database is created.

  2. Following is a list of Oracle accounts reported by Oracle to not allow password modification if product operation is to be maintained:

    • ODSCOMMON (present for Oracle Internet Directory (OID))

    • AURORA$JIS$UTILITY$, AURORA$ORB$UNAUTHENTICATED

    • OSE$HTTP$ADMIN, PORTAL30_SSO

    • PORTAL30_SSO_PUBLIC

  3. Please see Oracle Metalink Note 234712.1 for detailed information. Use of default passwords for these accounts does not require a deviation until Oracle updates the software to allow for modification of the passwords. Once Oracle allows the passwords to change for the accounts, then the passwords shall be altered.

  4. ORACLE DEFAULT ACCOUNTS

    • ADAMS

    • AURORA$JIS$UTILITY$

    • AURORA$ORB$UNAUTHENTICATED

    • BLAKE

    • CLARK

    • CTXSYS

    • DBSNMP

    • HR

    • JONES

    • LBACSYS

    • MDSYS

    • OE

    • OLAPDBA

    • OLAPSVR

    • OLAPSYS

    • ORDPLUGINS

    • ORDSYS

    • OSE$HTTP$ADMIN

    • OUTLN

    • PM

    • OS

    • OS_ADM

    • OS_CB

    • OS_CBADM

    • OS_CS

    • OS_ES

    • OS_OS

    • OS_WS

    • SCOTT

    • SH

    • SYS

    • SYSTEM

  5. The DBA shall change all default Oracle account passwords immediately after installation where changing the password will not disable database operations.

B.3.8 Oracle Password Management Requirements

  1. Oracle Version 8 and later provides password management capability. The default password management settings in Oracle do not meet IRS requirements; therefore password settings must be manually configured to meet IRS policy and the password specifications. See See IRM 10.8.4.5.1.2(1).Password Guidelines section of this IRM for further detail. The password management settings shall be applied to all database account profiles defined in the database.

    • The DBA shall configure Oracle password management settings, using database user profiles and the utlpwdmg.sql script, to adhere to IRS password policy.

    • The DBA shall configure all Oracle database user profiles, including the default profile, to adhere to IRS password policy.

B.4 Oracle Authorizations

  1. The DBA shall use the most secure method to assign privileges by assigning a single object owner for all objects accessed by a single application as the default method. All procedures and functions supporting the application shall have the same owner and use definer's rights. This negates the requirement to assign a long and potentially complicated list of privilege assignments to the objects. If database objects referenced in a procedure or function have multiple owners, then the owner of the procedure must have all object privileges assigned directly to them. Frequently, these privileges require the WITH GRANT OPTION in addition to the simple access assignment such as in the case where a view references tables owned by multiple users. The alternative to procedures compiled using definer's rights is to specify use of invoker's rights. Invoker's rights use the rights assigned to the account executing the procedure or function. Both direct and indirect privileges are recognized. However, invoker's rights may become complicated when calls are made from one owner's procedure to procedures or functions owned by other accounts.

  2. The application designer will coordinate with the DBA during the design phase of any database application to ensure proper privileges are allotted to the application before implementation. The privileges required for application users to successfully execute an application must be designed at application development time. If privilege assignment is not taken into account during the design phase, there may be no solution to privilege assignments at variance with the requirements of this IRM. These cannot be rectified at the database assignment level without disabling the application.

B.4.1 Oracle Predefined Roles

  1. A role groups several privileges together so that they can be granted and revoked simultaneously from database accounts. Oracle creates by default several predefined roles. These roles are created and maintained by Oracle and should not be used to assign privileges to custom database accounts with the exception of the DBA role. Oracle may at their discretion assign privileges to default roles that are not required by custom roles. It is the responsibility of the DBA to ensure that no unnecessary privileges are granted to custom database accounts. Therefore, assignment of Oracle predefined roles shall be restricted to Oracle default accounts with the exception of the DBA role.

  2. Following is a list of Oracle predefined roles:

    • AQ_ADMINISTRATOR_ROLE

    • AQ_USER_ROLE

    • CONNECT

    • CTXAPP

    • DELETE_CATALOG_ROLE

    • EXECUTE_CATALOG_ROLE

    • EXP_FULL_DATABASE

    • GLOBAL_AQ_USER_ROLE

    • HS_ADMIN_ROLE

    • MP_FULL_DATABASE

    • JAVADEBUGPRIV

    • JAVAIDPRIV

    • JAVAIDPRIV

    • -JAVAUSERPRIV

    • JAVA_ADMIN

    • JAVA_DEPLOY

    • OEM_MONITOR

    • OLAP_DBA

    • RECOVERY_CATALOG_OWNER

    • RESOURCE

    • SELECT_CATALOG_ROLE

    • WKADMIN

    • WKUSER

    • WM_ADMIN_ROLE

B.4.2 System Privileges

  1. Oracle system privileges are used to grant elevated privileges within the database. The system privileges in question are listed in Section B.13.6.3, and relate to the creation and modification of DBMS system-wide resources such as procedures, libraries, roles, and tablespaces. The DBA shall ensure that these privileges are only granted to database administrators unless a deviation is requested and approved. Application administrators and non-interactive application processing accounts may be granted the minimum privileges to create and maintain application user database accounts and resources (such as indexes) essential to the proper functioning of an application. Oracle system privileges shall not be granted to PUBLIC under any circumstances. Refer to IRM 10.8.1 for production environment requirements.

    • The DBA shall ensure that Oracle system privileges are not granted to PUBLIC.

    • The DBA shall restrict the assignment of the Oracle system privileges to DBAs, application installation accounts, and application processing accounts in a production environment.

    • The DBA shall ensure that system privileges that allow administrative functions on objects other than those owned by the account (the " ANY" system privileges) are not granted to application developer accounts.

B.4.3 Object Privileges

  1. The alter, index, and references object privileges are the only object privileges that grant permissions to make system-wide modifications to database objects. The alter, index, and references object privileges shall not be granted to any application user account, application administrator account or application role. No application object privileges shall be granted to PUBLIC. Oracle recommends that unnecessary default privileges assigned to PUBLIC be revoked. All object privileges shall be revoked from PUBLIC and granted as necessary to custom application roles.

  1. The DBA shall restrict assignment of the alter, index, and references object privileges to DBAs, object owners, and predefined roles.

  2. The DBA shall ensure that alter, index, and reference privileges are not granted to application developer accounts in a production database.

  3. The DBA shall ensure that application object privileges are not granted to PUBLIC.

  4. The DBA shall revoke the following object privileges assigned to PUBLIC:

    • Execute on UTL_SMTP

    • Execute on UTL_TCP

    • Execute on UTL_HTTP

    • Execute on UTL_FILE

    • Execute on DBMS_RANDOM

    • Execute on DBMS_LOB

    • Execute on DBMS_ SQL

    • Execute on DBMS_JOB

    • Execute on DBMS_BACKUP_RESTORE

    • Execute on DBMS_OBFUSCATION_TOOLKIT

B.4.4 Administration of Privileges

  1. Application user database accounts, application administrator accounts, application developer accounts, or application roles shall not have the administration option of any system privilege.

  2. Application user database accounts, application administrator accounts, application developer accounts, or application roles shall not have the grant option of any object privilege.

  3. Application user database accounts, application administrator accounts, application developer accounts, or application roles shall not have the administration option of any Oracle predefined role.

  4. The administration option of any role shall be granted only to DBAs and application administrator accounts.

    • The DBA shall restrict the assignment of the administration option of any system privilege to DBAs.

    • The DBA shall restrict the assignment of the grant option of any object privilege to DBAs and application object owner accounts.

    • The DBA shall restrict assignment of the administration option of any Oracle predefined role with the exception of the AQ_ADMINISTRATOR_ROLE to DBAs.

    • The administration option cannot be removed from this role. The DBA shall restrict assignment of the administration option of any application role to DBAs and application administrator accounts.

B.5 Oracle Replication

  1. Oracle replication configuration requires that a specific database account (usually named REPADMIN) be created and granted specific system privileges. This account is used to manage and administrate the replication functions. Other roles of the replication account include Propagator and Receiver. The DBA shall ensure that only a single replication administration account shall be used to perform all roles. The REPADMIN account may be directly granted the system privileges listed below on the master site database. A replication administration account must be created for each database involved in replication. The privileges required by the REPADMIN to configure and administrator the entire replication environment are automatically assigned via the DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA.

  2. Access to the REPADMIN account shall be restricted to authorized DBAs. The REPADMIN account shall not be granted system privileges other than the following:

  3. The DBA shall restrict access to the REPADMIN to authorized DBAs.

  4. The DBA shall configure a single replication administration account to be used to perform all replication functions.

B.6 Network Security

B.6.1 Encrypting Oracle Network Logins

  1. Oracle password information in a connection request shall be encrypted. This is automatically handled when transmitting over a network by Oracle version 9.02 and later. In versions earlier than 9.02 were set to FALSE resulting in failed logon attempts being retried and passwords being sent in the clear. In versions earlier than 9.02, the DBA shall set the following parameters on each client and database server:

    • Set the ORA_ENCRYPT_LOGIN environment variable to TRUE on the client machine.

    • Set the DBLINK_ENCRYPT_LOGIN server initialization parameter to TRUE on the server.

    • The DBA shall ensure that Oracle passwords are encrypted when transmitted over a network connection.

    • The SecSpec shall ensure that the Oracle environmental variable ORA_ENCRYPT_LOGIN is set to TRUE on Oracle client workstations.

    • The DBA shall set the server initialization parameter DBLINK_ENCRYPT_LOGIN to TRUE.

B.6.2 Protecting Database Network Communications

  1. The DBA shall ensure that integrity and confidentiality protections of network communication are employed. As mentioned elsewhere in this document, administrative connections that may contain confidential information such as account password changes and shall be protected by encryption.

  2. Financial data such as credit card information, personnel data such as social security number and birth date, or other sensitive information requires increased protection when being transmitted across the network. Whenever such data is transmitted, it shall be encrypted in accordance with IRM 10.8.1.

  3. The sensitivity of the data should be reviewed and network communication protection configured in accordance with IRM 10.8.1.

  4. If the network is not protected commensurate with data sensitivity requirements, the DBA shall work with the SA and they shall work with Enterprise Networks to implement an appropriate encryption solution.

B.6.3 Oracle Listener Security

B.6.3.1 Oracle Listener Security Overview and Checklist

  1. The default configuration of Oracle listener software is a major source of vulnerabilities on current and previous versions of the Oracle DBMS. The following configuration changes shall be applied to IRS Oracle installations and are detailed in the following sections:

    • The default name of the Oracle listener in the listener.ora file shall be changed to a distinct name following standards defined by DSSB.

    • Passwords shall be assigned for all Oracle listeners.

    • Oracle listener administration restrictions shall be implemented.

    • Oracle EXTPROC functionality shall be disabled if it is not explicitly required to support a business application.

    • The Oracle listener configuration file shall use IP addresses instead of host names.

    • Database administrative connections shall be protected.

    • On Unix platforms, the listener process shall be configured to run under an OS account different than the OS account used to run the DBMS instance processes.

B.6.3.2 Listener Password

  1. The DBA shall control the two settings for administrative access to the listener -the Security setting (the PASSWORDSJistener_name parameter in the listener.ora file), which indicates a password must be provided in order to perform administrative functions shall be set to ON; and the ADMIN_RESTRICTIOND_listener_name listener.ora parameter that enables/disables the ability to modify the listener.ora file from the LSNRCTL utility while the listener is running shall be disabled and enabled by the SA only as required.

  2. No password is set on the listener by default. A listener password shall be set. Failing to set a password on the listener could result in unauthorized users starting, stopping, and configuring the listener service. The password shall be stored in encrypted format within the listener.ora file. This is accomplished by using the change_password function of the LSNRCTL utility.

B.6.3.3 Listener Administration Restrictions

  1. The Oracle listener by default allows dynamic configuration via the LSNRCTL utility. Dynamic configuration leaves the listener vulnerable to unauthorized modification should the listener not be protected by a password or should the password be compromised. Dynamic configuration shall be disabled by specifying the parameter ADMIN_RESTRICTIONS = ON in the listener.ora file for all listeners. This shall require that any configuration changes be made to the listener through direct edits to the listener.ora file.

    1. The DBA shall enable the ADMIN_RESTRICTIONS_listener_name parameter in the listener.ora file.

    2. The SA shall restrict access to the listener.ora file per the DBA.

B.6.3.4 Listener Access to External Procedures

  1. Oracle provides access to executables run by the host OS by means of the Oracle EXTPROC component. The EXTPROC component has a known vulnerability that allows unauthenticated access via the Oracle Listener. If not required, the EXTPROC component shall be disabled. This may be done through removal of the executable from the host system or by configuration of the listener. If required, a separate, dedicated listener shall be created for exclusive use of the EXTPROC and network address restrictions to it shall be strictly enforced. Use of the EXTPROC component shall be justified in lifecycle documentation.

    1. The DBA shall disable the Oracle EXTPROC module if it is not required.

    2. The DBA shall configure a dedicated listener with appropriate address restrictions for the EXTPROC module if that component is required.

    3. The DBA shall configure TCP/IP address restrictions on systems that require use of the Oracle EXTPROC module.

      Note:

      Address information will need to be provided by either the SA or by the Enterprise Networks staff.

B.6.3.5 Listener Network Address Restrictions

  1. In a Windows and UNIX environment, access to the database from the network can be restricted based on TCP/IP network address. This restriction is defined in the SQLNET.ORA (PROTOCOL.ORA file for Oracle 8i) file. The parameter tcp.validnode checking=YES enables address restrictions. The parameter tcp.invited_nodes defines TCP/IP addresses that are allowed to connect and tcp.excluded_nodes defines TCP/IP addresses that are refused connections to the database. TCP/IP address restrictions shall be defined on systems unless such restrictions are not feasible.

    • The DBA shall configure Oracle listeners to restrict access by network address.

B.6.3.6 Encryption of Remote Administrative Access

  1. Network connections made to databases using privileged database accounts including DBAs and other accounts with system privileges shall be encrypted using DBMS-provided functionality. The remote privileged users should configure a separate, dedicated Oracle listener to restrict and provide remote access to administrators. Refer to the NSA Guide to the Secure Configuration and Administration of Oracle 9i Database Server for more information on configuring encrypted network access to the database. An alternative for UNIX systems is to access the database server via SSH and access the database via a local session on the host.

    • The DBA shall ensure that Oracle database administrative connections across the network are encrypted.

B.6.3.7 Listener Port Assignment

  1. IRS requires standard port usage to better support firewall and intrusion detection monitoring. Therefore, Oracle default ports shall be used to support Oracle network communications when traversing network firewalls.

  2. By default, Oracle random ports may be assigned to individual network connections when shared server or multi-threaded server is used on UNIX platforms for Oracle versions earlier than 9i. Oracle always assigns random ports unless specifically disabled on both 8i and 9i versions of Oracle for Windows. Random port assignment shall be disabled. This may be accomplished in the UNIX environment by either specifying DISPATCHERS=’’ in the init.ora file or by listing specific ports in the DISPATCHERS parameter in the init.ora file. In the Windows environment, random port assignment is disabled by adding the value HTLM\/Software\/Oracle\/Home<ID#>\/use_shared_socket=TRUE where ID# is the ID number assigned to a specific Oracle Home on the Oracle host system.

    • The DBA shall ensure that random port assignment to network connections is disabled when traversing network firewalls.

B.6.3.8 Listener Inbound Connection Timeout

  1. The listener.ora parameter INBOUND_CONNECTION_TIMEOUT_listener in Oracle version 9i and later and CONNECT_TIMEOUT_listener in Oracle 8i and earlier, control the amount of time the listener waits for a network client to complete the connection request. This limit prevents the listener from consuming and holding resources for client connection requests that do not complete. A malicious user could use this to flood the listener with requests that result in a denial of service to authorized users. The DBA shall ensure a connection timeout limit with the minimum appropriate for the application shall be specified in the listener.ora and the database server stentorian I only) files. The expertism stentorian parameter probes for dead connections and terminates them when found. This setting does cause a slight increase in network traffic. The stentorian expertism shall be set to greater than 0.

    • The DBA shall configure the INBOUND_CONNECT_TIMEOUT_listener or CONNECT_TIMEOUT_listener parameter to be greater than 0 in the database server sqlnet.ora files.

    • The DBA shall configure the sqlnet.expire_time parameter to be greater than 0 in the database server sqlnet.ora file.

B.6.3.9 Change of Listener Process Owner

  1. On Unix hosts, the OS account that runs listener processes shall be changed from its default account owner (the Oracle software installation OS account) to a different OS account. Additional guidance on this topic is provided in Section B.16.1.2.1.

B.6.4 Oracle XML DB Protocol Server

  1. The Oracle XML DB Protocol Server offers access to the Oracle XML DB resources using the standard Internet protocols FTP, HTTP, and WebDAV. This allows direct access to Oracle XML resources without the need for special or additional software. The Oracle XML DB Protocol Server is a specific type of Oracle shared server dispatcher and is specified in the Oracle database initialization parameter file for startup. Other Oracle XML DB Protocol Server configuration parameters are specified in the XML schema based XML resource named xdbconfig.xml. If access to the XML DB Protocol Server via the Internet protocols is not required, then they shall be disabled. If access via the Internet protocols is required, logging shall be enabled by setting the log-level for all enabled protocols to log, at a minimum, unsuccessful logins.

    • The DBA shall disable the Oracle XML DB Protocol Server if it is not required.

    • The DBA shall enable logging for all protocols enabled on the XML DB Protocol Server.

B.7 Oracle Intelligent Agent/Oracle Enterprise Manager (OEM)

  1. The Oracle Intelligent Agent is used by the Oracle Enterprise Manager (OEM) to provide centralized database management both locally and remotely. Remote administration of databases is not prohibited, however, the enabling of remote administrative connections to the database introduces vulnerabilities to local databases, and hence requires mitigating controls. Administrative connections across the network are required to be encrypted (see See Exhibit 10.8.4-2. B.6.3.6) in order to protect sensitive information such as passwords from being disclosed. The Oracle Intelligent Agent, because it offers administrative action on the local database and is available via the network, is vulnerable to attack and therefore shall be disabled on all Internet-accessible IRS DBMS systems. Remote administration may still be performed using allowed protected local sessions such as VPN or protected dial-up connections to a local host account that has DBA privileges to the database.

    • The DBA shall disable the Oracle Intelligent Agent on databases accessible to the Internet.

B.8 Oracle Account Protections

  1. Oracle accounts shall be so that system tablespace are restricted to use by the Oracle database system operation and maintenance. Oracle database accounts, with the exception of Oracle default accounts, shall not specify the system tablespace as their default or temporary tablespace. In Oracle versions 9i and later, a default temporary tablespace shall be defined and used. Such a default temporary tablespace ensures that objects identified as temporary objects are automatically removed from the database upon database session termination. Application user and application administration database accounts shall have all tablespace quotas set to 0, for the reasons explained in the Application User Database Accounts section of this IRM (namely, that these accounts are prohibited from creating database objects).

    • The Oracle DBA shall ensure that non-default Oracle database accounts do not specify the SYSTEM tablespace as the default or temporary tablespace.

    • The Oracle DBA shall configure a default temporary tablespace in Oracle databases version 9i and later.

    • The DBA shall ensure that application user and application administrator accounts have all quotas on all tablespaces set to 0 Oracle accounts shall be so that systemrotections.

B.8.2 Idle Time in Oracle

  1. In Oracle, the session inactivity time shall be set through profiles by specifically setting the idle time within the profile ( See IRM 10.8.4.5.4.7. Database Session Inactivity Time Out, for time out requirements). This means that every Oracle database account shall be assigned to a profile and the idle time setting within each profile shall be set to 15 minutes or less.

  2. Oracle automatically creates the default profile and assigns all Oracle database accounts to this profile, unless they are manually assigned to another profile at creation. The default profile shall be modified so the idle time setting is set to 15 minutes or less. If any other profiles are created, they, too, shall be set to 15 minutes or less unless required for operation of specific functions. Specific functions requiring an extended idle time shall be documented in the life cycle. c. The ALTER PROFILE SQL statement shall be used to change the idle_time resource under the default profile. The initialization parameter, RESOURCE_LIMIT, shall be set to TRUE, and the database restarted, before the resource values for any profiles shall affect any and all database accounts.

    • The DBA shall configure an idle time limit for all database accounts through the use of profiles.

  3. The DBA shall configure all idle time limits to a max 15 minutes unless authorized otherwise

    • The DBA shall configure the Oracle DEFAULT profile for the required idle time, max 15 minutes.

    • The DBA shall ensure that all database accounts such as N-Tier connection accounts, connection pooling accounts, and non-interactive or batch processing accounts that require an unlimited idle time are justified and documented in appropriate ELC documentation.

B.8.3 SESSIONS_PER_USER in Oracle

  1. Current policy does not require a DBA to limit the number of sessions that a database account has open at any time. The SESSIONS_PER_USER setting can be a valuable way to control the number of connections that any particular database account has open at anyone time. The DBA shall consult with the application owner and fix a limit on the open sessions allowed on any database. This parameter shall be set in the profile of all application user database accounts and modified in the default profile. Setting this parameter too low for a database application that requires multiple sessions can prevent it from functioning properly. In the case of an application that allows multiple users to connect with a single database account, too Iow a value for SESSIONS_PER_USER could prevent subsequent application users from connecting. The DBA shall consult with the application owner to determine an appropriate number of connections to be open in light of user experience. Hence, the value of SESSIONS_PER_USER shall be selected appropriately to support the application.

B.9 Oracle ARCHIVELOG Mode

  1. The Oracle ARCHIVELOG mode allows databases to be recovered after failure to a specific point in time by archiving redo log files. If ARCHIVELOG mode is not enabled, then recovery of Oracle databases may only be recovered to the time when the database was last backed up. ARCHIVELOG mode is appropriate for dynamic or transaction oriented database systems, but not necessarily so for databases that store relatively static data. The DBA shall enable ARCHiVELOG mode.

B.10 Securing SQLPlus Commands

  1. The Oracle SQLPlus application provides a means to enter SQL statements directly to the Oracle database. Accounts with access to this application may connect to the database and exercise their full privileges as granted to their database account. Oracle offers a way to limit access to SQL commands entered in the SQLPlus application by establishing the Product User Profile. The SYSTEM account shall create the PRODUCT_USER_PROFILE table by running the pupbld.sql script. At a minimum, the SQLPlus HOST command that allows access to the database host system commands shall be restricted to authorized DBAs.

    • The DBA shall use the SYSTEM database account to create the PRODUCT_USER_PROFILE table by running the pupbld.sql script.

    • The DBA shall restrict access to the SQL*Plus HOST command to authorized DBAs.

B.11 Protection of Database Stored Procedures

  1. Oracle provides the WRAP Utility to encrypt the source code of stored PL/SQL procedures and functions. However, the utility does not encrypt string or numerical literals, variable names, or table and column names. It does not encrypt passwords stored in these procedures or functions. The WRAP utility shall be used to encrypt custom and GOTS application code stored in the database. Variable values shall be obscured by using concatenated values. Account names and passwords and other sensitive data shall not be hard coded in the PL/SQL code. Instead, store usernames and passwords in encrypted form within a protected database table.

    • The DBA shall ensure that custom and GOTS application code objects of type FUNCTION, PROCEDURE, and PACKAGE BODY stored in the database are encrypted using the Oracle WRAP Utility

    • Application developers shall retrieve password values using PL/SQL code that decrypts passwords from encrypted data in database tables, rather than hard coding passwords in PL/SQL scripts

B.12 Oracle Trace Utility

  1. The Oracle Trace Utility, otrace, is used to collect performance and resource utilization data. Such data collection can have a negative impact on database performance and disk space usage. Use of the utility shall be restricted to the DBAs responsible for the database(s) on the system.

B.13 Auditing in Oracle

  1. This section describes how to enable auditing on an individual database. The minimum level of auditing shall be enabled for every database on all machines. Minimum auditing shall include:

    • All modifications of the data

    • All deletions of the data

    • All creation of tables, indexes, views, procedures, or triggers

    • All execution of programs or queries against the data or database

B.13.1 Oracle Audit Monitoring

  1. The following Oracle audit and error log files shall be reviewed in accordance with the audit monitoring requirements listed in the Audit Data Review section of this IRM. Information found in the v_$resourcelimit table shall be monitored with the audit monitoring requirements listen in the Audit Data Review section of this IRM.

  • Alert log file (location specified in BACKGROUND_DUMP_DEST initialization parameter)

  • Listener log file (location in $ORACLE_HOME/network/log directory)

B.13.2 Database Auditing

  1. The database table AUD$ is owned by the SYS account by default and shall be used to capture and store audit information. Privileges to delete, update, or insert directly into the audit table shall be restricted to auditors and DBAs. Access to this table shall be restricted to DBAs or security auditors. The DBA or security auditor may delete information from this table after performing maintenance backups. When stored externally to datafiles, the datafiles shall be protected by the operating system. Access to the external audit files shall be granted in accordance with the applicable operating system IRM.

  • The DBA shall restrict access to the AUD$ table to DBAs and/or security auditors.

  • The DBA/SA shall restrict access to the external audit files to security auditors, SAs, and DBAs.

B.13.3 AUD$ Table Location and Ownership

  1. By default, the AUD$ table resides inside the SYSTEM tablespace and is owned by SYS. Although not supported by Oracle, the DBA shall move the AUD$ table to a dedicated tablespace and onto a separate disk which improves security and can improve Oracle performance. The DBA shall move the AUD$ audit data table, please do so as prescribed in Oracle Document ID 72460.1. It may be necessary to move the audit table back to the SYSTEM tablespace to support upgrades or backup and recovery operations. Ownership of the AUD$ table shall be restricted to a protected database account such as SYS or SYSTEM. Access to the protected account shall have the same restrictions as the SYS and SYSTEM accounts.

  • The DBA shall configure the AUD$ table to be owned by a protected database account.

B.13.4 Enabling Auditing

  1. The DBA shall enable Oracle auditing. The initialization parameter AUDIT_TRAIL shall be set to TRUE, DB, or OS depending on the operating system and the target storage area.. Setting the initialization parameter to TRUE or DB shall store audit records in the AUD$ table within the database. Setting the initialization parameter to OS shall store records in an operating system audit file. The directory name for this OS file shall be specified in the AUDIT _FILE_DEST initialization parameter on host systems other than Windows. On Windows hosts, the audit trail data directed to the OS is stored in the Windows event logs.

  2. The DBA shall set the Oracle audit trail parameter to AUDIT _ TRAIL=TRUE or AUDIT _ TRAIL=DB or AUDIT _ TRAIL=OS.

B.13.5 Mandatory Auditing

  1. Once auditing is enabled at the database level, the following system privilege and object auditing shall be enabled. All auditing shall be done BY ACCESS. Access auditing means that audit records are generated each time an audited privilege is used or an audited statement is issued. Auditing by access may generate more audit records than audit by session; however, it does not impact database performance as much since each audit event does not trigger a search through the audit trail for the same action as does audit by session. The mandatory auditing requirements are meant to capture only changes to the data dictionary or database structure or privilege assignment events. Please note that in production systems, few actions that generate audit records should occur. Database objects and structure are typically static. Data access and modification auditing should be decided during application design and implemented as an application requirement.

    • The DBA shall configure all auditing to be recorded BY ACCESS.

B.13.5.1 Statement Auditing

  1. The statement auditing options specified in the list below titled "Oracle Statement Audit Requirements" shall be implemented in production DBMS systems that process sensitive taxpayer data. The audit options shall be enabled by issuing the following SQL audit statements:

    • AUDIT ALL;

    • AUDIT ALL;

    • AUDIT SYSDBA;

    • AUDIT SYSOPER;

    • AUDIT ALTER SEQUENCE;

    • AUDIT ALTER TABLE;

    • AUDIT COMMENT TABLE;

    • AUDIT GRANT DIRECTORY;

    • AUDIT GRANT PROCEDURE;

    • AUDIT GRANT SEQUENCE;

    • AUDIT GRANT TABLE;

    • AUDIT GRANT TYPE;

  2. The following SQL statements shall disable audits set by the commands above that are not required:

    • NOAUDIT EXECUTE ANY LIBRARY;

    • NOAUDIT EXECUTE ANY PROCEDURE;

    • NOAUDIT EXECUTE ANY TYPE;

    • NOAUDIT EXECUTE LIBRARY;

    • NOAUDIT LOCK ANY TABLE;

    • NOAUDIT SELECT ANY SEQUENCE;

    • NOAUDIT SELECT ANY TABLE;

    • NOAUDIT UPDATE ANY TABLE;

    • NOAUDIT DELETE ANY TABLE;

    • NOAUDIT EXECUTE ANY INDEXTYPE;

    • NOAUDIT EXECUTE ANY OPERATOR;

    • NOAUDIT INSERT ANY TABLE;

    • NOAUDIT NETWORK;

    • NOAUDIT DELETE TABLE;

    • NOAUDIT INSERT TABLE;

    • NOAUDIT UPDATE TABLE;

    • NOAUDIT EXECUTE PROCEDURE;

    • NOAUDIT SELECT TABLE;

    • NOAUDIT SELECT SEQUENCE.

  3. ORACLE STATEMENT AUDIT REQUIREMENTS

    The following audit statements shall be set as auditable by the DBA:

    • ALTER ANY CLUSTER DIMENSION

    • ALTER ANY DIMENSION DIRECTORY

    • ALTER ANY INDEX DROP ANY CLUSTER

    • ALTER ANY LIBRARY DROP ANY DIMENSION

    • ALTER ANY OUTLINE DROP ANY DIRECTORY

    • ALTER ANY PROCEDURE DROP ANY INDEX

    • ALTER ANY ROLE DROP ANY LIBRARY

    • ALTER ANY SEQUENCE* DROP ANY OUTLINE

    • ALTER ANY SNAPSHOT* DROP ANY PROCEDURE

    • ALTER ANY TABLE DROP ANY ROLE

    • ALTER ANY TRIGGER DROP ANY SEQUENCE

    • ALTER ANY TYPE DROP ANY SNAPSHOT

    • ALTER DATABASE DROP ANY SYNONYM

    • ALTER PROFILE DROP ANY TABLE

    • ALTER RESOURCE COST DROP ANY TRIGGER

    • ALTER ROLLBACK SEGMENT DROP ANY TYPE

    • ALTER SEQUENCE DROP ANY VIEW

    • ALTER SESSION DROP PROFILE

    • ALTER SYSTEM DROP PUBLIC DATABASE LINK

    • ALTER TABLE DROP PUBLIC SYNONYM

    • ALTER TABLESPACE DROP ROLLBACK SEGMENT

    • ALTER USER DROP TABLESPACE

    • ANALYZE ANY DROP USER

    • AUDIT ANY ENQUEUE ANY QUEUE

    • BACKUP ANY TABLE FORCE ANY TRANSACTION

    • BECOME USER FORCE TRANSACTION

    • CLUSTER GLOBAL QUERY REWRITE

    • COMMENT ANY TABLE GRANT ANY PRIVILEGE

    • COMMENT TABLE GRANT ANY ROLE

    • CONTEXT GRANT DIRECTORY

    • CREATE ANY CLUSTER GRANT PROCEDURE

    • CREATE ANY DIMENSION GRANT SEQUENCE

    • CREATE ANY DIRECTORY GRANT TABLE

    • CREATE ANY INDEX GRANT TYPE

    • CREATE ANY LIBRARY INDEX

    • CREATE ANY OUTLINE MANAGE ANY QUEUE

    • CREATE ANY PROCEDURE MANAGE TABLESPACE

    • CREATE ANY SEQUENCE NOT EXISTS

B.13.5.2 Object Auditing

  1. Object auditing audits events related to a specific object. The following auditing option applies to specific objects and shall be enabled by a DBA. Some applications may require additional object auditing options as specified by the application.

  2. In addition to auditing for specific events, Oracle provides the capability of setting a default audit option for all objects. All objects created after a default has been defined, shall be audited for the default audit event. All application objects shall be audited for RENAME. The RENAME audit option shall be set as the default for all objects. The RENAME audit option shall be set for all existing application objects.

    • The DBA shall enable the object auditing option RENAME for all application objects.

B.13.5.3 System Privilege Auditing

  1. The DBA shall audit the permissions to issue data definition language data definition language (DDL) statements that modify the data dictionary and effect system wide changes. The DBA shall audit these privileges:

  • ADMINISTER DATABASE TRIGGER

  • ADMINISTER RESOURCE MANAGER

  • ALTER ANY [ CLUSTER | DIMENSION | INDEX | INDEXTYPE | LIBRARY ]

  • ALTER ANY [ OUTLINE | PROCEDURE | ROLE | SEQUENCE | SNAPSHOT ]

  • ALTER ANY [ TABLE | TRIGGER | TYPE ]

  • ALTER [DATABASE | OPERATOR | SNAPSHOT | PROFILE ]

  • ALTER [RESOURCE COST | ROLLBACK SEGMENT | SESSION ]

  • ALTER [SYSTEM | TABLESPACE | USER | SESSION ]

  • ANALYZE ANY

  • AUDIT [ANY | SYSTEM ]

  • BACKUP ANY TABLE

  • BECOME USER

  • COMMENT ANY TABLE

  • CREATE ANY [ CLUSTER | CONTEXT | DIMENSION | DIRECTORY | INDEX ]

  • CREATE ANY [ INDEXTYPE | LIBRARY | OPERATOR | PROCEDURE ]

  • CREATE ANY [ SEQUENCE | SNAPSHOT | SYNONYM | TABLE | TRIGGER ]

  • CREATE ANY [ TYPE | VIEW ]

  • CREATE [ CLUSTER | DATABASE LINK | DIMENSION | INDEXTYPE ]

  • CREATE [ LIBRARY | OPERATOR | PROCEDURE | PROFILE ]

  • CREATE [ PUBLIC DATABASE LINK | PUBLIC SYNONYM | ROLE ]

  • CREATE [ ROLLBACK SEGMENT | SEQUENCE | SESSION | SNAPSHOT ]

  • CREATE [SYNONYM | TABLE | TABLESPACE | TRIGGER | TYPE | USER ]

  • DEQUEUE ANY QUEUE

  • DROP ANY [ CLUSTER | CONTEXT | DIMENSION | DIRECTORY | INDEX ]

  • DROP ANY [ INDEXTYPE | LIBRARY | OPERATOR | PROCEDURE ]

  • DROP ANY [ SEQUENCE | SNAPSHOT | SYNONYM | TABLE | TRIGGER ]

  • DROP ANY [ TYPE | VIEW ]

  • DROP [ PROFILE | PUBLIC DATABASE LINK | PUBLIC SYNONYM ]

  • DROP [ROLLBACK SEGMENT | TABLESPACE | USER ]

  • ENQUEUE ANY QUEUE

  • EXTENDS ANY TYPE*

  • FORCE ANY TRANSACTION

  • FORCE TRANSACTION

  • GLOBAL QUERY REWRITE

  • GRANT ANY PRIVILEGE

  • GRANT ANY ROLE

  • MANAGE ANY QUEUE

  • MANAGE TABLESPACE

  • QUERY REWRITE

  • RESTRICTED SESSION

  • UNLIMITED TABLESPACE

The DBA shall ensure that all DBMS system privileges are audited.

B.13.6 Audit Trail Maintenance

  1. The Oracle audit trail shall be maintained periodically. The audit data shall be exported and then purged routinely. The SYSTEM table space where the audit trail is located shall be checked routinely to ensure that free space is available for the audit trail table to grow. If space is not available (the AUD$ table has consumed all of it), then all activity upon the DBMS shall stop until space is made available by the DBA. The sizing of the audit trail tablespace and the maintenance of the audit trail shall be specific to each database instance.

    • The DBA shall ensure that audit data is maintained in accordance with IRM 10.8.1 and IRM 10.8.3.

B.13.8 Redo Log Files

  1. Online redo log files contain records of all changes made to the database as they occur. They are critical to the recovery of a failed database instance. In order to protect online redo log files from disk failures, redo log files shall be multiplexed by defining a minimum of two redo log file groups configured with a minimum of two file members each. The file members for each redo log file group shall be located on separate physical disks. For example, the first file member from each group shall be placed on one physical disk and the second file member from each group shall be placed on a separate physical disk.

    • The DBA shall configure a minimum of two Oracle redo log file groups on separate physical disks or RAID 5 or 1 disks, with a minimum of two members each, for each database.

B.13.9 Database Files

  1. Datafiles contain the actual database data. Placing datafiles on separate physical disks isolates disk contention between applications as well as allows for discrete OS file protections. Additionally, they shall be placed on separate physical disks from redo log files to allow for recovery in the event of disk failure. However, when redo logs are multiplexed, this is not necessary.

B.14 Optimal Flexible Architecture (OFA)

  1. File location and host system file structure is configured by default at Oracle installation to comply with Oracle’s Optimal Flexible Architecture (OFA). The OFA defines naming conventions and file structures for housing the three types of Oracle files— administrative files (configuration files, export files, and script files), product or software files (database executables), and database files (datafiles, control files, and redo log files). The OFA structure provides a foundation for a more manageable, more efficient, better performing, and more reliable database system. All Oracle installations shall conform to the OFA unless a deviation is filed for a particular instance.

  2. Oracle does not provide OFA guidelines for Oracle installations on the OS/390 platform; however, instance naming standards, database file naming standards, and tablespace naming standards shall still be followed.

B.14.1 Instance Naming Standards

  1. The system identifier of a database using the Oracle DBMS is referred to as the Oracle SID. To allow for portability of the applications across multiple operating systems, Oracle recommends that the instance name be between four and eight characters long. Unless technically infeasible because of third party or COTS software, this convention shall be implemented. If third-party or COTS software recommends a certain naming standard, follow their recommendation, however, when possible change the default SID of third party software from the default which may be well known.

  2. Production database instance names or Oracle SIDs shall not include a version number, Oracle-related or otherwise. Production database instance names or Oracle SIDs shall not use the default of ORCL.

    • The DBA shall not include a version number, Oracle-related or otherwise, in production database instance names or Oracle SIDs.

    • The DBA shall not use the default name of ORCL for production database instance names or Oracle SIDs.

    • The DBA shall not use the default SID of third party applications unless it cannot be changed.

B.14.2 Tablespaces

  1. The use of dedicated tablespaces for different applications reduces the possibility of contention of disk storage. The USER tablespace or similar tablespace should be designated as the default tablespace for DBA’s and developers. Application objects shall be located in separate, dedicated tablespaces created for each application.

    • The DBA shall locate the application segment(s) in separate, dedicated tablespace(s).

B.14.3 Oracle UNIX Specific OFA Standards

  1. Optial Flexible Architecture (OFA) is a clear set of standards for handling multiple databases and multiple versions of Oracle on the same machine. This standard naming convention shall be used by IRS DBAs.

B.14.3.1 Oracle UNIX Directory Structure Standards

  1. Oracle files may be categorized into three types of files—administrative, product/software, and database files. These categories of files require specific storage and access requirements on the host system. Administrative files include database initialization and configuration files, log files, export files, and other types of database output files. Product/software files include database server executables and executables for other applications that support the DBMS . Database files include the database control, redo log, and datafiles. On UNIX systems, a minimum of four mount points shall be defined. One mount point is for the administration and application software and three are for database files.

  2. Database file mount points are used to separate datafiles based on I/O contention, backup requirements, and lifespan considerations. Mount point names shall follow the format of /pm where p is a fixed string constant and m is a unique identifier such as sequential numbering. No Oracle files shall be located on the same OS file system as the core OS itself.

  3. The ORACLE_BASE directory, defined by a UNIX account environment variable, is used as the parent directory for all Oracle product installations. The OFA-compliant ORACLE_HOME directory naming follows the format /mount-point/standard directory name/oracle/version where the standard mount-point is as described above and the standard directory name is a UNIX standard directory name like "app." The ORACLE_HOME directory is used to store specific database version software. On OFA-compliant installations, it is a subdirectory under the ORACLE_BASE directory. The OFA-compliant ORACLE_HOME directory naming follows the format ORACLE_BASE/product/version where product denotes the database server product and version denotes the Oracle Database version. Full pathnames shall only be referenced in the files meant to store them such as the /etc/passwd and Oracle oratab files. Database-specific administrative files in an OFA-compliant system are stored under the $ORACLE_BASE/admin/database name directory.

  4. OFA guidelines currently are not supported in the Defense Information Infrastructure Common Operating Environments (DII COE) guidelines for UNIX. The directories to support the OFA guidelines can be established as soft links. The system can meet both OFA and DII COE requirements by placing a symbolic link or file stub in the default location that points to the OFA file locations. Site-specific (application specific) data should be located on separate mount points.

    • The DBA shall include the project name in the mount point of the project’s database files.

B.14.3.2 Oracle UNIX Datafile Location Standards

  1. All database files associated with a database instance shall reside in a directory structure, similar to the examples provided below. Site-specific (application-specific) datafiles shall be located on a separate mount point and these mount points shall be located on separate disk drives.

Example:

Datafiles associated with the client tablespaces for the application ACME supporting the location FB:

/u01/oradata/acmefb/client01.dbf

Example:

Datafiles associated with the index for the client tablespace for the application ACME supporting the location FB:

/u01/oradata/acmefb/client01.idx

B.14.4 Windows Specific OFA Standards

  1. OFA standards for Oracle on Windows and UNIX have the same main subdirectory structure and filenames. They differ in the root directory level names and in the method for defining variables. The ORACLE_BASE directory is located by default directly under the root of a disk partition and named X:\/ORACLE. The ORACLE_HOME directory, which supports a specific version or release of Oracle, is located directly under the ORACLE_BASE directory, for example, ORACLE_BASE\/ora90. Under the ORACLE_BASE directory are the ADMIN, ORACLE_HOME, and ORADATA directories. No Oracle files shall be stored on the same partition as the Windows operating system.

  2. On Windows, Oracle variables are defined in the registry rather than in environment variables. Also, Windows does not support symbolic links that allow UNIX systems to support an apparent single directory structure even though files may be on different physical disks.

B.14.5 Oracle OS/390 Specific Naming Standards

  1. Oracle’s Operating System Dependent Interface (OSDI) shall be configured on the OS/390 platform as described below.

B.14.5.1 OSDI Subsystem Naming Standard

  1. Under Oracle’s Operating System Dependent Interface (OSDI) architecture, a single subsystem may support multiple instances. The OSDI subsystem must have a unique one to four-character name. The subsystem name shall be used as the command prefix for OSDI commands. Oracle recommends that the subsystem name also be used as the OSDI command prefix.

B.14.5.2 OSDI Service Naming Standards

  1. OSDI service names are used as the OS/390 jobname for the service unless otherwise specified. To ensure that the OSDI services are run under JES and not the master subsystem, OSDI service names shall be unique from any OS/390 subsystem names. OSDI jobnames shall use the OSDI service name. OSDI database service names shall be used as the Oracle system identifiers (SID) and must follow requirements for Oracle instance naming. A single OSDI network service may support all connections to and from all from all database services on the host system. The network service name should indicate that it is a network and not a database service.

    • The SA, with the support of the DBA, shall configure the OSDI service names to be unique from any OS/390 subsystem names.

    • The SA, with the support of the DBA, shall configure OSDI jobnames to use the OSDI service name.

    • The SA, with the support of the DBA, shall use the OSDI database service names as the Oracle SID and shall follow requirements for Oracle instance naming.

B.15 Initialization Parameters

  1. This section covers Oracle Initialization parameters that have security impacts and the parameters that shall be set for security to operate. This section is not intended to cover all Oracle Initialization parameters. All initialization parameters listed below must be specified for all Oracle instances.

B.15.1 AUDIT_TRAIL

  1. The AUDIT_TRAIL parameter specifies where the Oracle database writes the audit trail information. The valid values are TRUE, DB, and OS. This parameter may be placed anywhere in the parameter file after the parameter.

    • The DBA shall set the AUDIT_TRAIL parameter audit_trail=TRUE, audit_trail=DB, or audit_trail=OS

B.15.2 RESOURCE_LIMIT

  1. The RESOURCE_LIMIT parameter specifies whether or not enforcement of resource limits is enabled. If not enabled, the required idle time limits would not be enforced. The default value for this parameter is FALSE, the required value for this parameter is TRUE.

  • The DBA shall set the RESOURCE_LIMIT parameter to TRUE

B.15.3 REMOTE_OS_AUTHENT

  1. The parameter REMOTE_OS_AUTHENT, when set to TRUE, allows the authentication of remote clients by the host operating system. The default value for this parameter is FALSE. This parameter shall remain set to FALSE because of the risk of an impersonation attack (impersonating a valid OS node), otherwise known as spoofing. The required value for this parameter is FALSE.

    • The DBA shall set the REMOTE_OS_AUTHENT parameter to FALSE

B.15.4 REMOTE_OS_ROLES

  1. The parameter REMOTE_OS_ROLES, when set to TRUE, allows operating system roles to be used from remote clients. The required value for this parameter is FALSE. Roles on a DBMS shall be locally defined and shall implement specific business purposes defined by the ELC documentation of the ELC project that uses the DBMS.

    • The DBA shall set the REMOTE_OS_ROLES parameter to FALSE

B.15.5 OS_ROLES

  1. The parameter OS_ROLES, when set to TRUE, allows operating system roles to be used. The required value for this parameter is FALSE. Role information must be stored, managed, and protected in the database rather than files external to the DBMS.

    • The DBA shall set the OS_ROLES parameter to FALSE

B.15.6 DBLINK_ENCRYPT_LOGIN

  1. The parameter DBLINK_ENCRYPT_LOGIN, when set to TRUE, prevents unencrypted passwords from being sent to remote servers. This parameter is supported only for backwards compatibility to Oracle database versions 6 and 7. All attempts between later versions are always encrypted. This parameter has been unsupported as of Version 9, Release 2 (9.2). The default value for this parameter is FALSE, the required value for this parameter is TRUE.

    • The DBA shall set the DBLINK_ENCRYPT_LOGIN parameter to TRUE for database versions 9.0.1 and earlier

B.15.7 SQL92_SECURITY

  1. The initialization parameter SQL92_SECURITY when enabled or set to TRUE, specifies that SELECT privileges are required during an UPDATE or DELETE function when a where clause specifying column values is present. When set to false, UPDATE and DELETE privileges allow SELECT actions in such cases. Distinct SELECT privileges shall be required on all tables where select statements are performed. The SQL92_SECURITY parameter shall be set to TRUE.

    • The DBA shall set the SQL92_Security parameter to TRUE

B.15.8 UTL_FILE_DIR

  1. The parameter UTL_FILE_DIR was added to support Oracle packages that allow the reading and writing of external text files to an operating system file. This parameter, if used, shall be set to a specific operating system directory where application procedures/programs can read and write files. This means the directory shall exist and have the permissions correctly set to allow Oracle background processes to write to the directory. Errors shall result if this initialization parameter is used on a directory to which Oracle cannot read/write. If this parameter is set to a "*" value, then all directories are allowed read/write access. The UTL_FILE_DIR parameter shall not be set to a "*" value. Use of a OS mount point, reserved for third party application data and separate from the mount points used for DBMS data files, is recommended when Oracle UTL_FILE_DIR functionality is used.

  2. The Oracle software OS account will require read and write access to any directories used for UTL_File_DIR access. Note that the UTL_FILE_DIR parameter may be set to multiple values. Privileges for the UTL_FILE package in the database shall not be granted to PUBLIC.

    • The DBA shall set the UTL_FILE_DIR parameter to a specific operating system directory or directories. This directory shall exist and have the permissions set so Oracle background processes may read/write to this directory

    • The DBA shall ensure the UTL_FILE_DIR parameter is not set to "*"

    • The DBA shall deny access to the UTL_FILE package to PUBLIC

B.15.9 07_DICTIONARY_ACCESSIBILITY

  1. The 07_DICTIONARY_ACCESSIBILITY parameter controls SYSTEM privileges. If the parameter is set to TRUE, access to objects in the SYS schema is allowed. If this parameter is set to FALSE, SYSTEM privileges that allow access to objects in other schemas do not allow access to objects in the dictionary or SYS schema. When the 07_DICTIONARY_ACCESSIBILITY=FALSE, then the SELECT ANY TABLE privilege allows access to views or tables in any schema except the SYS schema.

    • The DBA shall set 07 DICTIONARY ACCESSIBILITY=FALSE.

  2. The system privilege EXECUTE ANY PROCEDURE would allow access to procedures in any schema except the SYS schema. If you need to access objects in the SYS schema, then you must be granted the explicit object privilege. The following roles that can be granted to the DBA also allow access to dictionary objects:

    • SELECT_CATALOG_ROLE

    • EXECUTE_CATALOG_ROLE

    • DELETE_CATALOG_ROLE

    • Only the DBA shall have EXECUTE ANYPROCEDURE set to TRUE.

B.15.10 REMOTE_LOGIN_PASSWORDFILE

  1. The REMOTE_LOGIN_PASSWORDFILE initialization parameter specifies whether Oracle uses a password file and, if in use, how many databases can use the password file. Setting the parameter to NONE signifies that Oracle should ignore any password file meaning that administrative access is granted by virtue of membership in the specified operating system Oracle DBA group. Setting the parameter to EXCLUSIVE signifies that the password file can be used by only one database. The password file requires remote DBAs to use their own individual DBA accounts to authenticate to the database for administrative database operations. Setting the parameter to SHARED allows more than one database to use the password file, however, the only account recognized by the password file is the SYS account.

    • The DBA shall set the REMOTE LOGIN PASSWORDFILE parameter to EXCLUSIVE or NONE, for both Real Applications Clusters and single instance DBMS installations.

    • If remote database administration is required then the REMOTE_LOGIN_PASSWORDFILE parameter shall be set to EXCLUSIVE. Remote database administration requires use of DBMS encryption functionality. A dedicated administrative listener that accepts connections from a limited number of IP addresses is recommended to further monitor and protect remote database administration activities.

  2. You can create a password file using the password file creation utility ORAPWD, or for selected operating systems you can create this file as part of your standard installation. You can also reference your operating system-specific Oracle documentation for information on using the installer utility to install the password file. The types of filenames allowed for the password file are operating system specific. Some platforms require the password file to be a specific format and located in a specific directory. Other platforms allow the use of environment variables to specify the name and location of the password file. See your operating system-specific Oracle documentation for the names and locations allowed on your platform.

    • The DBA shall protect the environment variable identifying the location of the password file.

    • The DBA shall adhere to the system-specific Oracle documentation for the names and locations for the password file for each database instance.

B.15.11 AUDIT_SYS_OPERATIONS

  1. The AUDIT_SYS_OPERATIONS initialization parameter introduced with Oracle version 9.2 enables auditing of actions performed by the SYS, SYSDBA, or SYSOPER accounts. When set to TRUE, actions performed as SYS or with a SYSDBA or SYSOPER connection are audited regardless of the AUDIT_TRAIL setting. The audit records generated are stored in the OS audit file in the $ORACLE_HOME/rdbms/admin directory or in the Windows event log. The AUDIT_SYS_OPERATIONS parameter shall be set to TRUE.

    • The DBA shall set the AUDIT_SYS_OPERATIONS parameter to TRUE on Oracle database versions 9.2 or later.

B.15.12 GLOBAL_NAMES

  1. The global names parameter value of TRUE requires that database links be defined with the same name as the database to which they connect. This prevents inadvertent connections to the wrong database and simplifies management of database links.

    • The DBA shall set the GLOBAL_NAMES parameter to TRUE.

B.15.13 _TRACE_FILES_PUBLIC

  1. This parameter is an internal Oracle DBMS parameter. The setting of _TRACE_FILES_PUBLIC = TRUE allows all database accounts access to trace files. TRACE_FILES_PUBLIC shall be set to FALSE.

    • The DBA shall set the _TRACE_FILES_PUBLIC parameter to FALSE.

B.15.14 MAX_ENABLED_ROLES

  1. The MAX_ENABLED_ROLES parameter specifies the number of roles that may be active for a single database session at one time. Setting this parameter may provide additional assurance that application roles are being enabled and disabled in accordance with design. The default value of this parameter is 30. Consider adjusting this to a lower value if it is appropriate for your application or environment.

    • The DBA shall adjust the MAX_ENABLED_ROLES to the lowest setting consistent with the required database operation.

B.15.15 REMOTE_LISTENER

  1. The REMOTE_LISTENER parameter causes the database to register with a listener located on a separate host machine. The configuration and management of the remote listener would be outside the security domain of the database host system. Remote listeners shall not be used.

    • The DBA shall set REMOTE LISTENER to FALSE.

B.15.16 AUDIT_FILE_DEST (UNIX Only)

  1. The AUDIT_FILE_DEST parameter specifies the directory where the Oracle database audit trail shall be written on the host system. The AUDIT_TRAIL=OS must be specified for this parameter to take effect.

    • The DBA shall specify a valid and protected directory for the AUDIT_FILE_DEST.

B.15.17 USER_DUMP_DEST

  1. The USER_DUMP_DEST parameter specifies the host directory where database session trace files are written. The USER_DUMP_DEST parameter shall be set to a valid and protected directory.

    • The DBA shall specify a valid and protected directory for the USER_DUMP_DEST.

B.15.18 BACKGROUND_DUMP_DEST

  1. The BACKGROUND_DUMP_DEST parameter specifies the host directory where the Oracle alert log and trace files for the Oracle background processes are written. The BACKGROUND_DUMP_DEST parameter shall be set to a valid and protected directory.

    • The DBA shall specify a valid and protected directory for the BACKGROUND_DUMP_DEST.

B.15.19 CORE_DUMP_DEST

  1. The CORE_DUMP_DEST parameter specifies the host directory where the Oracle core files are written. This parameter is applicable only for UNIX systems. The CORE_DUMP_DEST parameter shall be set to a valid and protected directory.

    • The DBA shall specify a valid and protected directory for the CORE_DUMP_DEST.

B.15.20 LOG_ARCHIVE_START

  1. The LOG_ARCHIVE_START parameter when enabled, starts redo log archiving at the time of instance startup. The database must be in archive log mode for this parameter to take effect.

    • The DBA shall enable the LOG ARCHIVE START parameter for all instances of ORACLE.

B.15.21 LOG_ARCHIVE_DEST

  1. This parameter requires that ARCHIVELOG mode be enabled on the database. If applicable, the DBA shall set this parameter to a valid and protected directory.

    • If ARCHIVELOG mode is enabled, the DBA shall set the LOG_ARCHIVE_DEST and LOG_ARCHIVE_DEST parameters to a valid and protected directory.

B.15.22 LOG_ARCHIVE_DUPLEX_DEST / LOG_ARCHIVE_DEST_n

  1. This parameter requires that ARCHIVELOG mode be enabled on the database. If applicable, the DBA shall set this parameter to a valid and protected directory.

    • If ARCHIVELOG mode is enabled, the DBA shall set the LOG_ARCHIVE_DUPLEX and LOG_ARCHIVE_DEST parameters to a valid and protected directory.

B.15.23 OS_AUTHENT_PREFIX

  1. The OS_AUTHENT_PREFIX by default is set to the value ‘OPS$’. If OPS$ is used as the OS_AUTHENT_PREFIX, then accounts created with the IDENTIFIED BY clause may authenticate to the database using either OS authentication (connect /) or using database authentication (connect username/password). Setting the OS_AUTHENT_PREFIX to a value other than ‘OPS$’ prevents an OS account from being able to access a database account by the same name without providing a password. The OS_AUTHENT_PREFIX parameter shall set to a value other than ‘OPS$’.

    • The DBA shall set the OS_AUTHENT_PREFIX to a value to other than "OPS$" .

B.16 Oracle Operating System Security Requirements

  1. The Oracle software is developed with a generic Oracle Kernel without regard for the target operating system. This ideology allows Oracle to be the same across all platforms with the only uniqueness being in the operating system specific shell code to provide access to the operating system. This section describes any and all deviations from published OS IRMs as well as OS-specific Oracle security guidance. All OS IRM issues shall not be addressed initially, but shall be added as discovered in testing and implementation of all operating systems.

    • The DBA shall verify that the shell code utilized in the implementation of an Oracle instance complies with the restrictions and deviations of published OS IRMs.

    • The DBA shall verify that any deviations from OS IRMs necessitated by Oracle security guidance are referred to the OS IRM responsible manager.

B.16.1 Oracle UNIX Specific Information

  1. This section describes Oracle required deviations from the published IRS UNIX IRM. Reference the IRS UNIX IRM for additional guidance.

    • The DBA implementing an Oracle instance on a UNIX OS shall only implement deviations published in the IRS UNIX IRM.

B.16.1.1 Oracle Operating System Software Owner Account

  1. The installation of Oracle on a UNIX host requires that a unique UNIX userid be created and configured. This account becomes the owner of all Oracle application and datafiles and shall be used only for the update and maintenance of the Oracle software. This account shall be locked when not in use. Individual DBAs shall use their individually assigned OS accounts for daily DBMS administration activities, and shall not use the Oracle software installation account for such activities. This allows auditing of all operations from an OS perspective and allows the Oracle auditing to audit actions performed with the correct OS account. Access to the Oracle OS account shall be restricted to site-authorized DBAs only. The Oracle software installation account shall not be a member of the root group.

    • The SecSpec shall ensure that the UNIX Oracle OS installation account is not used when performing daily DBA activities.

    • The SA shall restrict access to the UNIX Oracle OS installation account to site-authorized DBAs only.

    • The SA, with support from the DBA, shall configure all Oracle installation files and directories ownership to belong to the Oracle OS installation account.

    • The SA shall ensure that the Oracle OS installation account is not a member of the root group.

B.16.1.2 Oracle Process Owner Accounts

  1. Individual accounts created for the individual Oracle component processes allow for the separation of security controls on directories and files and accountability for events. Separate accounts shall be created for and used by the Oracle Listener, and the database process as well as the Intelligent Agent, if the Intelligent Agent is implemented in the instance.

    • The SA, with support from the DBA, shall create and use individual UNIX OS accounts for the Oracle database processes, the Oracle Listener, as well as the Intelligent Agent if the Intelligent Agent is implemented in the instance.

B.16.1.2.1 Changing the Listener Process Owner

  1. Heading B.16.1.2 mandates that Oracle listener processes be run from a different OS account than the OS account that owns Oracle database processes. This is not the default installation behavior of Oracle software products, so configuration modifications are required by the SA and DBA to accomplish this requirement.

    • The SA, with support from the DBA, shall configure OS startup scripts ("rc" scripts) to start the oracle listener processes using a different OS userid (e.g., "oralsnr" ) than that used by the DBMS processes (e.g., oracle10g).

    • The SA shall assign the password to the OS listener process owner account to the DBA for operational responsibility.

    • The DBA shall modify database startup/shutdown scripts to use "su" or "sudo" functionality to ensure that the OS listener process owner account (rather than the DBMS process owner account) is used for starting and stopping listener processes.

    • Oracle Intelligent Agent process is run under a different OS userid than that used by the DBMS processes.

B.16.1.2.2 Changing the Oracle Intelligent Agent Process Owner

  1. If Oracle Intelligent Agent software is run on a Unix DBMS host, the OS processes for the agent shall be run from a different OS account than the OS account that owns Oracle database processes.

    • The SA, with support from the DBA, shall configure OS startup scripts("rc" scripts) to start the oracle listener processes using a different OS userid (e.g., "oralsnr" ) than that used by the DBMS processes (e.g., oralsnr).

    • The SA shall assign the password to the OS listener process owner account to the DBA for operational responsibility.

    • The DBA shall modify database startup/shutdown scripts to use "su" or "sudo" functionality to ensure that the OS listener process owner account (rather than the DBMS process owner account) is used for starting and stopping listener processes.

B.16.1.3 Oracle UNIX Profile Requirements

  1. Every database user’s .profile file may be owned by the individual’s OS userid. The IRS UNIX IRM specifies this as an option. For database accounts, it may be advisable that the .profile be owned by the individual’s OS userid to allow the OS user to customize the DBMS required environment variables.

B.16.1.4 Non-Interactive/Automated Processing Database Accounts

  1. Access to database accounts used for non-interactive and automated processing frequently requires that the username and password be stored and transmitted. Any storage of database account passwords on any system shall be encrypted. On UNIX systems, the preferred method for encryption of a password within a file is by means of an application call such as the C language crypt function. Use of the UNIX crypt command to encrypt a file is not considered sufficiently secure, as the means to decrypt these files is widely known. If use of the crypt application function is not possible, then the UNIX crypt command shall be made more secure by compressing the file and encrypting it several times.

  2. In all cases, storage of the encryption key to the file and the application or batch file that encrypts the data shall be protected from unauthorized access by the operating system. Access to these files and keys shall be restricted to SAs and DBAs.

  3. Passwords shall not be stored unencrypted in UNIX environment variables.

  4. If possible, non-interactive/automated processing accounts shall use Oracle "identified externally" accounts (accounts that are authenticated by the host operating system) to connect to the database. These accounts eliminate the requirement to provide a separate username and password to authenticate to the database. These accounts may not be used for remote connections to the database.

    • The DBA shall ensure that passwords for non-interactive/automated processing database accounts are stored in encrypted format using a programming a FIPS 140-2 (or later) compliant encryption function.

    • The DBA shall ensure that passwords for non-interactive/automated processing database accounts are stored in encrypted format. An application encryption function using FIPS 140-2 (or later) compliant encryption shall be used.

    • The SA shall ensure that passwords are not stored unencrypted in UNIX environment variables.

    • The SA/DBA shall restrict access to files containing logon credentials and encryption keys to SAs and DBAs.

B.16.1.5 Oracle UNIX Groups

  1. The Oracle software owner shall have a umask setting of 022. SAs/DBAs shall change their umask settings to 022 when performing database operations. This allows for all actions performed by the DBA to inherit the correct umask setting for the underlying DBMS. The IRS UNIX IRM specifies the umask to be set at 077. Application user database accounts, application administrator accounts, or application developer accounts shall not be members of the UNIX DBA group(s).

    • The SA shall configure the Oracle software owner account to have a umask setting of 022.

    • The SA shall not make application user database accounts, application administrator accounts, or application developer accounts members of the UNIX DBA group(s).

B.16.1.6 Oracle File and Directory Ownership

  1. All files stored in the $ORACLE_HOME/bin directory shall be owned by the Oracle software installation account.

    • The SA/DBA shall ensure that all files stored in the $ORACLE_HOME/bin directory are owned by the Oracle software account.

B.16.1.7 Oracle File and Directory Permissions

  1. All permissions to files and directories that are created as the result of an installation of Oracle or stored in the $ORACLE_HOME directory shall be set to the recommended security settings of the Oracle installation guide or more restrictive. Accounts other than the Oracle software owner account and the DBA group should be denied access except to executables under the $ORACLE_HOME/bin directory as specifically required. These files and directories shall be secured by using access control methods native to the operating system.

  2. Some Oracle database files require that the suid bit be set. The suid bit must be set on the following files as required by the successful operation of Oracle. This requirement is in accordance with the IRS UNIX IRM.

    File Name Owner Group
    Dbsnmp Root Dba
    Oidldapd Oracle Dba
    Oracle Oracle Dba
    Table 9. ORACLE SUID FILES

  3. Oracle files shall not have the setgid bit enabled. Enabling the setgid bit on an executable file causes the file to execute using the permissions of the file’s group rather than the permissions of the OS account executing the file. Enabling the setgid bit on a directory causes all files created within the directory to be created with the group of the directory.

  4. Enabling the setuid bit on an executable file causes the file to execute using the permissions of the file owner rather than the permissions of the OS account executing the file and can cause the creation of unsecured files and unauthorized access. Oracle files with the setuid bit enabled shall be restricted to administrator usage only. Only the following executable files are required by Oracle to have the setuid bit enabled—dbsnmp, oidldapd, and oracle.

    • The SA/DBA shall set all directories created by the installation of the DBMS to Oracle’s recommended security settings or more restrictive. The SA shall disable the setgid bit on all Oracle files.

    • The SA shall restrict use of Oracle files with the setuid bit enabled to administrator usage only.

    • The SA shall restrict the enabling of the setuid bit to the following Oracle executable files—dbsnmp, oidldapd, and oracle.

B.16.1.8 Initialization Parameter Files

  1. Access to the Oracle initialization parameter files including INIT.ORA, INIT<SID>.ORA, and/or SPFILE.ORA shall be restricted to the Oracle owner and DBAs.

    • The SA/DBA shall restrict access to the Oracle initialization parameter file to the Oracle owner account and DBAs.

B.16.1.9 Remote Logon Password File Permissions

  1. Oracle stores the internal SYS password and the password of accounts granted the SYSDBA or SYSOPER role in the orapw<SID> file. Although the passwords are encrypted, access to this file shall be restricted to authorized DBAs. Read access to this file could allow someone to determine the internal or SYS password and would allow an unauthorized user access to Oracle.

    • The SA/DBA shall restrict access to the ORAPW<SID> file to the Oracle owner account and authorized DBAs.

B.16.1.10 Listener.ora File Permissions

  1. The permissions of the operating system file listener.ora, which houses listener configuration parameters and the listener password, shall be restricted to the Oracle software owner or the DBA OS user group. Read access to this file could allow someone to determine the listener service password and would allow an unauthorized user to start, stop, and configure the listener service. If a password has been set, the following entry shall be found in the file:

    • PASSWORDS_listener_name =

  2. The SA/DBA shall restrict access to the listener.ora file to the Oracle owner account, the Oracle TNSLISTENER service/process account, and authorized DBAs.

B.16.1.11 DBSNMP_RW.ORA and DBSNMP_RO.ORA File Permissions

  1. The SNMP_RW.ORA file contains the password for the DBSNMP database account in cleartext. The SNMP_RO.ORA file contains configuration information for the Oracle Intelligent Agent. Access to these files shall be restricted to the Oracle software owner account and DBAs. The lines in the DBSNMP_RW.ORA that present a security risk are the following:

    • SNMP.CONNECT. <sevice_name>.NAME=

    • SNMP.CONNECT.<sevice_name>.PASSWORD=

  2. The SA/DBA shall restrict access to the dbsnmp_rw.ora and dbsnmp_ro.ora files to the Oracle software owner account and authorized DBAs.

B.16.1.12 SQLNET.ORA File Permissions

  1. The SQLNET.ORA file contains network configuration information for the host database and listener. Unauthorized access to this file could result in compromised access to the database and/or the listener. Access to the database server SQLNET.ORA file shall be restricted to the Oracle software owner account and DBAs.

    • The SA/DBA shall ensure that access to the SQLNET.ORA file is restricted to the Oracle software owner account and DBAs.

B.16.1.13 Network Log and Trace File Protections

  1. SQLNet and Listener log and trace files may contain information useful for accomplishing unauthorized database access. Access to these files shall be restricted to the Oracle software owner account and DBAs.

  2. The SQLNET.ORA parameters 10g_directory_client, log_directory_server, trace_directory_server, and trace_directory_c1ient shall be set to a valid, protected directories.

  3. The LISTENER.ORA parameters log_file_listener and trace_directory_<listener name> shall be set to valid, protected directories. The LISTENER.ORA parameter logging_listener shall be set to the value ON. Access to the file designated in the LISTENER.ORA parameter trace_file_<listener name>_n shall be restricted to the Oracle software owner account and DBAs.

    • The SA/DBA shall ensure that access to the SQLNet and Listener log files is restricted to the Oracle software owner account and DBAs.

B.16.1.14 Oracle Critical File Management

  1. Access to the Oracle critical files listed below shall be restricted to the Oracle owner account and DBAs.

    • The SA/DBA shall ensure that access to the Oracle critical files shall be restricted to the Oracle owner account and DBAs.

B.16.2 Microsoft Windows Settings

  1. This section describes Oracle required deviations from IRS Microsoft Windows IRM security guidance. Reference the Windows IRMs for additional guidance.

    • The DBA shall conform to the deviations contained in sections 8.16.2.1 through 8.16.2.6.

    • Deviations other than those listed in 8.16.2.1 through 8.16.2.6 shall not be implemented.

B.16.2.1 Windows Oracle Installation

  1. The following guidance shall be observed when installing Oracle on Microsoft Windows platforms:

    • Oracle shall NOT be installed on a Windows domain controller under any circumstances; Windows servers used for Oracle shall be domain member servers or standalone servers.

    • The Oracle installation shall be on a server dedicated solely for Oracle database purposes; i.e., other database products or major applications unrelated to the Oracle software shall not be installed on an Oracle DBMS host.

    • Windows services unnecessary for the operation of Oracle shall be disabled.

    • All networking protocol stacks other than TCP/IP shall be removed from the OS, unless explicitly required for Oracle communication purposes.

    • Oracle services shall be run using a local (and not a domain) administrator account created specifically for Oracle whenever possible.

    • If the Oracle installation requires the used of domain resources (e.g., print services), the Oracle services shall be run using a restricted service account (i.e., a restricted domain user account). This account shall be a member of the local administrators group running the Oracle services. A domain administrator account shall not be used for running Oracle services.

    • If a domain restricted service account is used for running Oracle, that account shall be removed from the domain users group.

B.16.2.2 File Permissions

  1. The Oracle Windows Services are configured upon installation to use the Windows local SYSTEM account. Oracle recommends that Full Control access permissions to Oracle data and file directories be granted only to the Windows service account (SYSTEM). However, SAs, and DBAs may also require additional access to Oracle database files and directories for maintenance and update. Therefore, Full Control permissions may be granted to DBAs on Oracle directories and files. Application user OS accounts may be granted read access permissions to required Oracle application executables. The Everyone group shall not be granted access permissions to any Oracle database files or directories.

    • The SA with support from the DBA shall restrict Full Control permissions to Oracle database files and directories to the Oracle service account, SA accounts, and DBA accounts.

    • The SA with support from the DBA shall remove all permissions on any Oracle database files or directories from the Everyone group.

B.16.2.3 Registry Permissions

  1. The Oracle Windows service account (SYSTEM) shall be granted Full Control to the Oracle registry keys under HKEY_LOCAL_MACHINE\/SOFTWARE\/ORACLE.

B.16.2.4 Oracle Installation Log File

  1. If the database is created through the Oracle Database Assistant client application and the typical option is chosen, the Server Manager reports all activities to a log file called SPOOLMAIN.LOG. This log file contains the passwords in plain text and has file permissions that allow anyone to view it. This file shall be permanently deleted after a database install.

    • The SA shall permanently delete the log file SPOOLMAIN.LOG after database creation.

B.16.2.5 Non-Interactive/Automated Processing Database Accounts

  1. Access to database accounts used for non-interactive and automated processing frequently requires that the username and password be stored. Any storage of database account passwords on any system shall be encrypted. On Windows systems, passwords for these accounts may be stored in text or application files or in the Windows registry. These passwords stored in host system files of any type or the Windows registry must be stored in encrypted format using a FIPS 140-2 or later compliant encryption algorithm.

  2. In all cases, the encryption key, the encrypted password file or registry key, and the application or batch file that encrypts the data shall be protected by the operating system from unauthorized access. Access to these files and keys shall be restricted to the DBAs.

  3. Passwords shall not be stored unencrypted in Windows environment variables. If possible, non-interactive/automated processing accounts shall use Oracle "identified externally" accounts (accounts that are authenticated by the host operating system) to connect to the database. These accounts eliminate the requirement to provide a separate username and password to authenticate to the database. These accounts may not be used for remote connections to the database.

    • The DBA shall ensure that passwords for non-interactive/automated processing database accounts are stored in encrypted format using a programming FIPS 140-2 compliant encryption function when possible.

    • The SA shall ensure that database account passwords are not stored unencrypted in Windows environment variables.

    • The SA shall restrict access to files and keys containing passwords and encryption keys to SAs and DBAs.

B.16.3 OS/390 Specific Information

  1. This section describes Oracle required deviations from the published IRS OS/390 IRM as well as OS/390-specific security requirements. Reference the IRS OS/390 IRM for additional guidance.

  2. The DBA shall conform to the deviations contained in sections B.16.3.1 through B.16.3.5.

  3. Deviations other than those listed in B.16.3.1 through B.16.3.5 shall not be implemented.

B.16.3.1 Oracle Library Security

  1. Access to Oracle libraries shall be restricted to three types of users—the Oracle software installer who is typically a Systems Programmer; Oracle DBAs who are OS/390 user accounts with special privileges to Oracle resources; and general database accounts for OS accounts that require access to specific Oracle utility executables. Following is the list of the minimum access restrictions. Oracle Corporation provides a host based Resource Access Control Facility (RACF) access level recommendation for each partioned data set (PDS) used by the Oracle subsystem. Equivalent ACP authorization levels should be set for non-RACF installations.

    DATA SET DATABASE ACCOUNT DBA SYSTEMS PROGRAMMER
     
    oran.orav.AUTHLOAD None Execute Alter/Execute  
    oran.orav.CMDLOAD Execute Execute Alter/Execute  
    oran.orav.DOC None Read Alter/Update  
    oran.orav.DBA None Read Alter/Update  
    oran.orav.INSTLIB None Read Alter/Update  
    oran.orav.ISPCLIB None Read Alter/Update  
    oran.orav.ISPMLIB None Read Alter/Update  
    oran.orav.ISPPLIB None Read Alter/Update  
    oran.orav.ISPSLIB None Read Alter/Update  
    oran.orav.ISPTLIB None Read Alter/Update  
    oran.orav.MACLIB Read Read Alter/Update  
    oran.orav.PARMLIB None Alter/Update Alter/Update  
    oran.orav.SRCLIB Read Alter/Update Alter/Update  
    oran.orav.SQL Read Read Alter/Update  
    oran.orav.SQLLIB Read Read Alter/Update  
    Table 10. ORACLE OS/390 LIBRARY SECURITY  

    Note:

    oran.orav represents the high-level qualifier and second-level qualifier where the library is installed.

  2. The SA/DBA shall restrict access to Oracle libraries according to the list in 10.8.4-3 B16.3.1 at a minimum.

B.16.3.2 Oracle VSAM File Security

  1. The systems programmer shall own the Virtual Storage Access Method (VSAM) system data sets used by the Oracle subsystem. These data sets contain the control files, database files, and redo log files. Other access to these files shall be restricted to the Oracle database service userid.

    • The SA shall restrict access to the Oracle VSAM files to the Oracle database service userid and the systems programmer owner.

B.16.3.3 Security for Oracle MPM Installations

  1. This section describes Oracle required deviations from IRS Microsoft IBM IRM security guidance. Reference the IBM IRMs for additional guidance.

    • The DBA shall conform to the deviations contained in sections 8.16.3.3.1 through 8.16.3.3.6.

    • Deviations other than those listed in 8.16.3.3.1 through 8.16.3.3.6 shall not be implemented.

B.16.3.3.1 Oracle MPM Restricted Commands

  1. Oracle commands reside in the Oracle oran.orav.CMDLOAD library where oran is the high-level qualifier and orav is the secondary qualifier for the installed Oracle product version.

  2. Access to the following MPM commands shall be restricted to System Programmers and DBAs by removing them from the CMDLOAD library and move them to a restricted library or use program control to restrict access to the command procedures in the CMDLOAD library:

    • oran.oranv.CMDLOAD(CRTCNV) – Utility to convert CRT files into a load module format that can be used as input to the linkage editor

    • oran.oranv.CMDLOAD(MPMCMD) – Controls the operation of the Oracle subsystem. Every MPM parameter or command has an associated authority, which is SYS or ALL

    • oran.oranv.CMDLOAD(SVRMGRL) – This is a mpmparm privuser, which allows startup, shutdown, display, and connects internal actions against the database

  3. The SA shall restrict access to command procedures CRTCNV, MPMCMD, or SVRMGRL systems programmers and DBAs.

B.16.3.3.2 Oracle MPM User Logon Exit Point

  1. The Oracle user logon exit point uses the operating system to authenticate users to the Oracle database. When configured, the Oracle server invokes the user logon exit point each time a user attempts to log on to Oracle. Protection of authentication credentials (username and password) by exit logon modules requires verification with encryption.

    • The DBA shall deny use of User Logon Exit Points for authentication to the Oracle database unless they have been reviewed and verified to protect authentication credentials with encryption.

B.16.3.3.3 Oracle MPM User Role Exit Point

  1. Current Oracle database security guidelines as set forth in this document prohibit the assignment of database role membership outside of the database. Thus the DBA retains the sole authority and responsibility for assigning database authorizations. In accordance with this, user role exit points shall not be used by Oracle databases.

    • The DBA shall deny use of Oracle database user role exit points.

B.16.3.4 Security for Oracle OSDI Installations

  1. Oracle integration with OS/390 security features includes use of OS/390 resource profiles, Program Properties and APF authorizations, and association of OS/390 account identification with OSDI-defined services. Resource profiles for Oracle bind and administrative access protections shall be defined in a dedicated resource class named ORAB. Resource profiles for Oracle OSDI command access protections shall be defined in a separate dedicated resource class named ORAO.

    • The SA with support from the DBA shall create a dedicated resource class named ORAO for Oracle OSDI command access protection.

    • The SA with support from the DBA shall create a dedicated resource class named ORAB for Oracle BIND and administrative access (SYSDBA, SYSOPER) protection.

B.16.3.4.1 Access to the OSDI Subsystem

  1. Access to OSDI Subsystem commands is controlled by resource profiles defined during Oracle installation. Oracle resource profiles for OSDI subsystem commands shall be defined the ORAB dedicated resource class. Access to OSDI subsystem commands shall be restricted to system programmers (or consoles), DBAs, accounts by these resource profiles. The level of authorizations for OSDI commands shall be set as shown in the following table where ssn is the Oracle OSDI subsystem name selected at installation:

    COMMAND AUTHORIZATION LEVEL
     
    ssn.DEFINE Update  
    ssn.ALTER Control  
    ssn.SHOW Read  
    ssn.START Read  
    ssn.DISPLAY Read  
    ssn.DRAIN Read  
    ssn.RESUME Read  
    ssn.STOP Read  
    ORACLE OSDI SUBSYSTEM AUTHORIZATIONS  
    • The SA with support from the DBA shall define the resource profiles for the Oracle OSDI commands as listed in B.16.3.4.1 1).

    • The SA with support from the DBA shall restrict access to Oracle OSDI commands to system programmers, DBAs, and other SecSpec -authorized accounts.

    • The SA with support from the DBA shall assign levels of authorization to OSDI subsystem commands as listed in B.16.3.4.1).

B.16.3.4.2 Access to OSDI Services

  1. Two services are defined within the Oracle OSDI architecture: the database service or instance and the Oracle network service. Connections to these services are accomplished using OSDI bind processing that performs an authorization check when the connection is requested. Authorization permission is verified by checking the OSDI bind resource profiles. If resource profiles have not been defined for a service, then all binds from all address spaces are allowed. Resource profiles shall be defined for all Oracle OSDI services to a Security Access Facility (SAF)-compliant security server. Two profiles shall be created for each service. One profile is managed binds (used by CICS, IMS, and other Oracle services), and the other is for binds by normal applications (TSO, batch Oracle tools or Oracle applications). The name format for these profiles shall be ssn.service.UBIND and ssn.service.ABIND where ssn is the OSDI subsystem name defined at installation, service is the Oracle database or Oracle Net service name, the constant UBIND indicates application binds, and the constant ABIND indicates managed binds. Resource profiles that protect binds to Oracle services shall be created in the dedicated Oracle resource class.

    • The DBA shall configure all binds to Oracle OSDI services to be authorized by a SAF-compliant security server.

    • The SA/DBA shall create resource profiles that protect binds to Oracle SDI services in the ORAB resource class.

    • The SA/DBA shall create an ssn.service.UBIND and an ssn.service.ABIND profile for each Oracle database service.

    • The SA shall restrict read authorization to the UBIND resource profiles to authorized Oracle database accounts.

    • The SA shall restrict read authorization to the ABIND resource profiles to authorized Oracle database managed services.

B.16.3.4.3 Access to SYSDBA and SYSOPER Privileges

  1. Access to the Oracle database with database administration privileges SYSDBA and SYSOPER is controlled by SAF-defined resources. OS accounts granted Read authorizations to these resources are granted the privilege to connect to the Oracle database with administrative privileges. Read access to the SYSDBA and SYSOPER resources shall be restricted to authorized DBAs and systems programmers. If the SYSDBA and SYSOPER resource profiles are not defined, then any userid may connect to the database service with these privileges. The SYSDBA and SYSOPER resource profiles shall must therefore be defined in dedicated Oracle resource profiles. These profiles shall be named ssn.service.OPER and ssn.service.DBA, where ssn is the OSDI subsystem name and service is the database service name.

    • The SA, with the support of the DBA, shall define the resource profiles ssn.service.DBA and ssn.service.OPER in the ORAB resource class.

    • The SA, with the support of the DBA, shall restrict read access to the ssn.service.DBA and ssn.service.OPER to system programmers and authorized DBAs.

B.16.3.4.4 Database Service Actions Subject to OS/390 Authorization

  1. The userid associated with the database service must be granted authorization to create and delete Oracle VSAM linear data set (LDS) files. Oracle invokes the OS/390 IDCAMS utility to perform data set creation and deletion operations. Authorization to create and delete Oracle data sets shall be restricted to the associated Oracle service name userid, DBAs, and systems programmers.

    • The SA shall restrict authorization to create and delete Oracle data sets to the Oracle service use rid and DBAs.

B.16.3.4.4.1 Data Set Creation and Deletion

  1. The userid associated with the database service must be granted authorization to create and delete Oracle VSAM linear data set (LDS) files. Oracle invokes the OS/390 IDCAMS utility to perform data set creation and deletion operations. Authorization to create and delete Oracle data sets shall be restricted to the associated Oracle service name userid, DBAs, and systems programmers.

    • The SA shall restrict authorization to create and delete Oracle data sets to the Oracle service userid and DBAs.

B.16.3.4.4.2 Data Set Open

  1. The Oracle service requires update-type access to the VSAM LDS datafiles and write access to the database alert and diagnostic logs. It also requires read access to files including database parameter and SQL files. Access to Oracle data sets shall be restricted to the Oracle service userid and systems programmers.

    • The SA shall restrict access to Oracle data sets to the Oracle service userid and systems programmers.

B.16.3.4.4.3 OSDI Bind Authorization

  1. OSDI binds initiated by OSDI services are used to establish database links. Database links are used to connect one database instance to another or to connect the Oracle Net service to an instance. OSDI bind authorizations are used to restrict which address spaces may connect to the local database service. OSDI bind authorization between OSDI databases and network services shall be restricted to authorized database and network services.

    • The SA/DBA shall restrict read authorization to the ABIND resource profiles by other database and network services to authorized database and network services.

B.16.3.4.4.4 External Data Mover Actions Subject to OS/390 Authorizations

  1. The Oracle backup and recovery utility and the External Data Mover (EDM) services require authorization to operate. If in use, the EDM services userid must be granted authorization to open sequential backup data sets for backup (output) and recovery (input). It may also be granted authorization to delete backup datasets for maintenance operations. The EDM services userid does not require access to Oracle VSAM LDS files to function.

    • The DBA and the SA will ensure that Oracle backup and recovery utilities have access restricted to only the SA and DBA.

B.16.3.4.4.5 Oracle Net Actions Subject to OS/390 Authorizations

  1. In order to grant authorization to Oracle Net OSDI services, an OS/390 userid must be associated with the Oracle Net service. See the Oracle9i Enterprise Edition Installation Guide for instructions on associating OS/390 userids with OSDI services.

    • The DBA shall ensure that an OS/390 userid is associated with the Oracle Net service.

B.16.3.4.4.6 Authorizing Oracle Logon

  1. Oracle user connections to the database may be authorized by the host operating system. Host authorization may be used to authenticate users accessing the database from a local host session or a remote host session. Oracle provides host OS authentication by use of a built-in SAF check or an external logon exit module. If the customer selects host authentication, the built-in Oracle SAF check shall be used. Logon exit modules shall not be used. The LOGIN_AUTH OSDI service parameter shall be set to NONE or SAF. This setting applies only to database accounts that are IDENTIFIED EXTERNALLY.

    • The DBA shall set the LOGIN_AUTH OSDI service parameter to NONE or SAF.

B.16.3.5 Oracle Access Manager

  1. Oracle Access Manager allows applications running under CICS or IMS/TM to issue industry standard SQL statements against an Oracle server. No coding for proprietary application program interfaces (APIs) is required. Mainframe programs can execute distributed transactions spanning both OS/390 and Oracle data. Distributed transactions can be coordinated using CICS or IMS/TM to ensure the integrity of the entire transaction.

    • The DBA shall ensure that distributed transactions are coordinated using CICS or IMS/TM to ensure the integrity of the entire transaction.

  2. To prevent static storage of passwords in CICS and IMS/TM Oracle connect strings, CICS and IMS/TM connections to the database shall use Oracle database accounts authenticated by the OS/390 host system.

  3. The LOGIN_AUTH initialization parameter shall be set to SAF and the CICS application id username be created within Oracle as IDENTIFIED EXTERNALLY.

B.16.3.6 System Management Facility

  1. The IBM System Management Facility (SMF) provides a facility for users to monitor, collect, and record a variety of system and job related information. The Oracle subsystem uses the standard SMF interface to write user records and the Oracle audit trail, if specified, to the SMF data sets. User records may contain Oracle subsystem accounting data and other Oracle information allowing Oracle installation sites to charge individual users for the resources they use.

  2. Audit trail data must be protected in accordance with security policy. Access to any SMF data set storing Oracle audit data shall be restricted to systems programmers and database security officers.

    • The SA/DBA shall restrict access to Oracle audit data stored in SMF data sets to systems programmers and database security officers.

Exhibit 10.8.4-3  (02-21-2008)
Appendix C: MICROSOFT SQL SERVER SPECIFIC POLICY AND IMPLEMENTATION

C.1 Current SQL Server Version

  1. The information contained in this appendix is specific to Microsoft (MS) SQL Server Versions 7 and 8. MS SQL Server Version 8 is marketed as SQL Server 2000. When version-specific information is presented, it shall be labeled with the version to which it specifically applies.

  2. SQL Server versions shall be updated with hotfixes and service packs to address product bugs as well as to provide fixes for published security bulletins. MS Support Services has defined a "product support lifecycle." When a product is selected for support expiration, Microsoft provides a six-month notice. Microsoft publishes the list of hotfix availability end dates on its web site. Products that have been expired under standard support no longer receive published updates from Microsoft to address discovered security problems.

    • The DBA shall request upgrade, through procurement, immediately upon notification of a MS SQL Server expiration date that is within the six-month window.

  3. To protect your SQL Server environment, the DBMS version shall not be an expired product. The SQL Server software service pack shall be no earlier than the current service pack version minus one.

    • The SecSpec shall ensure that unsupported DBMS software is removed or upgraded prior to a vendor dropping support

    • The SecSpec shall ensure that the site has a formal migration plan for removing or upgrading DBMS systems prior to the date the vendor drops security patch support

    • The SecSpec shall ensure that the SQL Server version has all patches and hotfixes applied

    • The latest available and tested version and Service Pack level of Windows 2000, 2003 and XP operating system shall be employed.

C.2 SQL Server Meets C2 Security Requirements

  1. SQL Server Version 8 (SQL Server 2000) is capable of being fully C2 compliant. The policies and information in this appendix incorporate most configuration settings that set SQL Server to meet the C2 specifications.

C.2.1 SQL Server Meets Identification and Authentication

  1. The DBA shall ensure that only the host-based authentication method is implemented since only that method meets C2 requirements. Windows and Windows Active Directory provide a Windows security identifier (SID) to SQL Server that provide the ability to audit activity by individual database accounts.

C.2.2 Secure Distributed Computing

  1. Mutual authentication of databases enables secure distributed transactions between application servers, web servers, and database servers without compromising the user’s credentials. Mutual database authentication and strong user authentication may be accomplished by using industry-standard X.509 certificates or passwords. Microsoft refers to these systems as Linked Servers that specify an OLE DB provider and an OLE DB data source.

    • The DBA shall configure SQL Server to use Windows authentication only.

C.2.3 SQL Server Meets Auditing Requirements

  1. The DBA shall ensure that SQL Server’s auditing is enabled, the auditing requirement of C2 is to be met in the following ways:

    • Audit records for identification and authentication are generated

    • Audit records for access to protected objects are generated

    • Audit records for deletion of objects are generated

    • Audit records for administrative actions are generated

    • Audit records for other security relevant events are generated

    • Audit information is recorded and protected by DAC permissions.

    • Audit records include the time, account, event type, and success or failure.

    • Identification and authentication audit records include the computer name originating the event.

    • Administrators may select and filter the review of audit data.

    • The audit subsystem can be configured to prevent the loss of audit records.

C.3 SQL Server Access Controls

  1. The DBA shall ensure that Server Access Controls are assigned to promote maximum security consistent with operational requirements. To that end the DBA will configure the SA Connection, the OS DBA Group, the SYSADMIN Role, the Default SQL Server Passwords, and the Default SA Password,as follows

C.3.1 SA Connection

  1. The SQL Server SA pseudo database account shall not be used. Only trusted connections shall be used to access the SQL Server database.

    • The DBA shall deny use of the SQL Server SA pseudo database account.

    • The DBA shall configure SQL Server to use trusted connections only.

C.3.2 OS DBA Group

  1. The installation of MS SQL Server does not create any Windows OS groups. A DBA OS group shall be created and the authorized DBA accounts assigned as members to this group.

    • The SA/DBA shall create a DBA Windows OS group.

    • The SA/DBA shall assign only SecSpec -authorized DBA Windows accounts to the DBA OS group.

C.3.3 SYSADMIN Role

  1. All DBA activities shall be performed as an account within the SYSADMIN role. The SYSADMIN fixed server role provides full system privileges as well as allows the account to perform all database administration functions including:

    • Instance startup, mount, and database open

    • Instance shutdown, dismount, and database close

    • Alter database backup, transaction log, and recover

  2. The DBA shall assign only authorized DBAs the SYSADMIN role.

  3. The DBA shall deny the Windows BUILTIN\/Administrators group the assignment to SYSADMIN role.

  4. The DBA shall ensure that DBA accounts are only used to support DBA activities.

C.3.4 Default SQL Server Passwords

  1. Any default passwords for database accounts created during an SQL Server installation shall be changed after installation.

C.3.5 Default SA Password

  1. The default SA password, used to connect as administrator, shall be changed from the default installation value. Leaving the default password unchanged could result in unauthorized accounts accessing the server as sa, which provides them full database administration privileges.

    • The DBA shall password protect the SQL Server sa pseudo database account.

    • The DBA shall change the SQL Server sa pseudo database account default password.

C.3.6 SQL Server Agents Service Account

  1. The MS SQL Server Agent services, MSSQLServer or MSSQL$Instancename for a named instance and SQLServerAgent, shall not be run under the administrator or system accounts. A service account shall be defined and shall be a local Windows account unless a Windows domain account is required to support replication, remote procedure calls, or SQLMail. The SQL Server Agent services shall use the same account. The service account shall not be a member of the local or domain administrators group. The service account shall be denied the interactive logon right. The service account must be added to the SQL Server SYSADMIN role. The SQL Server Agent service account requires the following rights:

    • Act as part of the operating system

    • Increase quotas

    • Replace a process-level token

    • Log on as a service

    • Access this computer from network

    • May require the logon as a batch job right

  2. The SA/DBA shall configure the SQL Server services to run under accounts other than a Windows administrator or system account

  3. The SA/DBA shall configure the SQL Server services to run under a single local Windows account or a Windows domain account if required

  4. The SA/DBA shall configure the SQL Server services account so that it is not a member of a local or domain administrators group

  5. The SA/DBA shall deny the SQL Server services account the interactive logon right

C.3.7 SQL Server Database Accounts and Windows OS Accounts

  1. The DBA shall ensure there is a matching of SQL Server database accounts and Windows OS accounts. This contributes to a secure environment by limiting confusion over user identity. Limiting confusion of identity lessens the risks of improper permission assignments and aids in the monitoring of auditing logs. It is recommended that the DBA maintain SQL Server security account names in accordance with Windows account names. Windows groups may also be used to assign SQL Server roles and thereby eliminate the maintenance requirements for individual SQL Server account names altogether.

C.3.8 Guest Account

  1. The SQL Server guest account allows Windows accounts without direct SQL Server authorization that have been authenticated to the Windows OS to access the database. It cannot be removed from the master and tempdb databases. The guest account shall be deleted from all databases except the master and tempdb databases.

    • The DBA shall delete the database guest account from all databases except the master and tempdb databases.

C.3.9 Linked or Remote Servers

  1. Linked or remote servers shall only be configured to use Windows authentication. The capability to preserve a user’s identification, and, therefore, maintain DAC integrity, is currently available only in a Windows 2000 or later environment where the connections can be protected with Kerberos and account delegation can be used. When linking SQL Server databases, the connection shall be authenticated using the current user’s identification and passwords or certificates.

    • The DBA shall configure linked servers to use the user’s current authentication to access the remote database.

C.3.10 SQL Server Account Password Requirements

  1. SQL Server authentication is dependent upon the underlying Windows platform. Password requirements shall be implemented according to the Windows NT/2000/XP Addendum.

C.3.11 Predefined Roles

  1. SQL Server contains two different default role types—fixed server roles and fixed database roles. Fixed server roles are used for database administration and are applied system wide. The fixed server roles exist within the database and are granted to Windows local or global groups or to individual Windows accounts. These roles shall only be used to support DBA activities.

  2. Fixed database roles apply only within a particular database. A database account assigned a fixed database role has those privileges only in the database where they have been assigned.

  3. Fixed server and database roles shall not be granted to application user database accounts, application administrator accounts, or application roles. Fixed server and database roles shall not be granted to PUBLIC. Fixed server and database roles shall not be granted to GUEST. The BUILTIN\/Administrators group should be removed from the SYSADMIN role. The DBA OS group shall be added to the SYSADMIN role.

  4. Fixed server roles:

    • sysadmin

    • serveradmin

    • setupadmin

    • securityadmin

    • processadmin

    • dbcreator

    • diskadmin

  5. Fixed database roles:

    • db_owner

    • db_datareader

    • db_accessadmin

    • db_securityadmin

    • db_ddladmin

    • db_backupoperator

    • db_datawriter

    • db_denydatareader

    • db_denydatawriter

  6. The DBA shall ensure that SQL Server fixed server roles are only used to support DBA activities.

  7. The DBA shall not grant SQL Server predefined roles to PUBLIC or GUEST.

  8. The DBA shall not grant the above-listed SQL Server predefined roles to application user database accounts, application administrator accounts, application developer accounts, or application roles.

  9. The DBA shall ensure that the SYSADMIN role is not granted to the BUILTIN\/Administrators OS group.

  10. The DBA shall grant the SYSADMIN role to the DBA OS group.

C.3.12 SQL Server Privileges

  1. The DBA shall ensure that SQL Server access privileges are granted to database accounts, Windows groups, or database roles in accordance with sections C.3.12.1 and C.3.12.2 below. Data may be protected down to the column level. Privileges to fixed roles cannot be modified.

C.3.12.1 Statement Privileges

  1. The DBA shall ensure that SQL Server statement privileges shall not be granted to PUBLIC or GUEST. The following list of SQL Server statement privileges shall not be granted, directly or indirectly through the use of roles, to any application user, application administrator, application developer, or application role.

    • BACKUP DATABASE

    • BACKUP LOG

    • CREATE DATABASE

    • CREATE DEFAULT

    • CREATE FUNCTION

    • CREATE PROCEDURE

    • CREATE TABLE

    • CREATE VIEW

  2. The DBA shall ensure that SQL Server statement privileges are not granted to PUBLIC or GUEST.

C.3.12.2 Object Privileges

  1. SQL Server object privileges include SELECT, INSERT, UPDATE, DELETE, REFERENCES, and EXECUTE. The references object privilege shall not be granted to any application user, application administrator, or application role. No object privileges shall be granted to PUBLIC or GUEST. Access to system tables is granted by default to PUBLIC in each database. Careful attention must be paid to ensure that these permissions have been removed from PUBLIC.

    • The DBA shall ensure that application user database accounts, application administrator administrators, and application roles are not granted the references object privilege.

    • The DBA shall ensure that object privileges are not granted to PUBLIC or GUEST.

C.3.12.3 Job System Privileges

  1. Jobs can be used to automate administrative procedures as well as T-SQL procedures. CmdExec and Active Scripting job steps issue or can issue operating system commands and shall be restricted to use by DBAs. Access to the host operating system poses a security risk.

    • The DBA shall restrict use of CmdExec and Active Scripting job steps to DBAs.

C.3.12.4 Grant Object Privilege

  1. Application user database accounts, application administrator accounts, application developer accounts, or application roles shall not have the grant option of any object privilege. PUBLIC and GUEST shall not have the grant option of any object privilege.

    • The DBA shall ensure that application user database accounts, application administrator accounts, application developer accounts, and application roles do not have the administration option of any object privilege.

    • The DBA shall deny PUBLIC and GUEST the grant option of any object privilege.

C.3.13 Configuring Net Libraries

  1. SQL Server automatically listens on all net-libraries installed on the server.

  2. The DBA shall restrict Installed libraries to only those necessary to provide access to the intended client base. Where available, the Multi-Protocol net-library, is the most secure protocol without the availability of Kerberos in a Windows 2000 Active Directory environment as it allows for encryption of all network communications and shall be used by the DBA.

C.3.14 Windows System Permissions

  1. The DBA shall ensure that SQL Server executables are created with specific system permissions in accordance with the requirements in Sections C.3.14.1 to C.3.14.2 below. These permissions are critical to the correct operation of the software. Likewise, file ownership is designed to run as it is installed and should not be modified.

C.3.14.1 SQL Server Directories

  1. All directories that are created as the result of an installation of SQL Server, including file permissions and groups, shall not be modified to be more permissive from the initial installation. The SQL Server software owner shall own all directories and files created by the installation of SQL Server. These files are located in the root directory on the server and include executable, parameter, and datafiles. Changing the permission or ownership values may impact the operation of the SQL Server software. These files should be secured by using access control methods native to the operating system.

    • The DBA shall have the data files on a separate volume from the executable and parameter files.

    • The SA/DBA shall restrict access to all directories created by the installation of SQL Server to full control permissions granted to the SQL Server service account, the DBA OS group, the Administrators group, and the local SYSTEM accounts.

    • The SA/DBA shall restrict access to all files created by the installation of SQL Server to full control permissions granted to the SQL Server service account, the DBA OS group, the Administrators group, and the local SYSTEM accounts.

C.3.14.2 SQL Server Registry Permissions

  1. Windows Registry keys pertaining to the SQL Server shall be protected in accordance with the Windows NT/2000/XP Addendum and according to the following specifications:

    • The SA/DBA shall restrict access to the Windows registry keys under the HKEY_LOCAL_MACHINE\/SOFTWARE\/Microsoft\/MSSQLServer (for a default instance) or HKEY_LOCAL_MACHINE\/SOFTWARE\/Microsoft\/MS SQL Server\/InstanceName (for a named instance) to full control permissions granted to the DBA OS group, the Administrators group, the local SYSTEM account, and the SQL Server service account.

    • The SA/DBA shall restrict read and write permissions to the HKEY_LOCAL_MACHINE\/System\/CurrentControlSet\/Services\/MSSQL Server and HKEY_LOCAL_MACHINE\/Software\/Microsoft\/Windows NT\/CurrentVersion\/Perflib registry keys to the SQL Server service account and the DBA OS group.

C.4 Auditing In SQL Server

  1. Logon audit data is stored in both the Windows event log as well as the SQL Server 2000 error log. Logon auditing is configured at the SQL Server configuration level. The SQL Server logon audit level shall be set to Failure or ALL to record unsuccessful logon attempts at a minimum. Event auditing may be turned on by setting the C2 trace flag or by defining a trace using SQL Profiler and configuring it for autostart. The C2 flag setting ensures that all required event auditing is set and that event auditing begins at database startup. This section describes how to configure custom event auditing on an individual database. Remember that at least the minimum level of auditing shall be enabled for every database on all machines.

    • The DBA shall configure the SQL Server audit level to Failure or ALL.

    • The DBA shall enable auditing on the SQL Server database.

C.4.1 Database Audit Trail Location

  1. If appropriate, the SQL Server auditing should be configured to direct audit trail data to protected trace files and not to the system event logs. Unlike event log data, which can be viewed by SAs, trace file data is stored in binary format and can only be read by DBAs using SQL Server stored procedures. Audit data is also stored in the SQL Server error logs.

C.4.2 Database Audit Trail Protection

  1. SQL Server audit data shall be protected from loss. The audit log rollover capability shall be configured for all audit traces on the database. This capability prevents audit data from being overwritten and halts the database when there is a failure in creating a new rollover file. SQL Server and SQL Server Agent error logs should be prevented from being overwritten before they have been backed up. The default number of error logs is six. Use of the error logs should be monitored and the number of logs adjusted as necessary to prevent data loss.

    • The DBA shall enable the file rollover capability on SQL Server audit traces.

    • The DBA shall configure SQL Server to halt if a failure in audit file rollover occurs.

C.4.3 Mandatory Auditing

  1. Once auditing is enabled at the database level, specific auditing instructions shall be issued from a DBA account. To activate required audit options, a DBA shall enable the C2 audit option or define a trace to be run upon server startup configured with selected audit events as follows:

    • db_owner

    • Audit Add DB User Event

    • Audit Add Logon to Server Role Event

    • Audit Add Member to DB Role Event

    • Audit Add Role Event

    • Audit Add Logon Event

    • Audit App Role Change Password Event

    • Audit Backup/Restore Event

    • Audit Change Audit Event

    • Audit DBCC Event

    • Audit Logon Event

    • Audit Logon Change Password Event

    • Audit Logon Change Property Event

    • Audit Logon Failed Event

    • Audit Logon GDR Event

    • Audit Logout Event

    • Audit Object Derived Permission Event

    • Audit Object GDR Event

    • Audit Object Permission Event

    • Audit Server Starts and Stops Event

    • Audit Statement GDR Event

    • Audit Statement Permission Event

  2. The DBA shall enable all auditing options presented above.

C.4.4 Value Based Auditing

  1. SQL Server does not supply a value based auditing capability. If value based auditing is required, the application must include this in its design. All audit data collected shall be protected by access controls and maintained according to IRM 10.8.1 and IRM 10.8.3.

C.4.5 Audit Trail Maintenance

  1. The SQL Server audit trail requires periodic maintenance. The audit trail data shall be backed up and then purged routinely. The disk where the audit trail is located must be checked routinely to ensure that free space is available for the audit trail table to grow. If space is not available, then all activity upon the DBMS shall stop until space is made available by the SA. The sizing of the audit trail disk space and the maintenance of the audit trail are specific to each application.

    • The DBA shall ensure that the audit trail data is backed up.

C.5 Encrypting SQL Server

  1. SQL Server shall not maintain passwords. The Windows OS platform shall maintain passwords in accordance with the Windows NT/2000/XP Addendum. Logon session information is encrypted through the standard Windows logon process. This process also applies to connections for distributed/replicated SQL servers.

C.6 SQL Server Replication

  1. Replication allows for partial or full copies of the Publisher database to Subscriber databases that are maintained on remote servers. Snapshot replication updates the subscriber databases to defined points in time by applying an image of the Publisher database. Transaction replication updates the subscriber databases by applying transactions made on the Publisher database to subscriber databases. Merge replication allows updates to the subscriber databases that are applied in coordination with updates to the Publisher database.

  2. The replication agents (Snapshot, Merge, Distribution, Log Reader, Queue Reader, and others) run under the SQL Server Agent service account. For replication purposes, this account must be a Windows domain account and, as specified earlier in this document, shall not be a local or domain administrator or system account. The replication agents connect to one or more remote servers or instances run under the security context of the SQL Server Agent service account when using trusted connections.

C.6.1 Replication Role Requirements

  1. Permissions to support and administrate replication functions are automatically assigned to the sysadmin, db_owner, or replmonitor SQL Server roles at installation time. Replication administration permissions shall not be modified from their default assignments. Replication administration permissions shall be granted only to authorized application administrators and DBAs.

    • The DBA shall ensure that replication administration permissions are not modified from their default assignments.

    • The DBA shall grant replication administration permissions only to authorized application administrators and DBAs.

C.6.2 Securing the Distributor Database

  1. The distributor database may reside locally on the SQL Server publisher database system or on a remote server. Both publisher and subscriber databases require connections to the distributor database. All database connections for replication agents shall use Windows authentication logons. This requirement is not compatible with some replication configurations.

    • The DBA shall configure all database connections for replication agents to use Windows authentication logons.

C.6.3 Snapshot Folder Security

  1. Snapshot folders must be stored on a protected network share. The network share may be located on the distributor database system or on another server. The snapshot folder shall be located on an explicit share and not a Windows administrative share. The snapshot folder permissions shall be set to system, administrator, OS DBA group Full Control, SQL Server Agent domain account Read, Write. Subscribers shall also be granted read permissions on the snapshot folder in a replication pull configuration.

    • The DBA shall configure the snapshot folder location on an explicit share and not on a Windows administrative share.

    • The DBA shall set snapshot folder permissions to SYSTEM and ADMINISTRATOR Full Control, SQL Server Agent domain account read and write.

C.6.4 Publication Access Lists

  1. Permissions to publications for replication are maintained in the Publication Access List (PAL). All replication agent logon accounts must have entries in the PAL in order to participate in the replication process. Therefore, the SQL Server Agent service domain account must be entered in the PAL.

C.6.5 Agent Logon Security

  1. All replication agents, as mentioned previously, shall use Windows authentication and run under the security context of the SQL Server Agent service Windows domain account.

C.6.6 Security and Replication over the Internet

  1. Virtual Private Network (VPN) offers the most secure connection for establishing replication between databases over the Internet. Replication may also occur via a proxy server. The configuration of replication over the Internet must be in compliance with the IRS Enclave Security IRM. Care should be taken to protect the data by employing replication filters and locating the distribution database and snapshot files in protected and audited locations as appropriate.

C.7 Naming Conventions And File Locations

  1. By default, SQL Server installs software and datafiles to subdirectories under \/Program Files\/Microsoft SQL Server\/Mssql. Instance names, introduced in SQL Server 2000, must be unique to the servers running multiple instances and are limited to 16 characters.

C.7.1 Instance Naming Standards

  1. The multiple instance capability was introduced in SQL Server 2000. This allows the naming of an instance that is reflected in the SQL Server service name, associated file directories, and registry hives. Unlike Oracle DBMS architecture, SQL Server allows only one instance for one or more databases, but allows many databases per instance.

    • The DBA shall not include a version number, SQL Server-related or otherwise, in the SQL Server production database instance names.

C.7.2 SQL Server Datafile Naming Standards

  1. There should be a separate datafile for each database within the instance. Datafiles associated with a database shall contain the database name or prefix identifying the database and a sequence number representing each additional datafile needed to support the database.

  2. Following are the SQL Server datafile file types and their recommended naming conventions:

    FILE NAME DATABASE SEQUENCE NUMBER EXT.
     
    MASTER.MDF Master 01 or none for the primary datafile .MDF  
     
    MODEL.MDF MODEL 01 or none for the primary datafile .MDF  
    MSBD.MDF MSBD 01 or none for the primary datafile .MDF  
    MYDATA01.MDF Client tablespace for ACME application datafile .MDF  
     
     
     
    MYDATA02.MDF mydata 02 for 1st secondary datafile for same database, 03 for next secondary datafile for same database, etc. .MDF  
     
     
    TEMPDB.MDF tempdb 01 or none for the primary datafile .MDF  
     
    PUBS.MDF pubs 01 for the 1st datafile, 02 for 2nd datafile for same tablespace, etc. .MDF  
     
     
    ERRORLOG N/A external to database Extension number updated sequentially on system restart .n  
     
     
    MASTLOG N/A external to database 01 or none for the 1st datafile, 02 for 2nd datafile for same database, etc. .LDF  
     
     
    AUDITTRACE_date N/A external to database Date identifies copy of audit trace file .TRC  
     
     
    SQL SERVER FILE TYPES  

C.7.3 Databases

  1. Databases shall be named in accordance with IRM 2.5.7,Data Name Standards, using a name descriptive enough to identify the function of the data contained within the database.

  2. The system database MASTER.MDF shall be located in a separate database and should be named MASTER. The MASTER.MDF database shall reside within in its own unique datafile(s). The system database MODEL.MDF shall be located in a separate database and should be named MODEL. The MODEL.MDF database shall reside within in its own unique datafile(s). The system database MSDB.MDF shall be located in a separate database and should be named MSDB. The MSDB.MDF database shall reside within in its own unique datafile(s). The system database TEMPDB.MDF shall be located in a separate database and should be named TEMPDB. The TEMPDB.MDF database shall reside within its own unique datafile(s). Application databases shall be located in separate databases and shall reside within their own datafiles. When applicable, the database shall have Backup Transaction Log selected. NOTE: This is dependent on the database's functionality.

    • The DBA shall locate the system database MASTER.MDF in a separate database that resides within its own unique datafile( s).

    • The DBA shall locate the miscellaneous system database MODEL.MDF in a separate database that resides within its own unique datafile(s).

    • The DBA shall locate the system database MSDB.MDF in a separate database that resides within its own unique datafile(s).

    • The DBA shall locate the system database TEMPDB.MDF in a separate database that resides within its own unique datafile( s).

    • The DBA shall locate the application databases in separate databases that reside within their own unique datafile(s).

C.8 Initialization Parameters

  1. This section covers SQL Server configuration options that have a security impact on the database and how these parameters are required to be set. This section is not intended to cover all SQL Server configuration options.

C.8.1 ALLOW UPDATES

  1. The ALLOW UPDATES parameter specifies whether direct updates may be made to the system tables. When "allow updates" is disabled, database accounts cannot make updates to the system tables.

    • The DBA shall disable or set to 0 the ALLOW UPDATES parameter.

C.8.2 C2 AUDIT MODE (SQL Server 2000 only)

  1. The C2 AUDIT MODE parameter specifies whether or not automatic auditing of security events is enabled. The C2 AUDIT MODE shall be used if a custom audit trace that meets this IRM ’s audit requirements is not defined and enabled.

    • The DBA shall enable the C2 AUDIT MODE (set to 1) if no custom defined audit trace is enabled.

C.8.3 REMOTE ACCESS

  1. The parameter REMOTE ACCESS, when set to 1, allows logons from remote servers running SQL Server. It is used with remote stored procedures and replication. For a more secure database environment, this parameter shall be set to 0 unless replication is in use on the database or the requirement is fully justified and documented in appropriate ELC documentation.

    • The DBA shall disable the REMOTE ACCESS parameter (set to 0) unless replication is in use on the database or the requirement is fully justified and documented in appropriate ELC documentation.

C.8.4 SCAN FOR STARTUP PROCS

  1. The parameter SCAN FOR STARTUP PROCS, when set to 1, sets SQL Server to scan for startup procedures at startup time. Startup procedures may be planted by intruders to take effect at the next startup time. The SCAN FOR STARTUP PROCS parameter shall be set to 0 unless fully justified and documented in appropriate ELC documentation.

    • The DBA shall disable the SCAN FOR STARTUP PROCS parameter (set to 0) unless fully justified and documented in appropriate ELC documentation.

C.9 Stored Procedures

  1. Access to system-defined stored procedures, like all other database objects, shall be restricted to authorized users only. Access to object linking and embedding (OLE) stored procedures (sp_OA<name>) and registry access procedures (xp_REG<name>) shall be restricted to DBAs unless fully justified and documented in appropriate ELC documentation.

  2. User-defined stored procedures shall be stored in encrypted format for additional protection. It is recommended that system-defined stored procedures be reviewed on a regular basis to discover if any unauthorized modifications have been made. Modification of system stored procedures is one method used by Trojan horses.

    • The DBA shall restrict access to object linking and embedding (OLE) stored procedures (sp_OA<name>) and registry access procedures (xp_REG<name>) to DBAs or remove them from the system unless fully justified and documented in appropriate ELC documentation.

    • The DBA shall ensure that all user-defined stored procedures are stored in encrypted format.

C.10 Extended Stored Procedures

  1. Extended stored procedures run under the host operating system with full security rights. This allows for the potential for unauthorized users to gain access to the operating system. User-defined extended stored procedures shall not be used. System-defined extended stored procedures shall be limited to use by authorized DBAs only, unless fully justified and documented with the SecSpec. Extended stored procedures that are not required shall be removed from the system. The XP_CMDSHELL extended stored procedure shall be removed from the system unless fully justified and documented with the SecSpec. This extended stored procedure provides direct access to the host operating system.

    • The DBA shall prevent creation and use of user-defined extended stored procedures.

    • The DBA shall restrict use of system-defined extended stored procedures to authorized DBAs only unless fully justified and documented with the IT Security Specialist.

    • The DBA shall remove all extended stored procedures that are not required from the database and host system.

    • The DBA shall remove the XP_CMDSHELL extended stored procedure from the system unless fully justified and documented in appropriate ELC documentation.

C.11 Object Encryption

  1. SQL Server provides the capability to encrypt stored procedures, triggers, and views. Encrypting these objects provides an extra layer for security by preventing the viewing of the source for these objects and, therefore, the underlying structure of data objects they access. While experienced hackers easily defeat the added protection of object encryption, it does prevent the revealing of unnecessary information by less sophisticated attempts. Custom and GOTS stored procedures in the database shall be encrypted.

    • The DBA shall ensure that GOTS or custom application stored procedures are stored in encrypted format.

C.12 Database Backup File and Restore Protection

  1. To ensure backup file protection, access permissions to backup files shall be restricted to SAs. Restore permissions on databases shall be restricted to DBAs and database owners.

    • The DBA shall restrict access permissions to database backup files to SAs.

    • The DBA shall restrict restore permissions on databases to DBAs and/or the database owners.

C.13 SQL Server Installed Services

  1. All services provide a mechanism for potential security vulnerabilities. Installed services shall be limited to those required for the operation of the SQL Server database and to those services required to support the application. By default, SQL Server requires the SQL Server database engine (MSSQLServer or MSSQL$InstanceName) and the SQL Server Agent (SQLServerAgent service). Optional SQL Server services required by the application shall be justified and documented with the SecSpec.

    • The DBA shall restrict use of SQL Server services to those required to support database operation and application support.

    • The DBA shall justify and document optional SQL Server Services with the SecSpec.

C.14 SQL Mail

  1. SQL Server provides interaction to e-mail in two ways. SQL Mail is the process used by the MSSQLServer Service. This process uses a MAPI connection to a mail host.

  2. SQL Mail can introduce many vulnerabilities into a system. Incoming mail commands can contain malicious code or viruses.

    • The DBA shall ensure that SQL Mail is not implemented. The SQLServerAgent uses its own mail that is configured and controlled separately from the SQL Mail.

    • The DBA shall ensure that use of the SQLServer Agent e-mail notification is documented in appropriate ELC documentation.

C.15 Microsoft Data Engine/Microsoft SQL Server Desktop Engine (MSDE)

  1. All guidance listed in Appendix C, Microsoft SQL Server Specific Policy and Implementation, of this Database Security Technical Implementation Guide, shall be applied to the MSDE environment. The following sections C.15.1 through C.15.1.4 include MSDE specific issues and security policy changes to the Database for MSDE.

  2. In cases where the MSDE supports distributed clients, the SecSpec shall ensure that the distributed MSDE installations are configured in compliance with the policies outlined. Otherwise, the local DBA is responsible for these configurations unless stated specifically otherwise.

C.15.1 Current MSDE Version

  1. MSDE shall be updated with hot fixes and service packs to address product bugs as well as to provide fixes for published security bulletins.

  2. To protect your environment, the MSDE version shall not be an expired product.

    • The SecSpec shall ensure that MSDE versions in use are not a Microsoft expired version.

C.15.2 MSDE Security Bulletins and Hotfixes

  1. DBAs shall review security bulletins and install appropriate hotfixes as soon as possible.

    • The DBA shall apply all Microsoft security hotfixes.

C.15.3 User Authentication

  1. MSDE supports two choices for user authentication:

    • SQL Server -based (by password).

    • Host-based (by the underlying operating system/enterprise).

  2. This IRM requires host-based authentication for SQL Server. There may be cases in a distributed application environment where host based security is not desirable. A shared MSDE environment must use host-based authentication. A standalone installation MSDE may use SQL Server based authentication if documented by the SecSpec. If this documentation is complete, there is also no need to maintain a DBA Windows OS Group. SQL logons should be created and added to the appropriate role. The built in SA logon shall be password protected and not used for routine DBA duties. It is the responsibility of the SecSpec to ensure that the MSDE environment for each installation is clearly understood and documented and that the DBA responsibilities for each installation of MSDE are assigned. In some cases, configuration of the MSDE is the responsibility of a workstation/application configuration support personnel. In these cases, DBA configuration responsibilities belong to that person.

    • The SecSpec shall ensure that use of SQL Server Authentication in a standalone MSDE environment is documented.

    • The SecSpec shall ensure that host-based (Windows) authentication is used for shared MSDE environments.

    • The DBA shall deny use of the SA logon for routine DBA duties.

    • The DBA shall password protect the SA account.

    • The DBA shall change the SA logon password from its default value.

C.15.4 Auditing

  1. Logon audit data is stored in both the Windows event log as well as the MSDE error log.

    • The DBA shall set the audit level to Failure or ALL.

    • The DBA shall set the audit level to Failure or ALL.

  2. The following policy issues, which are required otherwise in this IRM, are optional within a standalone MSDE environment if documented with the SecSpec:

    • The DBA shall ensure that MSDE audit traces have the file rollover capability enabled.

    • The DBA shall ensure that MSDE is configured to halt if a failure in audit file rollover occurs.

    • The DBA shall ensure that MSDE is configured to halt if a failure in audit file rollover occurs.

    • The DBA shall ensure that audit trail data is backed up.

C.16 Sample Databases

  1. Microsoft SQL Server ships with two sample databases: Northwind and Pubs. These databases contain many default permissions that do not conform to policy. Additionally, sample items can be used as an entry point into systems.

    • The DBA shall ensure that the sample Databases (Northwind and Pubs) are removed.

C.17 SQL Server Service Components To Be Researched

  1. Following is a list of Microsoft SQL Server components that were not researched in time for inclusion in this document. Any security considerations for these components shall be reviewed and included in an updated version of this document.

    • Full-text search

    • Distributed Transaction Coordinator

    • User-installed extended stored procedures

    • Microsoft Meta Data Services

    • Microsoft Analysis Services

    • Microsoft English Query

Exhibit 10.8.4-4  (02-21-2008)
Appendix D: IBM DB2 UNIVERSAL DATABASE SPECIFIC POLICY

  1. The information contained in this appendix is specific to DB2 Universal Database (UDB) Version 8 installations on Windows and UNIX servers. General DB2 concepts and requirements described in this Appendix, such as the "DB2 Database Privileges," "DB2 Object Privileges, " and "Auditing in DB2" sub-sections below, also apply to the IRS z/OS platform. See the IBM web site, http://www-306.ibm.com/software/data/db2/zos/db2zosv8.html for OS-specific guidance pertaining to DB2 version 8 on the z/OS platform.

D.1 Current DB2 Version

  1. The DBA shall verify the configuration of DB2 in accordance with the material in this appendix. DB2 is installed on several configurations of operating systems and hardware and attention to the configuration is critical to security.

D.1.1 UNIX/Linux/Windows

  1. The DBA shall ensure that the versions of DB2 operating in the IRS environment are supported versions. Versions that are not supported shall be upgraded to a supported version. Any expections shall be noted and reported as deviations by the DBA. The table below includes the latest Fixpaks for the supported versions and the dates of their release are listed below. The build level for the installed version is listed in the DB2 Control Center 1 Help IAbout window.

    Version FixPak Build Level Release Date
    7 12 s040510 May-04
      11 s031208 Dec-03
      10a s030813 Sep-03
    8 6 s040616 Feb-04
      5 s040212 Feb-04
      4a n040122 Nov-03
    DB2 UDB FIXPAKS

  2. The SecSpec shall ensure that unsupported DBMS software is removed or upgraded prior to a vendor dropping support.

  3. The SecSpec shall ensure that the site has a formal migration plan for removing or upgrading DBMS systems prior to the date the vendor drops security patch support.

  4. The DBA shall ensure that the latest FixPak has been installed for the installed version.

D.2 DB2 Component Services

  1. The DBA shall ensure that Component Services are selected and operationalized in accordance with sections D.2.1 and D.2.2 below. Component Services are optional components that provide additional capability to administer or operate the database. Component services are listed below along with any required security configurations necessary to protect them and their access to the database. Coverage in this section applies only to DB2 UDB on UNIX/Windows/Linux platforms. Coverage for components on the z/OS platform shall be covered in a future release.

D.2.1 DB2 Administration Server (DAS)

  1. The DB2 Administration Server (DAS) provides job scheduling, remote administration of DB2 instances and databases, DB2 Discovery services, and alert notification via email and pagers to selected administrators. The SecSpec shall ensure that DAS access is available only to the DBA.

  2. The DAS runs as a service/daemon under a dedicated OS account name on the database server. The SecSpec shall ensure that the OS privileges assigned to the DBA are only those listed in the DB2 Operating System Accounts section of this exhibit.

  3. Privileges to administer the DAS are granted to members of the DAS administrative OS group. The default name for this group is dasadm1, but may be customized. The group name is specified to the DAS in the DAS configuration parameter dasadm_group. DAS administrative access shall be restricted to authorized DBAs.

    • The SecSpec shall ensure that only authorized DBAs are assigned the DAS administrative privilege.

D.2.2 Data Links Support

  1. DB2 Data Links provides DBMS access and some DBMS management capabilities to files stored locally on the database sever. Access to files registered with Data Links by users via the DB2 database is controlled by data links authorizations. Access to data links files may be controlled by data links authorizations. The data links security setting shall be set to ON to enable access control to data links files. Access to data links files via the database server OS shall be restricted to authorized users. Accounts granted access to data links directories are granted access to all files in the directory. The data links services or processes shall be granted only the privileges required by other DB2 processes as defined elsewhere in this appendix.

    • The DBA shall ensure that the Data Links link security setting is set to ON.

    • The SA/DBA shall ensure that access to Data Link file directories is restricted to SAs, DBAs, the DB2 installation account, and the DB2 service/daemon accounts.

    • The SA/DBA shall ensure that the Data Links services/process are granted the minimum privileges to operate.

D.3 DB2 Access Controls

  1. This section discusses DB2 authentication and authorization methods. DB2 uses OS authentication services to identify and validate users requesting access to the DB2 databases. DB2 also uses OS group membership to provide DB2 internal role-based assignment of database privileges.

D.3.1 DB2 Identification and Authentication

  1. DB2 does not provide an independent authentication facility. Instead, it depends upon the database host operating system to provide user authentication. The DBA shall ensure that access to a DB2 database is controlled by an approved method selected from the following potential authentication methods:

    1. SERVER - This is the DB2 default authentication method. When the authentication mode selected is SERVER, DB2 passes the userid and password to the database host operating system for validation. If the operating system approves the authentication, the user is allowed to access the database. If the user is connecting to the database from other than the local server, the userid and password are sent in clear text across the network using this method. The DBA shall not implement SERVER authentication.

    2. SERVER_ENCRYPT – This authentication method allows for a remote user to connect to the database by passing an encrypted userid and password. If the client specifies SERVER authentication, however, DB2 shall accept an unencrypted userid and password to authenticate the user. The DBA shall use SERVER ENCRYPT where ENCRYPT methodology is called for in the instance.

    3. CLIENT – This authentication method allows the user requesting connection to the database to authenticate to a remote operating system other than the database host. The database configuration parameters TRUST_ALLCLNTS and TRUST_CLNTAUTH can be set to refine the selection of remote host systems that are trusted to authenticate the remote user. These parameters can force authentication of the SERVER type depending on settings. If a userid and password are sent by the client with the database connection request, they are sent in clear text. The userid and password are ignored in cases where the server is not the authentication authority (both the client is trusted and the trustedauth and authentication modes are set to CLIENT). The DBA shall implement CLIENT authentication.

    4. KERBEROS – This authentication mode is available only in environments where both the DB2 database server and the clients are running on a platform that supports Kerberos authentication. Current supported Kerberos platforms are Windows 2000, Windows XP, and Windows .NET. Kerberos authentication uses a secret key to authenticate the user to the database server operating system. It does not require the user to provide the username and password. The DBA shall use KERBEROS where the KERBEROS methodology is called for in the instance.

    5. KRB_SERVER_ENCRYPT – Like the KERBEROS authentication method described above, this authentication mode accepts KERBEROS authentication from the client requesting it for connection to the database. However, if the client does not specify KERBEROS in its database catalog, the database shall accept. The DBA shall use KRB SERVER ENCRYPT where the KRB SERVER ENCRYPT methodology is called for in the instance.

    6. SERVER_ENCRYPT connection requests. This mode is useful for environments where both KERBEROS and non-KERBEROS clients may require connection to the DB2 database. The DBA shall use SERVER ENCRYPT where the SERVER ENCRYPT methodology is called for in the instance.

    7. Passwords are considered sensitive information and are required to be encrypted when transmitted across a network. Therefore, the DB2 authentication mode shall be set to SERVER_ENCRYPT, KERBEROS, or KRB_SERVER_ENCRYPT for the DB2 instance. The authentication mode is specified in the DB2 instance authentication configuration parameter.

    8. DB2 clients shall specify the same for connection to DB2 databases by specifying one of these values in the client database catalog.

      • The DBA shall ensure that the instance authentication mode parameter is set to SERVER_ENCRYPT, KERBEROS, or KRB_SERVER_ENCRYPT.

      • The DBA shall ensure that DB2 clients specify SERVER_ENCRYPT, KERBEROS, or KRB_SERVER_ENCRYPT authentication for connection to the DB2 database.

D.3.2 Administrative OS Groups

  1. Administrative or privileged access to the database is controlled at the database server operating system level. The administrative privileges are defined for three groups and are called authorities. Below is a list of the authorities and the privileges assigned to them:

    PRIVILEGE SYSADM SYSCTRL SYSMAINT
    Access any data in any table in any database in the Instance X    
     
    Migrate a database X      
    Change the database manager configuration file (including specifying the groups having SYSCTRL or SYSMAINT authority) X      
     
     
    Grant DBADM authority X      
    Update a database, node, or distributed connection Services (DCS) directory X X    
     
    Force users off the system X X    
    Create or drop a database X X    
    Drop, create, or alter a table space X X    
    Restore to a new database X X    
    Update database configuration files X X X  
    Back up a database or table space X X X  
    Restore to an existing database X X X  
    Perform roll forward recovery X X X  
    Start or stop an instance X X X  
    Restore a table space X X X  
    Run trace X X X  
    Take database system monitor snapshots of a X X X  
    database manager instance or its databases.  
    Read log files X X X  
    Create, activate, and drop event monitors. X X X  
    Query the state of a table space X X X  
    Update log history files X X X  
    Quiesce a table space X X X  
    Reorganize a table X X X  
    Collect catalog statistics using the RUNSTATS utility. X X X  
     
    DB2 UDB ADMINISTRATIVE GROUP PERMISSIONS  

  2. SYSADM – This authority has full privileges at both the instance and database levels to perform all activities including instance and database configuration and maintenance as well as full access to the data level including INSERT, UPDATE, DELETE on all data objects.

  3. SYSCTRL – This authority has full privileges to maintain the instance and databases, but cannot access data. This authority also does not include the privilege to mirate a database, change instance configuration parameters, nor grant DBADM authority.

  4. SYSMAINT – This authority has access to maintain the instance and databases, but does not include privileges to update the database, node, or distributed connection services (DCS) directory, force users off the database, create or drop a database, drop, create or alter a tablespace, or restore a new database. This privilege also does not include access to the data level.

  5. Other authorities and privileges are defined and managed within the DB2 database.

  6. The operating system group names may be specified within the DB2 instance configuration parameters (called database manager parameters). On Windows, the default value of NULL assigns the local Administrator group to all authority groups. On UNIX, the default value of NULL assigns the primary group of the DB2 software installation account to all authority groups.

  7. In order to preserve separation of duty, the database manager parameters specifying the SYSADM, SYSCTRL, and SYSMAINT operating system groups shall be set to a custom group name. The SA or DBA shall create Windows groups to be used specifically for this purpose. Please see See Exhibit 10.8.4-4. for detailed configuration parameter requirements located in the DB2 Configuration Parameters section.

  8. Please note that, on Windows systems, group membership is verified by DB2 at the domain or local level depending upon the users login. That is, if the user logs into a domain, DB2 shall search only domain groups for membership. To force DB2 to search for membership on the local machine, specify the global and/or instance registry value DB2_GRP_LOOKUP=local. This can be set using the DB2set command line utility.

    • The SA/DBA shall create custom groups on a Windows DB2 database server to be used exclusively for assignment of SYSADM, SYSCTRL, and SYSMAINT privileges by the DB2 instance.

    • The DBA shall ensure that the custom Windows groups created exclusively for DB2 SYSADM, SYSCTRL, and SYSMAINT authority assignment are specified in the DB2 database manager configuration parameters.

    • The SecSpec shall ensure that only authorized DBAs are assigned the SYSADM, SYSCTRL, and SYSMAINT authorities.

D.3.3 DB2 Operating System Accounts

  1. The DBA shall ensure that the operating system accounts listed in this section, D.3.3, are given only those privileges and permissions required for DB2 operations of support and maintenance. The operating system privileges and permissions required are described below.

    1. DB2 Installation OS Account - This is the account used to install the DB2 software on the database server host machine. This account becomes the owner of all the DB2 directories and files on a UNIX system. On Windows systems, the local Administrators group is assigned ownership. This account should not be confused with the DB2 instance account that has a default name of db2inst1. On UNIX systems, the account used for DB2 installation must have root authority. On Windows systems, this account must be a member of the local Administrators group, requires the Act as part of the operating system User Right, and Full Control permissions to the SOlLiB directory, subdirectories, and files, and Full Control permissions to the DB2 database directory, subdirectories, and files. This account shall be created and used exclusively for installation and maintenance of the DB2 directories and files. The DB2 installation account shall be assigned the least privileges on the database required to support DB2 operation.

      • The DBA/SA shall ensure that a custom account is created to support the DB2 installation.

      • The DBA/SA shall ensure that the DB2 software installation account is assigned the least privileges required to support operation of DB2 database and functions.

      • The SecSpec shall ensure that access to the DB2 installation account is restricted to SecSpec -approved users.

    2. DB2 Service/Daemon Accounts - These accounts are used to run Windows services or UNIX daemons required by the DB2 database. The default names for these accounts are dasusr1, db2inst1, and db2iadm1. On UNIX systems, only the db2inst1 account is required for DB2 daemon use. The account requires access to the DB2 instance directories and files. It does not require root access to the database server. On Windows systems, these accounts should not be members of the Administrator group and may be limited to the following user rights:

      • Act as part of the operating system

      • Create token object

      • Increase quotas

      • Log on as a service

      • Replace a process level token

      Please see Windows OS permissions for minimum required file and directory permissions for these accounts. A custom account shall be created to support the DB2 services/daemons and be assigned the least privileges.

      • The DBA/SA shall ensure that a custom account is created to support the DB2 services/daemons and that this account is assigned the least privileges required to support operation of the DB2 instance.

    3. Instance OS Account - default name db2inst1 - This account is used by the UNIX daemon and Windows service to run the DB2 instance service/daemon. The instance OS account requires the same privileges as listed for the service/daemon accounts above.

    4. DB2 Fenced User OS Account - default name db2fenc1 - This OS account is used to process applications spawned externally to the DB2 system processes. This account should have the least privileges assigned to it. The fenced user OS account requires only the privilege to log into the server and read/execute permissions to files stored in its home directory. On UNIX systems, all OS accounts that use User Defined Functions (UDF) must also be granted read/execute access to the directory where the ~ are stored. This access is granted via OS group membership.

      • The DBA/SA shall ensure that the DB2 fenced user OS account is created and restricted to the minimum OS privileges required.

      • The DBA/SA shall ensure that users of DB2 fenced procedures are granted the least privileges via the OS fenced user group.

    5. e) DAS OS Account - default name dasusr1 - This OS account is used by the DAS service/daemon. The DAS service/daemon requires different OS privileges than the db2inst1 account and so requires a dedicated account. A separate, dedicated account shall be created to support use of DAS. On Windows servers, the DAS OS account requires the Windows privileges required for the other DB2 services listed above. On UNIX servers, the DAS account must be the owner of the dasusr1 subdirectories and files

      • The DBA/SA shall ensure that a dedicated OS account is created to support the DB2 Administration Serve and restricted to the minimum OS privileges required.

D.4.4 Default DB2 Passwords

  1. During installation, DB2 prompts for OS account names and passwords for use by the DB2 database system. The default account names are db2inst1, db2fenc1, and db2as. Default passwords are not assigned. Custom passwords must be assigned at installation time

D.5 DB2 Authorizations

  1. DB2 separates database privileges into two separate types: Authorities and Privileges. Authorities are groups of privileges that allow the grantee access to certain system commands and are assigned at one time. Privileges are further divided into two types: database privileges and object privileges.

  2. DB2 authorities are granted to users by means of operating system group membership assignment (SYSADM, SYSCTRL, SYSMAINT) and are described in detail in the DB2 Administrative OS Groups section. DB2 authorities granted to users with the DB2 GRANT command include DBADM and LOAD.

  3. Privileges assigned by GRANT statements including all object privileges, database privileges, and the DBADM and LOAD authorities, may be granted to individual OS accounts or groups identified to the database. Both individual users accounts and groups are created on the operating system. Group membership is assigned using database server OS commands. Individual users and groups are defined separately for each DB2 database. Privileges are required to be assigned to groups to provide secure administration of privileges. However, in the case of DB2, this requires that the database server SA be responsible for defining group membership unless the DBA has SA privilege on the database server. OS Group membership for groups defined within DB2 shall be reviewed a minimum of every 30 days by the DBA or SecSpec to discover unauthorized user assignment.

    • The DBA or SecSpec shall ensure that OS group membership for groups defined within DB2 is reviewed for unauthorized assignment a minimum of every 30 days.

D.5.1 DB2 Database Authorities

  1. The DBADM authority shall be granted only to authorized DBAs and application owner accounts. The DBADM authority includes the privileges allowing the execution of the following types of actions:

    • Access any data in any table in the database

    • Grant database privileges within the database

    • Read log files

    • Create, activate, and drop event monitors

    • Query the state of a table space

    • Update log history files

    • Quiesce a table space

    • Reorganize a table

    • Collect catalog statistics using the RUNSTATS utility

  2. The SecSpec shall ensure that only authorized DBAs and application owner accounts are assigned the DBADM authority. The LOAD authority allows the grantee to load data in a database table to which they have been granted INSERT privileges. This authority also allows the grantee to issue QUIESCE TABLESPACES FOR TABLE, RUNSTATS, and LIST TABLESPACES commands.

D.5.2 DB2 Database Privileges

  1. The DBA shall review the DB2 Database Privileges listed here and ensure that only minimal privileges are assigned within the database. Database privileges grant the user the ability to create, modify, or drop database objects within the database. Following is the list of available database privileges:

    • Connect – access the database

    • Bindadd – create procedures, functions, and triggers

    • Createtab – create tables and views

    • Create_not_fenced – create procedures that are not fenced

    • Implicit_schema – create a schema implicitly

    • Load – load data into a table

    • Quiesce_connect – access a quiesced database

    • Create_external_routine – create a reference to a routine run externally to the database

  2. The connect database privilege is required to allow access to the database. If the connect privilege is assigned to groups, the SA has the ability to grant connect privilege to the database by means of OS group membership assignment without approval by the DBA. In order to preserve separation of duties, connect privilege shall not be granted to groups unless justified and documented in appropriate ELC documentation.

    • The DBA shall ensure that DB2 connect privileges are not assigned to groups unless justified and documented with the SecSpec.

    • The DBA shall ensure that application users are not assigned any database privileges except for the CONNECT database privilege.

    • The DBA shall ensure that database privileges with the exception of the CONNECT privilege are restricted to application owner accounts and DBA accounts on a production database.

    • The DBA shall ensure that database privileges with the exception of the CONNECT privilege are restricted to application owner accounts, application developer accounts, and DBA accounts on a development database.

  3. The connect privilege is assigned to PUBLIC by default upon database creation. The connect privilege shall be revoked from PUBLIC upon database creation to prevent unauthorized access to the database. PUBLIC is also granted the CREATETAB, BINDADD, IMPLICIT_SCHEMA, USE database privileges at database creation time. These privileges should be restricted to application owner and DBA accounts. The DBA shall revoke the CREATETAB, BINDADD, IMPLICIT_SCHEMA database privileges from PUBLIC at database creation time.

    • The DBA shall ensure that PUBLIC is not granted the CONNECT, CREATETAB, BINDADD, IMPLICIT_SCHEMA database privilege.

  4. The CREATE_NOT_FENCED privilege allows the grantee to create procedures or functions that are processed within the DB2 database address or memory space. Applications run inside the database process may access database resources directly and inadvertently or maliciously corrupt database files or otherwise disrupt the database. Fenced procedures run outside the database process and within the security context of the OS account specified as the Fenced User operating system account. Unfenced procedures shall not be defined within the database. The CREATE_NOT_FENCED database privilege shall not be granted to any user.

    • The DBA shall ensure that no database account is assigned the CREATE_NOT_FENCED database privilege.

    • The DBA shall ensure that no unfenced procedures or functions are defined with the database.

  5. The CREATE_EXTERNAL_ROUTINE allows the grantee to define a FENCED THREADSAFE routine. FENCED_THREADSAFE routines share a single process and may inadvertently or maliciously interfere with other FENCED THREADSAFE routines sharing the process. FENCED THREADSAFE routines should be tested carefully to ensure integrity. Use of FENCED THREADSAFE routines is left to the discretion of the application designer.

    • The CREATE_EXTERNAL_ROUTINE shall be restricted to application owner accounts.

D.5.3 DB2 Object Privileges

  1. The DBA shall review the DB2 Object Privileges listed here and ensure that only minimal privileges are assigned within the database. Object privileges grant the user the ability to read, add, modify, or delete data within existing database objects. Some object privileges also modify the structure of existing database objects. Following is the list of DB2 object privileges separated into those that alter object structure and those that do not. Object types accessed by these privileges are listed in parentheses.

  2. Allow object structure alterations:

    • Alterin (schema)

    • Createin (schema)

    • Dropin (schema)

    • Passthru (server)

    • All (tables, views, nicknames)

    • Alter (tables, views, nicknames)

    • Index (tables, nicknames)

    • References (tables, nicknames)

    • Use (tablespaces)

    • Bind (packages)

    • Usage (sequences)

    • Control (sequences, nicknames, packages, procedures, functions, methods, tables, views, tablespaces)

  3. Privileges to modify data only:

    • Delete (tables, views)

    • Insert (tables, views)

    • Update (tables, views)

    • Select (tables, views)

    • Execute (packages, procedures, functions, methods)

  4. Privileges that create, modify, or delete database objects constitute a change to the database design and can effect operation of the database. To protect the integrity of the database, privileges that alter data structures shall be restricted to DBAs and application object owners.

  5. The DBA shall ensure that assignment of the following object privileges are restricted to DBAs and application object owners:

    • Alterin

    • Createin

    • Dropin

    • Passthru

    • All

    • Alter

    • Index

    • References

    • Use

    • Bind

    • Usage

    • Control

  6. The IMPLICIT_SCHEMA database privilege allows users to create schemas implicitly by referencing an undefined schema. Whenever a schema is defined implicitly, PUBLIC is automatically granted the CREATEIN object privilege to the schema. The DBA shall ensure that PUBLIC is not granted CREATEIN object privileges within any database.

  7. The USE privilege to tablespaces is granted automatically to PUBLIC upon tablespace creation. This privilege shall be revoked from PUBLIC in order to prevent usage of tablespace resources by unauthorized users.

  8. When privileges are assigned with the CONTROL object privilege, several individual object privileges are granted with the WITH GRANT OPTION. The WITH GRANT OPTION allows the grantee to assign the granted privilege to other database users. Privilege assignment shall be restricted to DBAs and application object owners. The CONTROL object privilege shall not be granted to application user database accounts. Object privileges shall not be granted to application users with the WITH GRANT OPTION.

  9. By default, PUBLIC is granted select privileges to 238 system catalog tables and views during a typical installation. These privileges should be reviewed to determine what is required by supported applications. Required permissions should be removed from PUBLIC and assigned to the appropriate application user role. At a minimum, access to the following system catalogs tables and views shall be revoked from PUBLIC:

    • SYSCAT.DBAUTH

    • SYSCAT.TABAUTH

    • SYSCAT.PACKAGEAUTH

    • SYSCAT.INDEXAUTH

    • SYSCAT.COLAUTH

    • SYSCAT.PASSTHRUAUTH

    • SYSCAT.SCHEMAAUTH

  10. The DBA shall revoke access from PUBLIC to the system catalog tables and views listed above.

D.5.4 DB2 Implicit Privileges

  1. The DBA shall ensure that creators of database objects, schemas, or tablespaces have their privileges locked when not in use for updating or maintenance. Creators of database objects, schemas, or tablespaces receive CONTROL privileges to the created object, schema, or tablespace. Control privileges include all object privileges available for that object type granted with the WITH GRANT OPTION. Creators of views only receive CONTROL privilege to the created view if they also have CONTROL on all the objects referenced in the view definition. Creation of views requires SELECT or CONTROL privileges on all the underlying tables or views.

  2. By virtue of these implicitly assigned privileges, database object owner accounts are highly privileged accounts and shall be locked when not in use for application update or maintenance.

    • The DBA shall ensure that the custom application object owner account is used only for update and maintenance of the application objects.

D.6 Auditing in DB2

  1. The DBA shall ensure that only Read and Write access is enabled to the instance owner account. DB2 does provide an audit facility to record events as they occur within the database. Auditing is configured at the instance level meaning that all configured audit events are similarly recorded for actions in all databases belonging to the instance. Audit records are stored in the db2audit.log file located in the DB2 instance/security subdirectory where the audit configuration file, db2audit.cfg, is also stored. By default, access to the audit log files is restricted to Read and Write actions by the instance owner account. These permissions are assigned at audit log file creation time.

  2. Access to the db2audit utility used to configure auditing is restricted to users with the SYSADM authority. Auditing is not started automatically at system or instance startup. It operates independently of the other DB2 processes. The db2audit start command must be entered manually or submitted by the system. DB2 auditing shall be configured to start at system startup. The DBA shall configure audit options as follows or more inclusive:

    • Audit – required success and failure– audits audit configuration changes

    • Checking – not required - audits authorization checking of attempts to access, create, alter, drop DB2 objects

    • Objmaint – required success and failure– audits create, alter, or drop of objects

    • Secmaint – required success and failure– audits privilege assignments and database configuration modifications

    • Sysadm – required success and failure– audits SYSADM privileged activities

    • Validate – required – audits authentication events

    • Context – required failure only – provides

  3. The DBA/SA shall ensure that DB2 auditing is enabled at database server startup

  4. The DBA/SA shall ensure that access to the db2audit.log and db2audit.cfg files is restricted to the authorized users

  5. The DBA shall ensure that DB2 audit options are configured to the required settings or more inclusive

  6. The DBA shall set the value of the database manager parameter auditObuCsz to 0 at the time of instance generation. The database manager parameter audit_buf_sz shall cause audit records to be written at the time of generation. A value greater than 0 indicates the number of 4KB pages that shall be used to create an internal buffer used to store audit records before writing a group of them to disk. Holding the audit records in a buffer before writing them to disk creates the potential of lost audit records during a system interruption – precisely the time when it is most advantageous to have them available. An audit_buf_sz of 0, however, can have a negative impact on system performance. It is recommended that the audit_buf_sz be set to 0.

  7. The errortype database manager parameter shall be set to the following values with the listed result:

    • Audit = successful audit record generation included in determining success of the audited action

    • Normal = any error from audit facility resulting from an audited event does not report an error in the audited event result

  8. The DBA shall consult with the data owner to ensure the setting of the parameter complies with privacy, security classification, and other sensitivity considerations. Required auditing shall be performed by the database auditing facility or designed into the capabilities of the application used to access the data.

  9. The DBA shall ensure that the audit-buf-sz parameter is set to 0.

D.7 DB2 Operating System Security Requirements

Section D.7 in its entirety highlights the closely coupled relationship between the security effects of the underlying operating system on the security of DB2. Entensive reference is therefore necessary to the documentation of the operating system supplied and updated by the operating system supplier. The DBA shall comply with the requirements of the particular operating system as described in section D.7 and shall review and make such adjustments as are required for secure operation of DB2 in light of changes made in the underlying operating system as a consequence of updates, patches, and upgrades by the operating system supplier.

D.7.1 OS/390

  1. The authoritative source for OS/390-specific DB2 configuration details is Chapter 18 (DB2) of the IBM Systems Standards Manual, published by the IBM Systems Software Branch (ISSB) staff of the IRS. Security-relevant portions of Chapter 18 (DB2) of the IBM Systems Standards Manual are provided here for reference.

D.7.1.1 OS/390 DB2 Naming Standards

  1. On June 18, 2002, the PRIME Program Systems Engineering Office published the "IRS & PRIME Technical Directive 11, DB2 Naming Standards and Guidelines" . The Technical Directive applies to all IRS Modernization projects and all other projects required to comply all or in part with the IRS Enterprise Architecture. Technical Directive 11 is important for DB2 security in that it provides means of maintaining configuration management of IRS DB2 databases. The DBA shall comply with the requirements of this technical directive.

  2. The following DB2 naming standards, as quoted from Chapter 18 of the IBM Systems Standards Manual, shall be observed:

    1. Database names can be up to 8 characters long and should reflect the intent of the Data Base rather than a user’s Group-Id. An example is the ’NAI’ Data Base for the ’National Account Index’.

    2. Tablespace names can be up to 8 characters long and must not contain an ’X’ in the first position.

    3. Table names can be up to 18 characters long and are named based on the discretion of the Table’s owner. All Table names referenced within a program should be unqualified, with the exception of when Tables with different owners are referenced.

    4. Indexes must contain an ’X’ in the first position.

    5. Plans must contain the user’s Group-Id in the first two positions.

    6. Program names must conform to the current IRS Standards Manual. The program name, Data Base Request Module (DBRM) and Package name must be identical.

D.7.1.2 Binding Packages and Plans

  1. DBAs are the only individuals authorized to bind packages and plans on the OS/390 DB2 platform. Refer to Chapter 18 of the IBM Systems Standards Manual for additional detail.

D.7.1.3 User Written DB2 Exit Routines

  1. The DBA shall ensure that user written DB2 exit routines are made available to DB2 only by the following procedures:

    1. The newly written or changed exit routine must reside in an existing Endevor library.

    2. The source code will be reviewed by IRS systems programming personnel.

    3. After the source code is reviewed, the load module will be copied from the Endevor library to the appropriate DB2 library by OSS personnel.

  2. Refer to Chapter 18 of the IBM Systems Standards Manual for additional detail.

D.7.2 UNIX

  1. All files and subdirectories located in the directories listed below shall have world or others permissions removed. All files and subdirectories located in instance owner account home directory shall have their ownership set to the instance owner account. All files and subdirectories located in the DAS OS account home directory shall have their ownership set to the DAS OS account. All files and subdirectories located in the DB2 fenced user OS account home directory shall have their ownership set to the DB2 fenced user OS account. These restrictions shall prevent DB2 daemons being run under the Root account and protect the files and directories by requiring discrete (group membership required) assignment of privileges for access. DB2 executable files shall not have the SUID or GUID.

    Account Name Description
    Db2inst1 Instance owner/administrator
    Db2fenc1 Fenced user
    Dasusr DAS owner/administrator
    DB2 UDB OS ACCOUNTS

    Group Name Description
    Db2iadm1 Instance owner/administrator group
    Db2fadm1 Fenced user group
    Db2asgrp DAS owner/administrator group
    DB2 UDB OS GROUPS

  2. Permissions to the directories cited above in D.7.2.1 can be accomplished by setting the current directory to the directory to be configured and using the following commands:

    • Chown –R account-name *

    • Chmod –R o-rwx *

  3. The DBA/SA shall set DB2 file and directory ownership to the DB2 instance owner, DB2 fenced user, and DAS account as appropriate.

  4. The DBA/SA shall revoke all world privileges from DB2 files and directories.

  5. The DBA/SA shall ensure that no DB2 executable files have the SUID or GUID bit set.

  6. DB2 authorities and DAS administrative authority are by default granted to the UNIX db2iadm1 group. If the SYSADM, SYSCTRL, SYSMAINT, and DASADM authorities require separation for your site, custom groups shall be created and membership assigned appropriately to accommodate this.

D.7.3 Windows

  1. The SA/DBA shall ensure that access to the DB2 directories Disk:\/Program Files\/ and Disk:\/DB2 is limited to Full Control permissions granted to Administrators and the DB2 software installation account, and Modify, Read & Execute, List Folder Contents, Read, and Write permissions granted to DB2 service accounts.

  2. The SA/DBA shall ensure that access to the DB2 registry keys and values located under the registry hives HKLM\/Software\/IBM\/DB2 and (services beginning with DB2) is limited to Read and Full Control permissions granted to Administrators, the DB2 software installation account, and DB2 service accounts.

  3. DB2 authorities and DAS administrative authority are by default granted to the Windows Administrators group. If the SYSADM, SYSCTRL, SYSMAINT, and DASADM authorities require separation for your site, custom groups must be created and membership assigned appropriately to accommodate this.

D.8 DB2 Configuration Parameters

  1. DB2 configuration parameters are used to define or manage DB2 use of server resources as well as determine operation of the instance and databases. Parameter values cannot be modified directly. The DBA shall ensure that DB2 configuration parameters are defined or modified using the DB2 Control Center, the Command Line Processor (CLP) utility, Application Programming Interfaces (API’s), used via custom programs to modify the parameter values, or using the DB2 Configuration Assistant.

D.8.1 Database Manager Configuration Parameters

  1. The Database Manager configuration parameters configure a DB2 instance. These parameters primarily affect system resources allocated to the DB2 instance. The parameter values are stored in the db2systm file that is found in the /sqllib subdirectory for the instance in UNIX and in the \/sqllib\/<instance-name> directory in Windows where instance-name is the name of the instance. On either system, if the DB2INSTPROF environment variable is set, the database manager configuration file is found in the directory named by that environment variable. The following parameters affect the security posture of the DB2 instance. The DBA shall ensure that the database manager configuration parameters are defined in accordance with this section, D.8.1, for each instance of the database server.

D.8.1.1 Audit_buf_sz – Audit Buffer Size

  1. The DBA shall ensure that the audit-buf-sz parameter is set to 0. When set to 0, audit records are written as soon as they are generated. Setting this value to other than 0 allows the audit records to be cached in a buffer to be written at a more optimized performance time. Setting the value to 0 potentially decreases database performance.

D.8.1.2 Smp_log_path – Sync Point Manager Log Path

  1. The smp_log_path parameter is used to specify alternate locations for log files generated by the Sync Point Manager (SPM). Access to the SPM log file directories shall be restricted to authorized users. The default spm_log_file directory is /sqllib/spmlog.

  2. The DBA shall ensure that access to the directory specified by the smp_log_path parameter is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.1.3 Datalinks – Data Links Support

  1. Data Links provides access to external host files. If set to YES, then Data Links are supported on the database. If not required, Data Links shall be disabled on the database.

  2. The DBA shall set the datalinks value to NO unless Data Links are required by a database application.

D.8.1.4 Discover – Discovery Mode

  1. This parameter is used to enable or disable the DB2 client’s method for determining access to DB2 information on the local or remote instances/databases. Setting this value to ENABLE allows the client to send broadcast requests on the network for response by any available DB2 servers on the server that are configured to respond. A response to a discovery request contains information on all instances and databases on the server. This could lead to unauthorized access attempts to a remote instance or database. While less convenient, clients and other servers should be required to have connection information manually defined for them or use LDAP for retrieving database catalog information. The DBA shall ensure the discover parameter value is set to DISABLE.

D.8.1.5 Discover_comm – Discover Communication Protocols

  1. This parameter is used to define the communications protocols on which discovery searches are listened for and responded to. The discovery service should be disabled to protect the database server from unauthorized access attempts. The DBA shall ensure the discover_comm parameter value shall be set to DISABLE.

  2. The DBA shall ensure that the discover_comm parameter is set to DISABLE.

D.8.1.6 Discover_inst – Discover Server Instance

  1. This parameter is used to enable or disable the database server’s response to discovery requests by this instance. A response to a discovery request contains information on all instances and databases on the server. This could lead to unauthorized access attempts to the instance and databases. While less convenient, clients and other servers should be required to have connection information manually defined for them or use LDAP for retrieving database catalog information. The DBA shall ensure that the discover_inst parameter value is set to DISABLE.he DBA shall ensure that the discover_inst parameter is set to DISABLE.

D.8.1.7 Diaglevel – Diagnostics Error Capture Level

  1. The diaglevel parameter determines what diagnostic messages are written to the db2diag.log file. Aside from assisting in regular database server maintenance, these messages may indicate possible security breaches or unauthorized access attempts. When using diagnostic messages for a security investigation, the DBA shall set the following values to capture the types of diagnostic messages indicated:

    • 0 – No diagnostic messages are written

    • 1 – Server errors only are written

    • 2 – All errors are written

    • 3 – All errors and warnings are written

    • 4 – All errors, warnings, and informational messages are written

D.8.1.8 Diagpath – Diagnostic Data Directory Path

  1. The diagpath parameter value defines the directory path where the db2diag file containing the diagnostic messages generated by the database server is written. The path should specify a protected directory on the host system. If no path is specified, the sqllib\/<instance-name> is used for Windows and the sqllib/db2dump directory is used for UNIX. Access to the directory path specified in the diagpath parameter shall be restricted to authorized users.

  2. The DBA shall ensure that access to the directory specified in the diagpath parameter is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.1.9 Notifylevel – Notify Level

  1. The notifylevel parameter indicates the types of notify messages written to the notification file. On Windows, notification messages are written to the Event Logs. On UNIX, notifications are written to the instance.nfy text file. The levels and corresponding types of messages captured are listed below:

    • 0 - No notification messages

    • 1 - Fatal or unrecoverable notification messages

    • 2 -Immediate action required messages

    • 3 - Important information, no action required

    • 4 -Informational

  2. The setting specified indicates that all messages of a lower value shall also be written to the notification file. Notification messages, in addition to providing database server status, may also indicate possible security breaches. The DBA shall ensure that the notifylevel is set to a minimum value of 3.

D.8.1.10 Federated – Federated Database System Support

  1. This parameter, when set to a value of YES, indicates that the instance supports requests to remote databases in a distributed environment. Access to remote databases initiated by the local database requires special security considerations. If use of federated databases is not required, the federated parameter shall be set to NO. If required, this requirement shall be documented with the SecSpec.

  2. The DBA shall ensure that the federated parameter is set to a value of NO unless required and documented with the SecSpec.

D.8.1.11 Sysadm_group – System Administration Authority Group Name

  1. This parameter specifies the operating system group name assigned sysadm authority within the instance. By default, this group is set to NULL. On a Windows platform, a null value defaults to assignment of sysadm authority to the local administrator group. On UNIX platforms, a null value assigns sysadm authority to the primary group of the DB2 software owner/installer account. Separation of duties is promoted on a Windows platform by reassigning the sysadm group value to a custom created group. On a Windows platform the sysadm_group parameter shall not be NULL. On a Windows platform, the sysadm_group parameter shall be assigned to a custom group.

  2. The DBA shall assign the name of a custom local group to the sysadm_group parameter on a Windows platform.

D.8.1.12 Sysctrl_group – System Control Authority Group Name

  1. This parameter specifies the operating system group name assigned sysctrl authority within the instance. By default, this group is set to NULL. On a Windows platforms, a null value defaults to assignment of sysctrl authority to the local administrator group. On UNIX platforms, a null value assigns sysadm authority to the primary group of the DB2 software owner/installer account. Separation of duties is promoted on a Windows platform by reassigning the sysctrl group value to a custom created group. On a Windows platform the sysadm_group parameter shall not be NULL. On a Windows platform, the sysctrl_group parameter shall be assigned to a custom group.

D.8.1.13 Sysmaint_group – System Maintenance Authority Group Name

  1. This parameter specifies the operating system group name assigned sysmaint authority within the instance. By default, this group is set to NULL. On a Windows platforms, a null value defaults to assignment of sysmaint authority to the local administrator group. On UNIX platforms, a null value assigns sysmaint authority to the primary group of the DB2 software owner/installer account. Separation of duties is promoted on a Windows platform by reassigning the sysmaint group value to a custom created group. On a Windows platform the sysmaint_group parameter shall not be NULL. On a Windows platform, the sysmaint_group parameter shall be assigned to a custom group.

D.8.1.14 Authentication – Authentication Type

  1. The authentication type parameter defines the method of authentication used to connect users to the database. Available options are SERVER, SERVER_ENCRYPT, CLIENT, KERBEROS, and KRB_SERVER_ENCRYPT. For a more in-depth discussion on the requirements of this parameter, please see See Exhibit 10.8.4-4. the DB2 Authentication exhibit in this IRM. To protect passwords from being sent in clear text within a database connection request, the authentication parameter shall be set to SERVER_ENCRYPT, KERBEROS, or KRB_SERVER_ENCRYPT.

D.8.1.15 Use_sna_auth – Use SNA Authentication

  1. This parameter allows users to connect to the database if they have already authenticated to SNA. This requires that they be using the SNA protocol to communicate to the database. Use of this authentication mode requires that the instance authentication mode be set to SERVER. Since an authentication mode of SERVER allows passwords to be transmitted across the network in clear text, the SNA authentication shall not be used.

  2. The DBA shall ensure that the sna_auth parameter value is set to NO.

D.8.1.16 Fed_noauth – Bypass Federated Authentication

  1. The fed_noauth enables or disables the requirement to authenticate to the instance when the federated parameter is enabled and the authentication mode is either SERVER or SERVER_ENCRYPT. The fed_noauth shall be set to NO.

D.8.1.17 Catalog_noauth

  1. The catalog_noauth parameter when set to YES or 1 allows users without SYSADM authority to catalog databases. Unauthorized changes to the database catalogs could result in errors in access to local and remote databases. The catalog_noauth parameter shall be set to NO or 0.

  2. The DBA shall ensure that the catalog_noauth parameter is set to No or 0.

D.8.1.18 Dftdbpath – Default Database Path

  1. The value of dftdbpath parameter determines the default file storage location of newly created databases. Access to the path indicated by this parameter shall be restricted to authorized users.

  2. The DBA shall ensure that access to the path indicated in the dftdbpath parameter is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

  3. The DBA shall ensure that access to the path indicated in the dftdbpath parameter is a valid path on the server operating system.

D.8.1.19 Trust_allclnts – Trust All Clients

  1. This parameter is used in conjunction with an authentication mode of CLIENT to allow or disallow all clients to be authenticated at the client operating system for DB2 access. This parameter is only effective when the authentication mode is set to CLIENT. Since the requirement for authentication mode is that it be set to a value other than CLIENT, the value of this parameter must be left to YES.

D.8.1.20 Trust_clntauth – Trusted Clients Authentication

  1. This parameter specifies whether trusted clients are authenticated at the client or at the server. This parameter is not considered unless the authentication mode is CLIENT. If the client presents a username and password when a database connection is requested and the trust_clnauth parameter is set to SERVER, then the client shall be authenticated by the server. Since the requirement for authentication mode is that it be set to a value other than SERVER, the value of this parameter must be left to CLIENT.

D.8.2 Database Configuration Parameters

  1. Database configuration parameters configure a single DB2 database within an instance. Each database has its own database configuration file named SQLDBCON that stores the values assigned for each parameter. The SQLDBCON file is stored with other database control files in the SQLnnnn subdirectory where nnnn is the number assigned to the database at database creation time. This directory is found under the \/DB2 directory in Windows and the /home/db2inst1/dbinst1 directory under UNIX. If the database is partitioned, a SQLDBCON file is created for each partition. Like the database manager configuration file, the SQLDBCON file cannot be edited directly. The database parameters listed below affect the security posture of the database. These database parameters must be defined as required for each database on the database server.

D.8.2.1 Logpath – Current Log Path

  1. This parameter is not configurable, but is used to store the value for the current path of the log files. It can be changed only after the new value specified in the newlogpath parameter takes effect. By default, log files are stored in the SQLOGDIR under the database directory. In addition to log files being necessary to recover a database after an uncontrolled shutdown, for example, a disk or power failure, log files may include sensitive information. The directory specified in the logpath parameter shall be a protected directory. For UNIX, access to the logpath directory shall be restricted to 750 or more restrictive. For Windows, access to the logpath directory shall be restricted to Administrators, SYSADMS, and the DB2 service account.

    • The DBA/SA shall ensure that access to the DB2 logpath directory is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.2.2 Loghead – Current Log File

  1. This parameter is also not configurable, but instead stores the name of the log file currently in use. Log files, in addition to being required to recovery a database after an uncontrolled shutdown, may contain sensitive information. Access to log files shall be restricted to authorized users.

    • The DBA/SA shall ensure that access to the DB2 file specified in the loghead database parameter is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.2.3 Newlogpath – Log File Path

  1. The newlogpath parameter is used to store the path where the log files shall be stored upon next database restart. Access to the directory specified in the newlogpath directory shall be restricted to authorized users.

    • The DBA/SA shall ensure that access to the DB2 newlogpath directory is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.2.4 Mirrorlogpath – Mirror Log File Path

  1. The mirrorlogpath specifies a directory where a mirror copy of the log file is written. Specifying a directory on a separate physical disk ensures that recovery of the database to a point in time can be made after a disk failure that houses the logpath directory is lost. The mirrorlogpath parameter shall specify a directory on a physical disk separate from the logpath directory unless the logpath directory is already housed on a mirrored or RAID 5 disk. The mirrorlogpath, if specified, shall be restricted to authorized users.

    • The DBA/SA shall ensure that access to the DB2 mirrorlogpath directory is restricted to authorized users.

    • The DBA shall ensure that the mirrorlogpath specifies a location on a separate physical disk unless the logpath specifies a directory on a mirrored or RAID 5 disk.

D.8.2.5 Overflowlogpath – Overflow Log Path

  1. The overflowlogpath parameter specifies a directory path for storage of log files used for a ROLLFORWARD database recovery or to store active log files retrieved from the archive logs. This parameter should specify a protected directory restricted to authorized users only.

    • The DBA/SA shall ensure that access to the DB2 overflowlogpath directory is restricted to SAs, DBAs, the DB2 software installation account, and DB2 service/daemon accounts.

D.8.2.6 Logretain – Log Retention Logging

  1. The logretain parameter specifies whether log files are retained as archive log files to be used in a database recovery operation. The DBA shall set this value to RECOVERY to enable log file retention unless the SecSpec approves recovery only to the time of the last full database backup. Retaining log files is appropriate for dynamic data that is modified on a frequent basis. For databases housing only static copies of data, this capability may be unnecessary and the parameter value may be set to NO.

  2. The userexit parameter that has the same effect as the logretain parameter and to be effective both must be set.

    • The DBA shall ensure that the logretain parameter is set to RECOVERY unless authorized by the SecSpec.

D.8.2.7 Userexit – User Exit Enable

  1. The userexit parameter is used to specify whether log retention is enabled. The value may be set to YES or NO. When set to YES, regardless of the logretain setting (see See Exhibit 10.8.4-4. D.8.2.6, Logretain - Log Retention Logging), log retention is enabled. The userexit parameter shall be set to YES unless the SecSpec approves no log retention.

    • The DBA shall ensure that userexit is set to YES unless authorized by the SecSpec.

D.8.2.8 Tsm_password – Tivoli Storage Manager Password

  1. This parameter is used to store the password for the Tivoli Storage Manager (TSM). The password is displayed in clear text upon entry and is stored encrypted in the configuration file. There are no password management features such as complexity or length requirements for the password. The DBA shall ensure that the value entered for tsm_password follows all possible IRS password requirements.

    • The DBA shall ensure that the tsm_password follows all password requirements as listed in See IRM 10.8.4.5.1.2., Password Guidelines when TSM is in use.

D.8.2.9 Discover_db – Discover Database

  1. This parameter is used to enable or disable the database’s response to Discovery requests. A response to a discovery request contains information on all instances and databases on the server. This could lead to unauthorized access attempts to the instance and databases. While less convenient, clients and other servers should be required to have connection information manually defined for them or use LDAP for retrieving database catalog information. The discover_db parameter value shall be set to DISABLE.

    • The DBA shall ensure that the discover_db parameter is set to DISABLE.

D.8.3 DB2 Administration Server Configuration Parameters

  1. The DB2 Administration Server (DAS) provides administrative access to the DB2 instances and databases on the local server. Only one DAS is defined per server. The configuration parameters below provide enhanced security to the DB2 instances and databases accessed by the DAS.

D.8.3.1 Discover – DAS Discovery mode

  1. The discover parameter value determines the how the DAS responds to discovery requests issued by DB2 clients. When set to SEARCH, the DAS responds to SEARCH and KNOWN requests issued by DB2 clients by providing all information about instances and databases available on its local database server. When set to KNOWN, the DAS provides the local instance and databases only when a KNOWN discovery request is received from a client. A KNOWN request indicates that the client was configured with connection information for a specific DB2 instance and/or databases. When set to DISABLE, the DAS ignores discovery requests. The DISABLE setting helps to protect the local instances and databases from unauthorized access attempts. Discovery is only available when the DAS is configured for TCP/IP communication.

    • The DBA shall ensure that the DAS discover parameter is set to DISABLE when the DAS is configured for TCP/IP communications.

D.8.3.2 Dasadm_group – DAS Administration Group Name

  1. This parameter defines the database server OS group name granted DAS administrative authority (DASADM). When set to NULL on a Windows server, the local Administrators group is used. When set to NULL on a UNIX server, the primary group assigned to the DB2 instance account is used. To maintain separation of duties, a custom group shall be assigned to the dasadm_group Parameter

    • The DBA shall ensure that the dasadm_group is set to a custom account on a Windows server.

D.8.3.3 Exec_exp_task – Execute Expired Tasks

  1. The exec_exp_task parameter defines whether the DAS executes upon startup any tasks found in the task scheduler that have passed their scheduled start time. To protect against unauthorized tasks being run upon startup of the DAS, this parameter shall be set to NO. This setting requires that the task schedule be reviewed upon startup and authorized tasks manually started after a DAS restart.

    • The DBA shall ensure that the exec_exp_task parameter is set to NO.

D.8.3.4 Sched_userid - Scheduler User ID

  1. The sched_userid names the userid used to connect to by the DAS to connect to a remote tools database that stores the DAS schedule data. This parameter is only referenced if the tools database is remote to the DAS server. If this parameter is required, access to the userid specified should be restricted to the DAS server. The userid specified in the sched_userid parameter shall be restricted to authorized DAS use.

    • The DBA shall ensure that the userid specified by the sched_userid parameter is restricted to authorized DAS use.

D.8.3.5 Authentication – Authentication type DAS

  1. Like the database manager authentication mode, the DAS authentication parameter specifies the accepted authentication modes for accessing the DB2 database. Both available authentication modes for the DAS, SERVER_ENCRYPT and KERBEROS_ENCRYPT, encrypt passwords transmitted over the network.

    • The DBA shall ensure that DAS authentication is set to SERVER_ENCRYPT or KERBEROS_ENCRYPT.

D.9 Network Security

  1. DB2 UDB Version 8.1 offers no network communication encryption services. This function shall be available in the ″Stinger″ version of DB2 that has not yet been released for production as of the date of this IRM. Database communications requiring encryption must be configured to use VPN or some other method available via the network or database server operating system.

D.10 DB2 Replication

  1. Replication supports multiple copies of database objects on remote databases. This requires that databases participating in replication authenticate to remote databases to receive or share copies of database objects with the remote databases. These activities are accomplished using standard database client to server connections using the authentication mode defined for the database. A single OS account shall be used to support replication connections.

    • The DBA shall ensure that a single OS account is used to authenticate to databases to support replication activities.

    • The DBA shall ensure that the minimum DB2 privileges are assigned to the replication account on the database server to support the replication activities on that database.

    • The DBA shall ensure that DASADM and SYSADM authorities are not granted to replication OS accounts.

Exhibit 10.8.4-5  (02-21-2008)
Appendix E: ORACLE DATABASE IRM COMPLIANCE CONFIGURATION

Note:

This list of database security compliance configuration instructions is not all-inclusive and shall not complete the secure configuration of your Oracle database. Some compliance checks such as backup and recover procedures or encrypting sensitive data require steps specific to your environment.

E.1 Update Version/Apply Security Patches

  1. To check the database version:

    1. From SQLPLUS:

    2. Select * from v$version;

    3. Current Versions are as follows: 9i: 9.2.0, 10.1.0; 8i: 8.1.7.4

  2. See http://otn.oracle.com/deploy/security/alerts.htm for a list of current security alerts and patches required to resolve associated vulnerabilities.

    Note:

    VERSION TERMINALRELEASE? DESUPPORTDATE CURRENT/LAST PATCH
    10.1.0 (Oracle 10g) No TBD NA
    9.2.0 (Oracle 9i, Release 2) no 31-Dec-05 9.2.0.5 / NA
    9.0.1 (Oracle 9i) no 31-Dec-03 9.0.1.4 / 9.0.1.4
    8.1.7 (Oracle 8i, Release 3) yes 31-Dec-03 8.1.7.4 / 8.1.7.4
    8.1.6 (Oracle 8i, Release 2) yes 31-Oct-01 8.1.6.3
     
    8.1.5 yes 01-Jan-01 8.1.5.1  
    8.0.6 (Oracle 8) yes 30-Sep-01 8.0.6.3  
    7.3.4 yes 31-Dec-00 7.3.4.5  
    ORACLE VERSION SUPPORT STATUS  

  3. Install available patches according to patch instructions.

    • To view alerts reported by Oracle, go to the Oracle Technology Network (OTN) security alert page at http://otn.oracle.com/deploy/security/alerts.htm, or log into Metalink.oracle.com, select Product Lifecycle, select Alerts, select Oracle Server – Enterprise Edition, or whichever product you wish to check, open the link to the Support Status and Alerts for your database version. Review the list for security alerts. The DBA shall ensure patches are installed as they become available to the IRS.

    • Check for Oracle database IAVM notices on http://www.cert.mil.

E.2 Set Initialization Parameters

Note:

The name and location of the pfile directory is version and operating system specific.

  1. Using any text editor, edit the .ORA file usually located at ORACLE_BASE\/admin\/<dobbins>/INIT<SID>.ORA file.

  2. Add or edit to include the following lines:

    PARAMETER NAME VALUE
    *DBLINK_ENCRYPT_LOGIN TRUE
    AUDIT_TRAIL TRUE, OS, DB
    RESOURCE_LIMIT TRUE
    REMOTE_OS_AUTHENT FALSE
    REMOTE_OS_ROLES FALSE
    OS_ROLES FALSE
    UTL_FILE_DIR Valid, Protected directory
    SQL92_SECURITY TRUE
    O7_DICTIONARY_ACCESSIBILITY FALSE
    REMOTE_LOGIN_PASSWORDFILE EXCLUSIVE or NONE
    **AUDIT_SYS_OPERATIONS TRUE
    GLOBAL_NAMES TRUE
    _TRACE_FILES_PUBLIC FALSE
    ****MAX_ENABLED_ROLES 30
    ****REMOTE_LISTENER NULL
    ***AUDIT_FILE_DEST Valid, Protected Directory
    USER_DUMP_DEST Valid, Protected Directory
    BACKGROUND_DUMP_DEST Valid, Protected Directory
    CORE_DUMP_DEST Valid, Protected Directory
    ****LOG_ARCHIVE_START TRUE
    LOG_ARCHIVE_DEST Valid, Protected Directory
    LOG_ARCHIVE_DUPLEX_DEST(_n) Valid, Protected Directory
    OS_AUTHENT_PREFIX Not OPS$
    ORACLE REQUIRED INITIALIZATION PARAMETER SETTINGS
    * Applies for version 9.0.1 and earlier.
    ** Applies to version 9.2 and later.
    *** Applies to UNIX versions only.
    **** Not Required.

  3. Use OS file permissions to protect the directories. Permissions require that the Oracle process have permissions or privileges to write to files and change permissions on files in the directory. Only SAs and DBAs should have full permissions to the directory. Please note that all database accounts have read and write access from within the database to all files in the UTL_FILE_DIR directory by virtue of the Oracle process OS permissions.

    Note:

    Prior to starting the database with LOG_ARCHIVE_START=TRUE, the database should be set to ARCHIVELOG enabled. To do this the database needs to be in EXCLUSIVE mode. Shutdown the database, issue a START MOUNT EXCLUSIVE command at the SQL*Plus prompt, and enter the ALTER DATABASE ARCHIVELOG; command.

  4. Stop and restart the database after these parameters have been set.

    Note:

    One parameter must be set on Oracle client workstations to ensure encryption of passwords transmitted across the network during database logon. The ORA_ENCRYPT_LOGIN must be set to TRUE on the workstation. On a Windows 2000 system, do the following:

  5. From the Windows desktop:

    • Right-click on My Computer

    • Select Properties

    • Click on Environment Variables button

    • Under System Variables, click NEW

    • In Variable Name text box enter: ORA_ENCRYPT_LOGIN

    • In Variable Value text box enter: TRUE

    • Click OK

E.3 Verify Domain Name Prefix in Use (Windows only)

  1. Use REGEDT32 to verify the value for the key that specified use of the Windows domain to identify OS-authenticated database accounts is set to TRUE.

  2. From REGEDT32:

    • Select HKEY_LOCAL_MACHINE\/SOFTWARE\/ORACLE\/homeid\/

    • Double click on key OSAUTH_PREFIX_DOMAIN and enter TRUE in String text Box

    • Click OK to save

E.4 Verify SYSDBA and SYSOPER User Authorization in ORAPWD

  1. If a REMOTE_LOGIN_PASSWORDFILE is in use (=EXCLUSIVE), then list database accounts assigned SYSDBA and SYSOPER database privileges and review for appropriate authorization as follows:

    1. From SQLPLUS:

    2. Select * from V$PWFILE_USERS;

  2. To revoke SYSDBA or SYSOPER from unauthorized database accounts:

    1. From SQLPLUS:

    2. Revoke sysdba from user;

    3. Revoke sysoper from user;

  3. If a REMOTE_LOGIN_PASSWORDFILE is NOT in use, the SYSDBA and SYSOPER are being authorized by virtue of membership to an OS Group. Consult the installation guide for your version and platform to determine the name of the OS Groups. Review memberships for authorized OS accounts.

E.5 Verify Status of Default Accounts

  1. Review the status of Oracle default accounts. Only accounts required for daily operation should be Open. All other accounts should be removed if possible or locked and/or expired. Following is a list of Oracle recommended status for default accounts.

  2. From SQLPLUS, enter:

    1. Select username from dba_users where account_status<>’OPEN’ order by username;

    2. To lock accounts enter: Alter user username account lock;

    3. To expire accounts: Alter user username password expire;

      USERNAME ACCOUNT STATUS
      ADAMS EXPIRED & LOCKED
      AURORA$JIS$UTILITY$ OPEN
      AURORA$ORB$UNAUTHENTICATED OPEN
      BLAKE EXPIRED & LOCKED
      CLARK EXPIRED & LOCKED
      CTXSYS EXPIRED & LOCKED
      DBSNMP OPEN
      HR EXPIRED & LOCKED
      JONES EXPIRED & LOCKED
      LBACSYS EXPIRED & LOCKED
      MDSYS EXPIRED & LOCKED
      OE EXPIRED & LOCKED
      OLAPDBA EXPIRED & LOCKED
      OLAPSVR EXPIRED & LOCKED
      OLAPSYS EXPIRED & LOCKED
      ORDPLUGINS EXPIRED & LOCKED
      ORDSYS EXPIRED & LOCKED
      OSE$HTTP$ADMIN OPEN
      OUTLN OPEN
      PM EXPIRED & LOCKED
      QS EXPIRED & LOCKED
      QS_ADM EXPIRED & LOCKED
      QS_CB EXPIRED & LOCKED
      QS_CBADM EXPIRED & LOCKED
      QS_CS EXPIRED & LOCKED
      QS_ES EXPIRED & LOCKED
      QS_OS EXPIRED & LOCKED
      QS_WS EXPIRED & LOCKED
      SCOTT OPEN
      SH EXPIRED & LOCKED
      SYS OPEN
      SYSTEM OPEN
      ORACLE DEFAULT ACCOUNT STATUS

E.6 Change Default Passwords

  1. Change any and all default passwords. Following is a list of many default accounts created during the installation of an Oracle database. If the following default accounts or any others exist in your database, change their passwords immediately:

    USERNAME DEFAULT PASSWORD
    !DEMO_USER !DEMO_USER
    ADAMS WOOD
    ADLDEMO ADLDEMO
    ADMIN JETSPEED
    APPLSYS APPLSYS
    APPLSYSPUB PUB
    APPS APPS
    AQ AQ
    AQDEMO AQDEMO
    AQJAVA AQJAVA
    AQUSER AQUSER
    AUDIOUSER AUDIOUSER
    AURORA$JIS$UTILITY$ invalid
    AURORA$ORB$UNAUTHENTICATED invalid
    BC4J BC4J
    BLAKE PAPER
    CATALOG CATALOG
    CDEMO82 CDEMO82
    CDEMOCOR CDEMOCOR
    CDEMORID CDEMORID
    CDEMOUCB CDEMOUCB
    CENTRA CENTRA
    CIDS CIDS
    CISINFO ZWERG
    CLARK CLOTH
    COMPANY COMPANY
    COMPIERE COMPIERE
    CQSCHEMAUSER PASSWORD
    CSMIG CSMIG
    CTXSYS CTXSYS
    DBI MUMBLEFRATZ
    DBSNMP DBSNMP
    DEMO DEMO
    DEMO8 DEMO8
    DES DES
    EJSADMIN EJSADMIN_PASSWORD
    EMP EMP
    ESTOREUSER ESTORE
    EVENT EVENT
    FINANCE FINANCE
    FND FND
    FROSTY SNOWMAN
    GPFD GPFD
    GPLD GPLD
    HCPARK HCPARK
    HLW HLW
    HR HR
    IMAGEUSER IMAGEUSER
    IMEDIA IMEDIA
    INTERNAL ORACLE
    JMUSER JMUSER
    JONES STEEL
    LBACSYS LBACSYS
    LIBRARIAN SHELVES
    MASTER PASSWORD
    MDSYS MDSYS
    MFG MFG
    MIGRATE MIGRATE
    MILLER MILLER
    MMO2 MMO2
    MODTEST YES
    MOREAU MOREAU
    MTS_USER MTS_PASSWORD
    MATZOTH MTSSYS
    MXAGENT MXAGENT
    NAMES NAMES
    OAS_PUBLIC OAS_PUBLIC
    OCITEST OCITEST
    ODM ODM
    ODM_MTR ODM_MTR
    ODS ODS
    ODSCOMMON ODSCOMMON
    OE OE
    OEMADM OEMADM
    OLAPDBA OLAPDBA
    OLAPSVR OLAPSVR
    OLAPSYS OLAPSYS
    OPENSPIRIT OPENSPIRIT
    ORACACHE ORACACHE
    ORAREGSYS ORAREGSYS
    ORDPLUGINS ORDPLUGINS
    ORDSYS ORDSYS
    OSE$HTTP$ADMIN invalid
    OSP22 OSP22
    OUTLN OUTLN
    OWA OWA
    OWA_PUBLIC OWA_PUBLIC
    PANAMA PANAMA
    PATROL PATROL
    PERSTAT PERSTAT
    PLSQL SUPERSECRET
    PM PM
    PO PO
    PO7 PO7
    Pya PO8
    PORTAL30_DEMO PORTAL30_DEMO
    PORTAL30_PUBLIC PORTAL30_PUBLIC
    PORTAL30_SSO PORTAL30_SSO
    PORTAL30_SSO_PS PORTAL30_SSO_PS
    PORTAL30_SSO_PUBLIC PORTAL30_SSO_PUBLIC
    POWERCARTUSER POWERCARTUSER
    PRIMARY PRIMARY
    PUBSUB PUBSUB
    QS QS
    QS_ADM QS_ADM
    QS_CB QS_CB
    QS_CBADM QS_CBADM
    QS_CS QS_CS
    QS_ES QS_ES
    QS_OS QS_OS
    QS_WS QS_WS
    RE RE
    REP_MANAGER DEMO
    REP_OWNER DEMO
    REP_OWNER REP_OWNER
    REPADMIN REPADMIN
    RMAIL RMAIL
    RMAN RMAN
    SAMPLE SAMPLE
    SAP SAPR3
    SCOTT TIGER
    SDOS_ICSAP SDOS_ICSAP
    SECDEMO SECDEMO
    SH SH
    SITEMINDER SITEMINDER
    SLIDE SLIDEPW
    STARTER STARTER
    STRAT_USER STRAT_PASSWD
    SYMPA SYMPA
    SYS CHANGE_ON_INSTALL
    SYSADM SYSADM
    SYSTEM MANAGER
    TAHITI TAHITI
    TDOS_ICSAP TDOS_ICSAP
    TESTPILOT TESTPILOT
    TRAVEL TRAVEL
    TSDEV TSDEV
    TSUSER TSUSER
    TURBINE TURBINE
    ULTIMATE ULTIMATE
    USER USER
    USER0 USER0
    USER1 USER1
    USER2 USER2
    USER3 USER3
    USER4 USER4
    USER5 USER5
    USER6 USER6
    USER8 USER8
    USER9 USER9
    UTLBSTATU UTLESTAT
    VIDEOUSER VIDEOUSER
    VIF_DEVELOPER VIF_DEV_PWD
    VIRUSER VIRUSER
    VRR1 VRR1
    WEBCAL01 WEBCAL01
    WEBDB WEBDB
    WEBREAD WEBREAD
    WKSYS WKSYS
    WWW WWW
    WHIZZER WWWUSER
    XPRT SPREAD
    ORACLE ACCOUNT DEFAULT PASSWORDS

  2. From DBA Studio or Security Manager:

    Select the username from the table in E.6.1 and set a password in the text boxes for that purpose other than the default password.

  3. From SQLPLUS:

    Alter user <username> identified by <new password>.

  4. The SYS password may also be set with the ORAPWD utility. To enable authentication of an administrative user using password file authentication you must do the following:

    • If not already created, create the password file using the ORAPWD utility:

    • ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users

    • Set the REMOTE_LOGIN_PASSWORDFILE initialization parameter to EXCLUSIVE. (This is the default).\/

    • Note: REMOTE_LOGIN_PASSWORDFILE is a static initialization parameter and therefore cannot be changed without restarting the database.

    • Connect to the database as user SYS (or as another user with the administrative privileges).

    • If the user does not already exist in the database, create the user.

    • Grant the SYSDBA or SYSOPER system privilege to the user:

    • GRANT SYSDBA to oe;

E.7 Remove Demo Applications and Demo Database Accounts

  1. Demo applications should be removed from the database. The default demo accounts provided during installation of the database include SQL scripts to remove them. Following is a partial list of these demo applications and the scripts to remove them. The scripts may be found in the ORACLE_HOME/demo/schema/demo_name directory.

    Human_resources hr_drop.sql
    Order_entry oe_drop.sql, oc_drop.sql,
    Product_media pm_drop.sql
    Sales_history sh_drop.sql
    Shipping qs_drop.sql

  2. Other demo applications that may be installed after database installation may be found in other $ORACLE_HOME directories. Similarly, they may also be provided with scripts to remove them. If not, then they may effectively be removed with the SQL command: drop user username cascade; where the username is the name of the account that owns the demo’s objects. The default user SCOTT must be removed in this way.

E.8 Set a Listener Password

  1. The Listener password must be set on all listeners running on the system. The password may be set either by editing it directly into the listener.ora file or by command in the LSNRCTL utility. Using the LSNRCTL enters the password in encrypted format into the listener.ora file. Because this file does contain the password, permissions to this file should be restricted and verified.

    From the OS command prompt, type LSNRCTL and press Enter.
    Status local (Name of the listener)
    If Security is On, then a password had been set. Type Exit.
    LSNRCTL> set password
    Password: (blank since there is initially no password assigned)
    The command completed successfully
    LSNRCTL> change_password
    Old password: (blank)
    New password: xxxxxx
    Reenter new password: xxxxxx
    Connecting to
    (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
    Password changed for LISTENER
    The command completed successfully
    LSNRCTL> set password (you must do a set password here)
    Password:
    The command completed successfully
    LSNRCTL> save_config (required to save the password ! !)
    Connecting to
    (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
    Saved LISTENER configuration parameters.
    Listener Parameter File F:\/oracle\/ora81\/network\/admin\/listener.ora
    Old Parameter File F:\/oracle\/ora81\/network\/admin\/listener.bak
    The command completed successfully
    LSNRCTL> exit
    OR

    Note:

    The following method stores the Listener password unencrypted in the listener.ora file.


    Edit listener.ora file.
    Add the following entry: PASSWOStop and Restart listener from LSNRCTL utility.RDS_listener_name=password
    Stop and Restart listener from LSNRCTL utility.

E.9 Set Listener ADMIN_RESTRICTIONS On

  1. Prevent remote administration of the listener by enabling ADMIN_RESTRICTIONS in the listener.ora file. Edit the file to include the following line:

    ADMIN_RESTRICTIONS_listener_name = true
    Replace listener_name with the name of your listener.

E.10 Create a Password Verification Function

Note:

The password verification function must be owned by SYS.

  1. Create the password verify function (available from the IASE web site and printed below):

    From SQLPLUS connected as SYS or as SYSDBA: @full path\/utlpwdmgdisa.sql

  2. Assign the password verify function to the all profiles:

    From SQLPLUS: Alter profile DEFAULT limit password_verify_function verify_password;

  3. For a list of existing profiles:

    From SQLPLUS: Select distinct profile from dba_profiles;

    PASSWORD VERIFY FUNCTION
    Rem This script was modified from the Oracle utlpwdmg.sql devault script.
    Rem
    -- This script sets the default password resource parameters
    -- This script needs to be run to enable the password features.
    -- However the default resource parameters can be changed based on the need.
    -- A default password complexity function is also provided.
    -- This function makes the minimum complexity checks like
    -- the minimum length of the password, password not same as the username, etc. The user may enhance this function according to the need.
    -- This function must be created in SYS schema.
    -- connect sys/<password> as sysdba before running the script
    CREATE OR REPLACE FUNCTION verify_function_IRS
    (username varchar2,
    password varchar2,
    old_password varchar2)
    RETURN boolean IS
    RETURN boolean IS
    m integer;
    differ integer;
    isdigit boolean;
    ispunct boolean;
    ischar boolean;
    BEGIN
    -- Check if the password is same as the username
    IF NLS_LOWER(password) = NLS_LOWER(username) THEN
    raise_application_error(-20001, ’Password same as or similar to user’);
    END IF;
    -- Check for the minimum length of the password
    IF length(password) < 8 THEN
    raise_application_error(-20002, ’Password length less than 8’);
    END IF;
    -- Check if the password is too simple. A dictionary of words may be maintained and a check may be made so as not to allow the words that are too simple for the password.
    IF NLS_LOWER(password) IN (’database’, ’password’,
    ’computer’, ’abcdefgh’) THEN
    raise_application_error(-20002, ’Password too simple’);
    END IF;
    -- Check if the password contains at least one letter, one
    digit and one
    -- punctuation mark.
    m := length(password);
    FOR i IN 1..m LOOP
    -- Check for digit, character, punctuation
    IF substr(password,i,1) BETWEEN ’0’AND ’9’ THEN
    isdigit:=true;
    ELSIF substr(password,i,1) BETWEEN ’A’ AND ’z’ THEN
    ischar:=true;
    ELSIF substr(password,i,1) IN
    (’!’,’″’,’#’,’$’,’%’,’&’,’(’,’)’,’`’,’*’,’’’+’,’-
    ’,’/’,’:’,’;’,’<’,’=’,’>’,’?’,’_’) THEN
    ispunct:=true;
    END IF;
    -- Exit loop if password contains a character, digit and punctuation
    IF isdigit AND ischar AND ispunct THEN
    GOTO repeats;
    END IF;
    END LOOP;
    raise_application_error(-20003, ’Password should contain at least one digit, one character and one punctuation’);
    -- Check if the password contains repeating characters
    <<repeats>>
    FOR i IN 1..m-1 LOOP
    IF substr(password,i,1) = substr(password,i+1,1) THEN raise_application_error(-20003, ’Password may not contain repeating characters’);
    GOTO endsearch;
    END IF;
    END LOOP;
    -- Check if the password differs from the previous password by at least 3 letters
    <<endsearch>>
    IF old_password IS NOT NULL THEN
    differ := length(old_password) - length(password);
    IF abs(differ) < 4 THEN
    IF length(password) < length(old_password) THEN
    m := length(password);
    ELSE
    m := length(old_password);
    END IF;
    differ := abs(differ);
    FOR i IN 1..m LOOP
    IF substr(password,i,1) != substr(old_password,i,1)
    THEN
    differ := differ + 1;
    END IF;
    END LOOP;
    IF differ < 4 THEN
    raise_application_error(-20004, ’Password should differ by at least 3 characters’);
    END IF;
    END IF;
    END IF;
    -- Everything is fine; return TRUE ;
    RETURN(TRUE);
    END;
    /
    ALTER PROFILE DEFAULT LIMIT
    PASSWORD_LIFE_TIME 90
    PASSWORD_GRACE_TIME 10
    PASSWORD_REUSE_TIME UNLIMITED
    PASSWORD_REUSE_MAX 10
    FAILED_LOGIN_ATTEMPTS 3
    PASSWORD_LOCK_TIME 1/24
    IDLE_TIME 15
    PASSWORD_VERIFY_FUNCTION verify_function_IRS;

E.11 Set the Default Profile Security Parameters

  1. The user profiles are used to restrict system resource uses as well as define some security parameters. The DEFAULT profile is used when no other profile is specified for the database account. The Default profile should be modified to secure database accounts that are not assigned a specific profile. Any custom profiles created in the database should also have the following the security parameters set

  2. Using OEM/DBA Studio, select security, select profiles, and select Default. Under the general tab, enter/verify the following settings:


    idle_time 15
    password_life_time 90
    password_reuse_max 10
    password_reuse_time 365
    failed_login_attempts 3

    Note:

    The password_reuse_max and password_reuse_time may only both be set in versions 9i and later. For earlier versions, set one to the required setting and the other to UNLIMITED.

  3. From SQLPLUS:


    ALTER PROFILE DEFAULT LIMIT
    PASSWORD_LIFE_TIME 90
    PASSWORD_REUSE_TIME 365
    PASSWORD_REUSE_MAX 10
    FAILED_LOGIN_ATTEMPTS 3
    PASSWORD_LOCK_TIME 1/24
    IDLE_TIME 15
    PASSWORD_VERIFY_FUNCTION verify_function_IRS

  4. Repeat the above steps replacing DEFAULT with the target profile name for any other profiles in use within the database.

  5. Consider defining security policy for other account profile parameters such as sessions per user. These parameters help further reduce the potential for database account compromise.

E.12 Set Time Restrictions for Application/Batch Processing Accounts

  1. One method to accomplish database account time restrictions from within the database is to lock and unlock the target account at specified intervals using the Oracle job queue. To restrict account access this way, follow the procedures below:

  1. Enable the database job queue by setting job_queue_processes in the init.ora file to a value greater than 0.

  2. Create a procedure to enable/disable the target database account: Create or replace procedure restrict_db_user (usrname varchar2, onoff varchar2) as begin execute immediate ‘alter user’||usrname||’ account ‘||onoff; end;

  3. Submit the job at 5PM to enable the account at midnight each night: Variable :jobno; Begin Dbms_job.submit (:jobno, ‘restrict_db_user(‘’joe’’,’’unlock’’);’, sysdate+(7/24), ‘sysdate + 1+(7/24)’); end; / print jobno

  4. Submit the job at 5PM to disable the account at 1:00 am each night: Variable :jobno;

    Begin Dbms_job.submit (:jobno, ‘restrict_db_user(‘’joe’’,’’lock’’);’, sysdate + (8/24), ‘sysdate +1+(8/24)’); end; / print jobno

  5. To view the jobs in the queue:

    • Select job,next_date,next_sec from dba_jobs;

E.13 Oracle File and Directory Ownership

  1. All files and directories installed by Oracle should be owned by the installation account and, for UNIX, group. On UNIX this is typically user Oracle and group OINSTALL although it is recommended by security experts that a different user name be used. One exception for this requirement is the Oracle listener, which should be changed to a different process owner account per Section B.16.1.2.1 (which, on some Unix platforms, may require changing file ownership or group membership of the listener executable).

  2. For Windows, Oracle files and directories are typically installed and owned by the BUILTIN\/Administrators group.

  3. For UNIX, use chmod OWNER:GROUP FILENAME. Example: chmod oracle:oinstall *

  4. For Windows, use the Windows Explorer. Right-click on the file name, select Properties, select the Security tab, select the Advanced button under the Permissions section, select the Owner tab. Files and directories should be owned by the BUILTIN\/Administrators group.

E.14 Set Operating System (OS) Permissions

  1. OS file permissions are granted to individual OS accounts or OS groups. In the case of an Oracle DBMS, the OS accounts we are interested in are the Oracle installation account, the SAs, the DBAs, and the application user OS accounts. The Oracle UNIX Inventory Group or ORAINVENTORY, typically named oinstall, is the owner of the Oracle Universal Installer directory. Any accounts used to install Oracle software must be a member of this group. If system backups are performed by separately defined OS accounts, then these accounts are also included. If the application user OS accounts shall not be running the Oracle application software from the server, then they require no access rights of their own to any Oracle directories or files.

  2. On Windows systems, Oracle is installed using the local administrator account. This account is a member of the local BUILTIN\/Administrators group on the server. The BUILTIN\/Administrators group should be listed as the owner of all Oracle software files and directories. A custom, dedicated, and restricted local administrator account should be used as the service account for all Oracle services on the host. If necessary, the account may be a Windows domain account. Under no circumstances should the account be a domain administrator account.

  3. No OS accounts outside of these groups should have any permissions to any directories or files related to the Oracle database.

E.14.1 UNIX File Permissions

  1. SAs/DBAs shall consult the installation guide for the version of Oracle that is being used for correct settings. These permissions are configured by default during installation. On a UNIX system, the umask must be set to 022 for the Oracle installation account during the Oracle software installation.

    UNIX ACCESS PERMISSIONS ON ORACLE DIRECTORIES AND FILES - FROM THE INSTALLATION GUIDE
     
    Directories/Files Permissions Comments  
    All database, redo log, and control files (extensions for these files are typically Dbf, .log, and .ctl) 640
    rw-r-----
    To maintain discretionary access to data, all databases, redo logs, and control files must be readable only by the oracle account and oinstall group.  
     
     
     
    $ORACLE_HOME /bin/ 755*
    rwxr-x--x
    Must be writable by the oracle software owner, and executable by all users.  
     
     
    $ORACLE_HOME/bin/oracle $ORACLE_HOME/bin/dbsnmp $ORACLE_HOME/bin/oradism 6751***
    rws-r-s--x
    The 6 sets the setuid bit and the setgid bit so the executables run as the oracle user and DBA group, regardless of who executes them.  
     
     
    All other executables. 755 **
    rwxr-xr--x
    Must be writable by the oracle account and executable by others  
    $ORACLE_HOME/lib/ 755 ** rwxr-xr-x The directory is readable, writable, and executable by the owner, readable and executable by all other users.  
    All files under $ORACLE_HOME/lib/ 644
    rw-r--r--
    The files are readable and writable by the owner, read-only for all other users.  
     
    $ORACLE_HOME/rdbms/log 751 **
    rwxr-x--x
    Restricts access to files in the directory to the oracle account and ORAINENTORY group.  
    Product subdirectories such as $ORACLE_HOME/sqlplus or $ORACLE_HOME/rdbms 751 **
    rwxr-x--x
    Restricts access to log files to the oracle account and ORAINVENTORY group.  
    Files in $ORACLE_HOME/sqlplus or $ORACLE_HOME/rdbms 644
    rw-r--r--
    The files are readable and writable by the owner, read-only for all other users  
    $ORACLE_HOME/network/trace 777
    rwxrwxrwx
    or
    730 ****
    rwx-wx---
    777 allows broad access to view and create trace files during development. Use 730 in a production environment to ensure that only the oracle account and the ORAINVENTORY group have access to trace files.  
    All files under product admin directories like $ORACLE_HOME/rdbms/admin and $ORACLE_HOME/sqlplus/admin 644
    rw-r--r--
    SQL scripts should typically be run as the SYS user.  
    ORACLE UNIX FILE PERMISSIONS  
    * For versions earlier than 9.2, the permissions for these files should be set to 751 or more restrictive.  
    ** Files in these directories should be set 750 or more restrictive than the installation default.  
    ***A variance to Oracle’s listed permissions for these files is required. The set group id is not required and should not be set. Thus the permissions should be 4751.  
    ****The $ORACLE_HOME/network/trace should have file permissions set to 730, which is different than the default installation setting. This shall prevent unauthorized user from viewing potentially sensitive information stored in database log and trace files.  

  2. Verify that all oracle files have as their group the oracle dba group. Use chgrp to change group ownership of all files in the current directory:

    % chgrp dba * - Check that all directories in the path of $ORACLE_HOME have at least a 755 mask.

  3. For example, if ORACLE_HOME = /u01/app/oracle/product/9.2.0.1.0, then the directories…

    app/oracle and app/oracle/product/9.2.1.0 should all have a mask of 755. This means their permissions should be: rwxr-xr-x.

  4. If they are less restrictive then modify them with the command:

    % chmod 755 <directory_name>

  5. Verify that the only Oracle executables with the SETUID bit set are oracle.exe, oradism.exe, and dbsnmp.exe. If Oracle Internet Directory is in use, then oidldapd.exe also requires the SETUID bit.

    ls -l $ORACLE_HOME/bin/*

  6. Confirm that the following executables show permissions as follows:

    rwsr-s--- 1 oracle dba 7330847 Oct 20 11:01 oracle
    rwsr-x--- 1 oracle dba 62009 Dec 31 1993 dbsnmp
    r-sr-s--- 1 root dba 9807 Feb 27 2003 oradism

  7. If necessary to correct the ownership or permissions of any entries, use the following as an example:

    chmod 4750 $ORACLE_HOME/bin/oracle (for SETUID specific files)
    chmod 751 $ORACLE_HOME/sqlplus/* (for other files)
    chown oracle $ORACLE_HOME/bin/dbsnmp (for all files in the oracle directories except oradism which must be owned by root)

E.14.2 Windows File Permissions

  1. The following Windows file permission specifications for Oracle directories and files is from the Oracle 9i Database Installation Guide Release 2 for Windows:

    DIRECTORY GROUP AND PERMISSIONS
    \/ORACLE_BASE\/ ORACLE_HOME - Administrators - Full Control
    - System - Full Control
    - Authenticated Users - Read, Execute, and List Contents
     
     
     
    - \/ORACLE_BASE\/admin\/ database_name
    -\/ORACLE_BASE\/oradata\/database_name
    -\/ORACLE_BASE\/ORACLE_HOME\/database\/
    - spfile SID.ora
    - Administrators - Full Control
    - System - Full Control
     
     
     
    ORACLE WINDOWS FILE PERMISSIONS  

    Note:

    By default, the Oracle database Windows services use the Windows local SYSTEM built-in security account. Therefore, file permissions must be granted to the SYSTEM account of the local computer running the Oracle database. However, this IRM requires that a custom account be created for exclusive use for the Oracle services. This account is a member of the local Administrators group. Only SYSTEM, BUILTIN\/Administrators group, and the DBA group if created (ORA_DBA) may be granted Full-Control access to the Oracle directories.

    Note:

    To remove inherited user rights, you must deselect the ‘inherit from parent option’.

    Note:

    Restrict access to the Program Files\/Oracle folder to Oracle DBA, SYSTEM, and BUILTIN\/Administrators only.

E.14.3 Special Files

  1. The $ORACLE_BASE/dbs/Orapwd<sid> file stores passwords for privileged database users in encrypted format. Restrict access to the ORAPWD<sid>.ORA file to the appropriate users.

  2. UNIX: chmod 640 $ORACLE_HOME/dbs/ORAPWD<sid>.ora

  3. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/dbs\/ORAPWD<sid>.ora, select Properties, Security tab, remove all access privileges except those assigned to local Administrators, and DBAs.

  4. The $ORACLE_HOME/network/admin/listener.ora file contains the password for the Oracle listener. If the password has been defined by editing this file, the password is stored in clear text rather than in encrypted format. Restrict access to the listener.ora file to the appropriate users.

  5. UNIX: chmod 640 $ORACLE_HOME/rdbms/admin/listener.ora

  6. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/rdbms\/admin\/listener.ora, select Properties, Security tab, and remove all access privileges except those assigned to local Administrators, and DBAs.

  7. The $ORACLE_HOME/network/admin/Dbsnmp_rw.ora and Dbsnmp_ro.ora files support the Oracle Intelligent Agent. They may contain the password of the DBSNMP database account if the password has been changed from the default. Restrict access to these files to the appropriate accounts.

  8. UNIX: chmod 640 $ORACLE_HOME/rdbms/admin/dbsnmp_rw.ora

  9. UNIX: chmod 640 $ORACLE_HOME/rdbms/admin/dbsnmp_ro.ora

  10. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/rdbms\/admin\/dbsnmp_rw.ora, select Properties, Security tab, and remove all access privileges except those assigned to local Administrators, and DBAs.

  11. The $ORACLE_HOME/network/admin/sqlnet.ora (and protocol.ora file for Oracle database version 8i and 8) file contains network configuration parameters for the listener. Restrict access to the sqlnet.ora file to the appropriate users.

  12. UNIX: chmod 640 $ORACLE_HOME/rdbms/admin/sqlnet.ora

  13. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/rdbms\/admin\/sqlnet.ora, select Properties, Security tab, and remove all access privileges except those assigned to local Administrators, and DBAs.

  14. The $ORACLE_HOME/network/log directory contains the log files produced by the Oracle listener, the Intelligent Agent, and other network components. Restrict access to these files in this directory to the appropriate users.

  15. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/network\/log\/listener.log, select Properties, Security tab, and remove all access privileges except those assigned to local Administrators, and DBAs.

  16. Following is a list of possible log and trace file directories all found under ORACLE_HOME:

    1. Admin/bdump, admin/cdump, admin/create, admin/udump

    2. Ctx/log

    3. He's/log

    4. Ldap/log

    5. Network/log

    6. Otrace/admin

    7. Sysman/log

  17. UNIX: chmod 640 $ORACLE_HOME/*/log-trace-directory/*.log and *.trc

  18. WINDOWS: From Windows Explorer, right click on $ORACLE_HOME\/*\/log-tracedirectory\/*. log or *.trc, select Properties, Security tab, and remove all access privileges except those assigned to local Administrators, and DBAs.

E.14.4 Windows Registry Permissions

  1. Restrict access to the HKEY_LOCAL_MACHINE\/SOFTWARE\/ORACLE keys to Full Control to local Administrators and the Oracle DBA group. Grant only Read permissions to local groups of users that may require it. To remove/adjust permissions:

    Open the registry.
    Select HKEY_LOCAL_MACHINE.
    Expand SOFTWARE.
    Expand SOFTWARE.
    Select Permissions from the Security main menu. The Registry Key Permissions dialog box appears.
    Click on the Add button to add Administrators and/or Oracle DBAs if necessary; Select Full Control; Select Apply.
    Select the name to remove. Click on the Remove button. Select Apply.
    Click on the OK button.
    Exit the registry.

E.14.5 OS/390 Security Settings

  1. The following security steps must be completed to secure an Oracle installation on OS/390 systems. For details on completing these steps, please refer to Oracle’s Oracle9i Enterprise Edition Installation Guide Release 1 for OS/390 or Oracle’s Oracle8i Enterprise Edition for OS/390 Installation Guide.

    1. Configure library security

    2. Configure VSAM File Security

    3. Secure Oracle MPM restricted commands CRTCNV, MPMCMD, SVRMGRL

    4. Disable user of MPM user logon and role exits

    5. Configure resource classes for Oracle OSDI

    6. Configure resource profiles for Oracle OSDI binds

    7. Set LOGIN_AUTH to None or SAF

E.15 Set the Audit Configuration

The DBA shall set audit configurations in accordance with the instructions in E.15.

E.15.1 Auditing Options

  1. There are three (3) types of auditable events — use of system privileges, use of object privileges, or issuance of statements. Activating some auditing options sometimes activates others. For example, the use of a system privilege requires the issuance of a system command. Auditing for use of the privilege also audits for the statement.

  2. This IRM requires auditing of the use of all auditable system privileges.

    From SQLPLUS:
    AUDIT ALL PRIVILEGES BY ACCESS:
    AUDIT SYSDBA BY ACCESS;
    AUDIT SYSOPER BY ACCESS;
    AUDIT ALTER ANY OPERATOR BY ACCESS;

  3. This IRM additionally requires auditing of the SQL statements enabled by the following commands with the exceptions listed afterwards:

    From SQLPLUS:
    AUDIT ALTER SEQUENCE by access;
    AUDIT ALTER TABLE by access;
    AUDIT COMMENT TABLE by access;
    AUDIT GRANT DIRECTORY by access;
    AUDIT GRANT PROCEDURE by access;
    AUDIT GRANT SEQUENCE by access;
    AUDIT GRANT TABLE by access;
    AUDIT GRANT TYPE by access;

  4. The following SQL statements shall disable audits set by the commands above that are not required:

    NOAUDIT EXECUTE ANY LIBRARY;
    NOAUDIT EXECUTE ANY PROCEDURE;
    NOAUDIT EXECUTE ANY TYPE;
    NOAUDIT EXECUTE LIBRARY;
    NOAUDIT LOCK ANY TABLE;
    NOAUDIT SELECT ANY SEQUENCE;
    NOAUDIT UPDATE ANY TABLE;
    NOAUDIT DELETE ANY TABLE;
    NOAUDIT EXECUTE ANY INDEXTYPE;
    NOAUDIT EXECUTE ANY OPERATOR;
    NOAUDIT INSERT ANY TABLE;
    NOAUDIT NETWORK;
    NOAUDIT DELETE TABLE;
    NOAUDIT INSERT TABLE;
    NOAUDIT UPDATE TABLE;
    NOAUDIT EXECUTE PROCEDURE;
    NOAUDIT SELECT TABLE;
    NOAUDIT SELECT SEQUENCE;

  5. The only application object auditing required is RENAME. This option must be applied by default to any newly created objects.

    From SQLPLUS:
    Audit rename on default by access;

  6. If application objects have already been created, then the audit rename on object statement should be issued for all application objects.

    From SQLPLUS:
    Audit rename on application_object_name by access;

E.15.2 Protecting Auditing Data

  1. If the audit table has been created in the database, auditing for update and delete must be enabled whether or not the table is currently in use. Old records may exist or auditing could be redirected to the database tables. If you do not wish to maintain auditing on these tables, then drop the table from your database.

  2. For an audit trail stored within the database:

    From SQLPLUS:
    Audit update, delete on SYS.AUD$;

  3. For audit trails stored in external OS files, verify with the SA that these files are being audited for the same audit items as audits stored within the internal DB files.

    Verify that only authorized database accounts have access to the audit data:

    From SQLPLUS:
    Select GRANTEE, PRIVILEGE from DBA_TAB_PRIVS where
    TABLE_NAME = ’AUD$’ and GRANTEE !=’DELETE_CATALOG_ROLE’;

    Review the list to confirm that any assignments are authorized.

    Verify that audit data stored in the database is owned by SYS, SYSTEM, or an authorized user.

    From SQLPLUS:

    Select OWNER from DBA_TABLES where TABLE_NAME=’AUD$’;

    Verify that only authorized database accounts have privileges to enable or disable auditing.

    From SQLPLUS:

    Select GRANTEE from DBA_SYS_PRIVS where PRIVILEGE like ’%AUDIT%’;

E.16 Revoke Privileges Assigned to PUBLIC

Note:

Revoking all default installation privilege assignments from PUBLIC is not required at this time. However, execute permissions to the specified packages is required to be revoked from public.

  1. PUBLIC is a default system role to which every database account is granted membership automatically. While convenient, use of this role to grant privileges to database accounts bypasses the responsibility to assign privileges with discrimination.

  2. At a minimum, revoke the following:

    From the SQLPLUS prompt:

    Revoke execute on SYS.UTL_SMTP from PUBLIC;
    Revoke execute on SYS.UTL_TCP from PUBLIC;
    Revoke execute on SYS.UTL_HTTP from PUBLIC;
    Revoke execute on SYS.UTL_FILE from PUBLIC;
    Revoke execute on SYS.DBMS_RANDOM from PUBLIC;
    Revoke execute on SYS.DBMS_LOB from PUBLIC;
    Revoke execute on SYS.DBMS_SQL from PUBLIC;
    Revoke execute on SYS.DBMS_JOB from PUBLIC;
    Revoke execute on SYS.DBMS_BACKUP_RESTORE from PUBLIC;

    Note:

    DBMS_BACKUP_RESTORE does not exist in 9i and later.

    From SQLPLUS:

    Revoke any system privileges granted to PUBLIC (No system privileges are assigned to PUBLIC by default.) select privilege from dba_sys_privs where grantee=’PUBLIC’;

  3. From SQLPLUS:

    Revoke any system privileges granted to PUBLIC (No system privileges are assigned to PUBLIC by default.) To locate the system privileges execute the following code:

    select privilege from dba_sys_privs where grantee='PUBLIC';

  4. For each privilege returned, issue:

    Revoke privilege on object_name from PUBLIC;

  5. The DBA shall locate and revoke any custom roles granted to PUBLIC (No roles are assigned to PUBLIC by default.).

  6. For each role listed, issue: Revoke <role> from PUBLIC;

  7. The DBA shall revoke custom object privileges from PUBLIC. To discover the custom privileges invoke the following code:

    • SELECT * from dba_tab_privs

    • WHERE grantee=’PUBLIC’ AND

    • OWNER not in ('SYS','CTXSYS', 'MDSYS', 'ODM', 'OLAPSYS', 'MTSSYS', 'ORDPLUGINS', 'ORDSYS', 'SYSTEM','WKSYS', 'REMISS', 'XDB', LBACSYS');

  8. For each privilege returned, issue:

    • Revoke <privilege> on <object_name> from PUBLIC;

    You shall need to connect as the user that granted the privilege in order to revoke it. DBA may create scripts to remove all default object privileges assigned to PUBLIC. This is not a current requirement, however, it may be implemented to ensure the concept of least privilege is applied to your database. Make sure that you create custom roles and assign any necessary privileges to system objects to those roles.

E.17 Secure Host Directory Access

  1. The UTL_FILE capability in Oracle, allows users to gain access to host system files and directories. Applications may take advantage of this capability for a variety of reasons. However, this capability may be exploited and grant unauthorized access to the host system file structure. The following SQLPlus command shall list any procedures that use this feature. Verify that any use of this package is justified.

    From SQLPLUS:

    Select distinct dbo.object_type, dbo.object_name from
    where dbo.owner not in
    (’CTXSYS’,’DBSNMP’,’MDSYS’,’ORDPLUGINS’,
    ’ORDSYS’,’OAS_PUBLIC’,’OUTLN’,’SYS’,’SYSTEM’)
    and dbo.object_type in (’PACKAGE BODY’,’PACKAGE’,’PROCEDURE’)
    and dbo.object_name !=’UTL_FILE’
    and dbt.owner = dbo.owner
    and dbt.table_name = dbo.object_name
    and ds.owner = dbo.owner
    and ds.name = dbo.object_name
    and (ds.text like ’%UTL_FILE%’ or ds.text like ’%utl_file%’);

E.18 Revoke Privileges to Assign Permissions

  1. DBA, application owner, and application administrator accounts should be the only database accounts with the privilege to assign permissions to other users. While object owners gain this privilege automatically, in a secure environment, only the DBAs carry the privilege to create objects in a production environment. Application objects are created only during application installation and maintenance operations. The following SQLPlus statements shall list all users and roles that have been assigned these administrative privileges.

  2. Check for roles granted with the administrative option:

    From SQLPLUS:

    Select GRANTEE, GRANTED_ROLE from DBA_ROLE_PRIVS where ADMIN_OPTION=’YES’
    and GRANTEE not in (’SYS’,’SYSTEM’,’DBA’, ’LBACSYS ’, ’WKSYS ’);
    Revoke role from username;
    Grant role to username; (without admin_option)

  3. Check for system privileges granted with the administrative option:

    From SQLPLUS:

    Select GRANTEE, PRIVILEGE from DBA_SYS_PRIVS where ADMIN_OPTION=’YES’
    and GRANTEE not in (’SYS’,’SYSTEM’,’DBA’,’AQ_ADMINISTRATOR_ROLE’, ’MDSYS’, ’LBACSYS’);
    Revoke system privilege from username;

  4. Find and disable object privileges to ensure custom users/roles or PUBLIC do not have administrative privileges:

    From SQLPLUS:

    Select GRANTEE||’ ’||PRIVILEGE||’ ’||OWNER||’.’||TABLE_NAME from DBA_TAB_PRIVS where GRANTABLE=’YES’
    and GRANTEE not in (’SYS’,’SYSTEM’,’DBA’, ’OLAPSYS’, ’CTXSYS’, ’PUBLIC’, ’LBACSYS’)
    and TABLE_NAME not in (Select SYNONYM_NAME from DBA_SYNONYMS
    where SYNONYM_NAME=TABLE_NAME);

E.19 Revoke Predefined Role Assignments

  1. Predefined roles are those roles defined by default during an Oracle installation. Depending upon which options were selected, the list of predefined roles within an environment can vary. Default roles are assigned privileges based on Oracle’s default user group types and are not appropriate for most general application usage. For example, the CONNECT default role has the privilege to create several object types including tables, views, and database links. Custom roles should be used that limit privileges to those specifically needed for the user to perform the assigned function.

    Note:

    You may have different predefined roles defined at your site based on the options selected at installation. Add any not listed below in the command when you issue it.

    From SQLPLUS:

    Select GRANTEE, GRANTED_ROLE from DBA_ROLE_PRIVS
    where GRANTED_ROLE in (
    ’AQ_ADMINISTRATOR_ROLE’,
    ’AQ_USER_ROLE’,
    ’CONNECT’,
    ’CTXAPP’,
    ’DBSNMP’,
    ’DELETE_CATALOG_ROLE’,
    ’EXECUTE_CATALOG_ROLE’,
    ’EXP_FULL_DATABASE’,
    ’HS_ADMIN_ROLE’,
    ’IMP_FULL_DATABASE’,
    ’JAVA_ADMIN’,
    ’JAVADEBUGPRIV’,
    ’JAVAIDPRIV’,
    ’JAVASYSPRIV’,
    ’JAVAUSERPRIV’,
    ’OEM_MONITOR’,
    ’OSDBA’,
    ’OSOPER’,
    ’OUTLN’,
    ’PLUSTRACE’,
    ’RECOVERY_CATALOG_OWNER’,
    ’RESOURCE’,
    ’SELECT_CATALOG_ROLE’,
    ’SNMPAGENT’,
    ’SYS’,
    ’SYSDBA’,
    ’SYSOPER’,
    ’SYSTEM’,
    ’TIMESERIES_DBA’,
    ’TIMESERIES_DEVELOPER’,
    ’TKPRFER’)
    and GRANTEE not in (
    ’SYS’,’SYSTEM’,’DBA’,’EXP_FULL_DATABASE’,’IMP_FULL_DATABASE ’,
    ’EXECUTE_CATALOG_ROLE’,’JAVASYSPRIV’,’OEM_MONITOR’,
    ’OUTLN’,
    ’WKSYS’,
    ’OSE$HTTP$ADMIN’,
    ’ORDPLUGINS’,
    ’LBACSYS’,
    ’WKUSER’,
    ’ORDSYS’,
    ’SELECT_CATALOG_ROLE’,
    ’CTXSYS’,
    ’AURORA$JIS$UTILITY$’,’DBSNMP’);
    Revoke role from username/role;

E.20 Application Administration Roles Enabled by Default

  1. Application Administration roles are determined by the granting of create user, alter user, and drop user privileges. These roles should not be enabled by default upon connection to the database, but should be enabled/disabled as required by the application administration function.

    From SQLPlus:

    Select grantee||’ ’||granted_role from dba_role_privs
    Where default_role=’YES’
    And granted_role in

    (select grantee from dba_sys_privs where privilege like ’%USER%’
    and grantee not in (’CTXSYS’, ’DBA’, ’IMP_FULL_DATABASE’, ’MDSYS’, ’SYS’, ’WKSYS’))
    and grantee not in (’DBA’, ’SYS’, ’SYSTEM’);

  2. For each role assignment returned, issue:
    Alter user username default role all except role;
    If the user has more than one application administration role assigned, then you shall have to remove assigned roles from default assignment and assign individually the appropriate default roles.

E.21 Configure Privileges Assigned to Users

  1. Efficient administration of privileges improves system security. The categorization of user privilege requirements by function and the use of roles to assign these privileges improve the efficiency of privilege administration.

  2. Check for any system privileges assigned to non-default users and roles or PUBLIC.

  3. System privileges should not be granted directly to any user nor should they be granted to application user roles. From the listing of users and roles produced from the following SQL statement, verify that roles granted system privileges are authorized and are not assigned directly to database accounts or PUBLIC.

    From SQLPLUS:

    Select GRANTEE,PRIVILEGE from DBA_SYS_PRIVS
    where PRIVILEGE <> ’CREATE SESSION’
    and GRANTEE not in (
    ’AQ_ADMINISTRATOR_ROLE’,
    ’AQ_USER_ROLE’,
    ’AURORA$ORB$UNAUTHENTICATED’,
    ’CONNECT’,
    ’CTXAPP’,
    ’DBSNMP’,
    ’DELETE_CATALOG_ROLE’,
    ’EXECUTE_CATALOG_ROLE’,
    ’EXP_FULL_DATABASE’,
    ’HS_ADMIN_ROLE’,
    ’IMP_FULL_DATABASE’,
    ’JAVA_ADMIN’,
    ’JAVADEBUGPRIV’,
    ’JAVAIDPRIV’,
    ’JAVASYSPRIV’,
    ’JAVAUSERPRIV’,
    ’MDSYS’,
    ’OEM_MONITOR’,
    ’OSDBA’,
    ’OSOPER’,
    ’OUTLN’,
    ’PLUSTRACE’,
    ’RECOVERY_CATALOG_OWNER’,
    ’RESOURCE’,
    ’SELECT_CATALOG_ROLE’,
    ’SNMPAGENT’,
    ’SYS’,
    ’SYSDBA’,
    ’SYSOPER’,
    ’SYSTEM’,
    ’TIMESERIES_DBA’,
    ’TIMESERIES_DEVELOPER’,
    ’TKPROFER’);

To remove unauthorized privileges:

Revoke privilege from username/role;

  1. Check for any object privileges granted directly to users. Object privileges should be granted to roles and the roles granted to the appropriate users. Any results of the command below indicate direct assignment of object privileges.

    From SQLPLUS:

    Select distinct GRANTEE from DBA_TAB_PRIVS
    where GRANTEE not in (select ROLE from DBA_ROLES);

  2. Review the list of GRANTEEs to see if any are not Oracle predefined accounts. For any custom accounts, connect as the grantor of the privilege and:

    Select PRIVILEGE||’ ‘||OWNER||’.’||TABLE_NAME from DBA_TAB_PRIVS where GRANTEE =’myGrantee’;

  3. Revoke privilege on owner.object from username/role;

    To determine non-default object privileges assigned to PUBLIC:

    Select privilege||’ on ’||owner||’. ’||table_name from dba_tab_privs
    Where grantee=’PUBLIC’
    And owner not in (
    ’SYS’,
    ’CTXSYS’,
    ’MDSYS’,
    ’ODM’,
    ’OLAPSYS’,
    ’MTSYS’,
    ’ORDPLUGINS’,
    ’ORDSYS’,
    ’SYSTEM’,
    ’WKSYS’,
    ’XDB’,
    ’LBACSYS’);

  4. No users or roles should have the Alter or Reference privilege on any database objects.

    From SQLPLUS:

    Select GRANTEE||’ ’||PRIVILEGE||’ ’||OWNER||’.’||TABLE_NAME from DBA_TAB_PRIVS
    where (PRIVILEGE like ’%ALTER%’ or PRIVILEGE like ’%REFERENCE%’)
    and GRANTEE !=’SYSTEM’
    and GRANTOR != ’MDSYS’;

  5. Revoke privilege on owner.object from username/role;

  6. Verify that users do not have access to DBA data.

    From SQLPLUS:

    Select GRANTEE||’ ’||PRIVILEGE||’ ’||TABLE_NAME from DBA_TAB_PRIVS
    where (owner=’SYS’ or table_name like ’DBA_’)
    and grantee not in (
    ’AQ_ADMINISTRATOR_ROLE’,
    ’AQ_USER_ROLE’,
    ’AURORA$JIS$UTILITY$’,
    ’DBA’, ’EXECUTE_CATALOG_ROLE’,
    ’EXP_FULL_DATABASE’,
    ’HS_ADMIN_ROLE’,
    ’IMP_FULL_DATABASE’,
    ’ORDSYS’,
    ’OSE$HTTP$ADMIN’,
    ’OUTLN’,
    ’PUBLIC’,
    ’SELECT_CATALOG_ROLE’,
    ’SNMPAGENT’,
    ’SYSTEM’,
    ’DELETE_CATALOG_ROLE’,
    ’GATHER_SYSTEM_STATISTICS’,
    ’LOGSTDBY_ADMINISTRATOR’,
    ’MDSYS’,
    ’ODM’,
    ’OEM_MONITOR’,
    ’OLAPSYS’,
    ’WKUSER’,
    ’WMSYS’,
    ’WM_ADMIN_ROLE’,
    ’XDB’,
    ’TRACESVR’)
    and grantee not in (select grantee from dba_role_privs where granted_role=’DBA’);

  7. Revoke privilege on owner.object from role/username;

  8. Verify that any object owner accounts have been disabled.

  9. Object owners are implicitly assigned special privileges to their objects by virtue of their ownership.

    From SQLPLUS:

    Select distinct owner from dba_objects, dba_users
    Where owner not in (’SYS’, ’SYSTEM’, ’MDSYS’, ’CTXSYS’,
    ’ORDSYS’, ’ORDPLUGINS’, ’AURORA$JIS$UTILITY$’, ’ODM’, ’ODM_MTR’, ’OLAPDBA’, ’OLAPSYS’, ’MTSSYS’, ’OSE$HTTP$ADMIN’, ’OUTLN’, ’LBACSYS’, ’PUBLIC’, ’DBSNMP’, ’RMAN’, ’WKSYS’, ’WMSYS’, ’XDB’)
    and owner=username
    and account_status not like ’%LOCKED’;

    Alter user username account lock;

E.22 Disable the PL/SQL EXTPROC Module

  1. If the EXTPROC module is not in use, then it should be removed and/or disabled. Edit the listener.ora and tnsnames.ora files in the ORACLE_HOME/network/admin directory and remove one of the following entries from each of the configuration files (depends upon the OS and release of the Oracle Database server installed):
    * icache_extproc, or
    * PLSExtproc, or
    * extproc

  2. Remove the EXTPROC executable from the $ORACLE_HOME/bin directory.

E.23 Configure a Non-Default Port for the Oracle Listener

  1. To protect the listener from casual access do not use the well-known default port of 1521. To change the default port edit the LISTENER.ORA file to specify a different available port. Following is an example:
    MYLISTENR =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.122.67)(PORT = 1527))
    )

  2. When the default name and port assignment for the listener are not used, then the listener must be defined in the INIT<SID>.ORA file using the LOCAL_LISTENER parameter. An example of this parameter seeing follows:
    LOCAL_LISTENER= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.122.67)(PORT = 1527))

E.24 Listener Connection Request Timeout

  1. The listener shall wait indefinitely for a client to complete a database network connection. This leaves the listener vulnerable to a denial of service attack. To prevent this, specify a timeout limit for the listener. In Oracle 8i, this is done by specifying the CONNECT_TIMEOUT_listener_name parameter in the LISTENER.ORA file. In Oracle 9i, use the LISTENER.ORA parameter INBOUND_CONNECT_TIMEOUT_listener_name to specify the timeout limit. For 9i, the SQLNET.ORA parameter SQLNET.INBOUND_CONNECT_TIMEOUT parameter is also required on the database host server. The timeout is expressed in seconds and should be set to 3 seconds or less where feasible.
    8i: LISTENER.ORA: CONNECT_TIMEOUT_MyListener = 3
    9i: LISTENER.ORA: INBOUND_CONNECT_TIMEOUT_MyListener = 3
    9i: SQLNET.ORA: SQLNET.INBOUND_CONNECT_TIMEOUT = 3

E.25 Restrict Database Access from the Network

  1. To further protect your database from unauthorized remote access, network address restrictions may be enforced by the Oracle listener. Network address restriction is required when the PLSQL EXTPROC is in use to protect against unauthenticated access to the database. (Please see Oracle Alert #29 for more information.) To enable network address restriction, edit the SQLNET.ORA file on the database host system to include the following:
    tcp.validnode_checking = YES
    tcp.invited_nodes = {list of IP addresses}
    tcp.excluded_nodes = {list of IP addresses}

E.26 Disable/Secure the Oracle XML Protocol Server

  1. The Oracle XML Protocol Server is configured during database installation if XML Support is selected. Unless required, the XML Protocol Server should be disabled. If required, the XML Protocol server should be configured to log a minimum of unsuccessful logins. To disable the XML Protocol Server, remove any dispatcher reference to it in the INITSID.ORA file. Such a reference usually appears as:

    Dispatchers="(PROTOCOL=TCP)(SERVICE=<SID>XDB) "

  2. If the XML Protocol Server is required, then the logging of logins must be enabled. This configuration is stored in the XML resource named /xdbconfig.xml and is most easily configured using Enterprise Manager. Expand the Database, expand XML Database, select Configuration. The XML Database Parameters table shall be displayed. Set both the ftp-log-level and http-loglevel parameters to a value of 1 instead of 0.

  3. It is also a good idea to configure the ports to a non-default port. Specify a port other than 2100 for the FTP port and 8080 for the http port if possible.

E.27 Remove OEM Database Components/Intelligent Agent

  1. If not required, remove the Oracle Enterprise Manager (OEM) database components. This can be done by running the $ORACLE_HOME/rdbms/admin/catnsnmp.sql procedure. Also delete or rename the Oracle Intelligent Agent executable file ORACLE_HOME/bin/dbsnmp.

E.28 Database Link Passwords

  1. Database links define connections to external databases. This IRM stipulates that database links shall only be used to support database replication. Database links are required to use the current database session connection credentials to access remote databases. This requirement prevents the storage of static or fixed user database accounts with their unencrypted passwords inside the database link table, SYS.LINK$.

  2. List any defined static database links without passwords.

    From SQLPLUS:
    Select NAME from LINK$ where PASSWORD is NOT NULL;
    - Drop the current database link after noting definition.
    Drop database link database link;
    - Recreate the database link without a password.

    From SQLPLUS:
    Create [PUBLIC] database link dblink name.
    - Confirm that replication is being used if any database links were found.

    From SQLPLUS:
    Select GNAME from REPGROUP;

E.29 Configure Database Architecture

  1. - To prevent loss of service during disk a failure, multiple copies of Oracle control files should be maintained on separate disks.

    From SQLPLUS:
    Select * from v$controlfile;
    To create additional control files:
    Edit the existing init.ora file.
    Find the line with "CONTROLFILES="
    Add the full file spec for the new control file to the line.
    Save the changed file.
    Shut down the database.
    Copy one of the existing control files to the name and location of the new control file.
    Restart the database.

  2. Confirm that at least two redo log file groups with two members each are available:

    From SQLPLUS:
    Select * from v$logfile;

    To define additional redo log file groups:
    ALTER DATABASE database
    ADD LOGFILE GROUP 3
    (’diska:log3.log’ ,
    ’diskb:log3.log’) SIZE 50K;

    To add additional redo log files to an existing redo log file group:
    ALTER DATABASE database
    ADD LOGFILE MEMBER ’diskc:log3.log’
    TO GROUP 3;

E.30 Configure Domain Prefix for Windows OS Authentication for Oracle 8.1.5 and Earlier Versions

  1. Use the Windows REGEDT32 utility to configure this registry setting. From the Windows desktop of the database host system, type Start/Run and enter REGEDT32 in the Open: text box. Click the OK button to run the utility.

    Select the HKEY_LOCAL_MACHINE window.
    Expand Software; expand Oracle; select the HOMEID where ID is the Oracle home number.
    Select Edit/Add Value from the menu bar.
    Enter Value Name = OSAUTH_PREFIX_DOMAIN
    Enter Data Type = REG_SZ
    Enter String = TRUE
    Close REGEDT32

E.31 Secure SQL*Plus Host Command

  1. The SQL*Plus HOST command grants access from within the SQL*Plus to the host command line with the authorization of the Oracle process on the host system. At a minimum, the HOST command should be disabled to prevent such access. Review additional SQL*Plus commands in Oracle’s SQL*Plus User’s Guide and Reference for inclusion in the access control table PRODUCT_USER_PROFILE.

    From SQL*Plus:
    INSERT INTO PRODUCT_USER_PROFILE VALUES (’SQL*Plus’, ’%’, ’HOST’, NULL, NULL, ’DISABLED’, NULL, NULL);

E.32 Assign Non-SYSTEM Default and Temporary Tablespaces to Users

  1. To view database accounts assigned the SYSTEM tablespace as either their default or temporary tablespace issue the following SQL command:

    Select username from dba_users where default_tablespace = ‘SYSTEM’;

  2. For each custom-defined user listed from above, issue the following SQL command replacing "USERS" with the name of the default tablespace for users system and USERNAME with the name of the user to alter.

    Alter user USERNAME default tablespace DEFAULT;

    Repeat these two steps for the temporary tablespace assignment, replacing TEMPORARY with the system temporary tablespace for users, using the following SQL commands:

    Select username from dba_users where temporary_tablespace=’SYSTEM’; Alter user USERNAME temporary tablespace TEMPORARY;

    Revoke any unnecessary explicit tablespace quotas on the SYSTEM tablespace.

    To view explicit assignments, use the SQL command:

    Select username from dba_ts_quotas
    where max_bytes > 0 and tablespace_name=’SYSTEM’;

E.33 Set Database Archive Mode On

  1. To view the database archive log mode, issue the SQL command: Select log_mode from v$database;

  2. Before changing the archivelog mode, make sure that you have storage capacity for the archived redo log files.

  3. If the value returned is NOARCHIVELOG, then archive mode needs to be activated. To set archive log mode on, issue the following SQL statements (the database must be shutdown):
    Shutdown;
    Startup mount exclusive;
    Alter database archivelog;
    Shutdown;
    Startup;

E.34 Disable the Oracle Trace Utility

  1. The Oracle trace utility is enabled by default. To disable it, simply delete all *.dat files from the Oracle trace directory. The database must be shutdown during the following file deletion.

    For UNIX, do the following:
    Cd $ORACLE_HOME/otrace/admin
    Rm –f *.dat

    For Windows from the command prompt (replace ORACLE_HOME with the Oracle home directory path:
    Cd ORACLE_HOME\/otrace\/admin
    Del *.dat

E.35 Encrypt Stored Procedures

  1. You can use WRAP utility:

    e.g., proc.sql contains the sql to create the procedure.

    having tested the procedure, you can use wrap utility as $wrap iname=proc.sql

    this shall generate proc.plb, run proc.plb in sqlplus to create the encrypted procedure.

E.36 Create Baseline for Stored Procedures

  1. The following function and SQL commands together define a capability to determine the MD5 hash value for stored procedure code. The returned hash values when stored may be used for later comparison to detect modification. Before running the procedure, consider spooling the results to a text file on the host. Output may also be directed to a database table with modification to the procedure.
    CREATE OR REPLACE FUNCTION COMPUTE_MD5 (PROC_NAME_IN IN VARCHAR2)
    RETURN VARCHAR2
    IS
    all_text VARCHAR2(32767);
    cur_MD5 VARCHAR2(32767);
    BEGIN
    for x in (select text from user_source where name=PROC_NAME_IN)
    loop
    cur_MD5 := dbms_obfuscation_toolkit.md5(input => utl_raw.cast_to_raw(x.text));
    all_text := dbms_obfuscation_toolkit.md5(input => (cur_MD5 || all_text));
    end loop;
    RETURN all_text;
    END;
    /
    SHOW ERRORS;
    SET SERVEROUTPUT ON SIZE 1000000;
    DECLARE
    BEGIN
    for x in (select distinct name from user_source)
    loop
    DBMS_OUTPUT.PUT_LINE(CHR(10));
    DBMS_OUTPUT.PUT_LINE(’Procedure: ’ || x.name) ;
    DBMS_OUTPUT.PUT_LINE(’MD5: ’ || COMPUTE_MD5(x.name));
    end loop;
    END;
    /

Exhibit 10.8.4-6  (02-21-2008)
Appendix F: MICROSOFT SQL SERVER DATABASE IRM COMPLIANCE CONFIGURATION

Most of the configurations options can be changed using either Transact SQL (T-SQL) or SQL Server Enterprise Manager.

F.1 Update Version/Apply Security Patches

  1. Check Current SQL Version.

    T-SQL:
    SQL Server 2000:
    select serverproperty(’ProductVersion’)
    select serverproperty(’ProductLevel’)
    SQL Server 7:
    Exec xp_msver productversion

    Enterprise Manager:
    Right-click on database name.
    Select Properties.
    Select General tab.
    View Product Version.
    Current versions: 8.00.543 SP2), 7.00.1063 SP4 -

  2. Install available Hotfixes or Service Packs according to patch instructions.

    • To view alerts reported by Microsoft, enter the Internet address http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/security/Default.asp in your browser and press Enter. Select Hot Fix and Security Bulletin Service and enter your SQL Server version in the product box. Review the list of Security Bulletins and download and apply any fixes as appropriate. A list of current service packs for your product can be found at http://support.microsoft.com/directory/content.asp?ID=FH;ENUS;sp&FR=0&SD=GN&LN=EN-US&CT=SD&SE=NONA.

    • Check for SQL server database IAVM notices on http://www.cert.mil.

F.2 Set Initialization Parameters

  1. Disable direct updates to system tables.

    T-SQL:
    Exec sp_configure ’allow updates’, ‘0’
    Reconfigure

    Enterprise Manager:
    Right-click on Server Name.
    Select Properties.
    Select Server Settings tab.
    Server Behavior/Clear checkbox for: Allow modifications to be made directly to the system catalogs.

  2. Enable C2 auditing (SQL Server 2000 only)

    T-SQL:
    Exec sp_configure ’c2 audit mode’, ‘1’
    reconfigure

    Enterprise Manager:
    N/A

  3. Remote Access

    Note:

    This option should be disabled unless replication is in use or it is otherwise authorized.

    T-SQL:
    Exec sp_configure ’remote access’, ‘0’
    reconfigure

    Enterprise Manager:
    Right-click on SQL Server name.
    Select Properties.
    Select Connections tab.
    Remote server connections/Clear checkbox for: Allow other SQL Servers to connect remotely to this SQL Server using RPC.

  4. Disable SCAN FOR STARTUP PROCS.

    T-SQL:
    Exec sp_configure ‘scan for startup procs’, ‘0’
    reconfigure

    Enterprise Manager:
    N/A

F.3 Accounts/Passwords

  1. Change Default sa account password.

    T-SQL:

    Note:

    Replace NU15pswd with a custom password.


    EXEC sp_password NULL, ’NU15pswd’, ’sa’

    Enterprise Manager:
    Expand SQL Server name.
    Select Security.
    Select Logons.
    Double-click on user sa.
    Enter new password in password text box.
    Click OK.

  2. SQL Server uses Windows authentication only.

    T-SQL:
    N/A

    Enterprise Manager:
    Right-click on server name.
    Select Properties.
    Select Security tab.
    Security/Select Windows only.
    Click OK.

  3. Secure SQL Server Agent Service accounts.

    1. Create local or domain user/group account for SQL Server services that is only a member of the users group. (If SQL Service is part of an Active Directory, the service account must be placed in the Power Users Group.)

      Usrmgr.exe:
      Start/Run/Usermgr.exe.
      Select User from menu bar.
      Select New User.
      Enter username (‘AccountName’).
      Click Add button.
      Click OK.
      Click OK.
      Close usrmgr.

  4. Set account user rights. Act as part of the operating system, increase quotas, replace a process-level token, and log on as a service and deny this user the interactive logon right.

  5. Add this user to SQLServer logons.

    T-SQL:
    Exec sp_grantlogin ‘accountants’
    (Example: ‘MSSQLService)

    Enterprise Manager:
    Expand SQL Server name.
    Expand Security.
    Right-click Logons.
    Select New Logon.
    Click on list button (‘…’) to retrieve list of logon names to select.
    Select AccountName.
    Click Add button.
    Click OK.

  6. Grant this group the sysadmin privilege.

    T-SQL:
    exec sp_addsrvrolemember ‘accountname, ‘sysadmin’

    Enterprise Manager:
    Expand SQL Server name.
    Expand Security.
    Select Server Roles tab.
    Select System Administrators.
    Select Add.
    Select the ‘AccountName.’
    Select OK.
    Select OK.

  7. The SQL Server Service shall be configured later to use this account.
    An OS DBA Group has been created.

    Note:

    There are four steps to be followed:

    1. Create domain or local server group for DBAs for this SQLServer instance.

      Usrmgr.exe:
      Start/Run/Usermgr.exe.
      Select User from menu bar.
      Select New Local Group.
      Enter group name (‘MSSQL_DBA’).
      Click Add button.
      Select Windows accounts to be granted DBA group membership.
      Click Add.
      Click OK.
      Click OK.
      Close usrmgr.

    2. Add this group to SQLServer logons.

      T-SQL:
      Exec sp_grantlogin ‘ServerOrDomainName\/Groupname’
      (Example: ‘MSSQLSERVER\/MSSQL_DBA’)

      Enterprise Manager:
      Expand SQL Server name.
      Expand Security.
      Right-click Logins.
      Select New Login.
      Click on list button (‘…’) to retrieve list of login names to select.
      Select ServerOrDomainName\/GroupName (MSSQLSERVER/MSSQL_DBA).
      Click Add button.
      Click OK.

    3. Grant this group the sysadmin privilege.

      T-SQL:
      exec sp_addsrvrolemember ‘ServerOrDomainName\/Groupname’,
      ‘sysadmin’

      Enterprise Manager:
      Expand SQL Server name.
      Expand Security.
      Select Server Roles tab.
      Select System Administrators.
      Select Add.
      Select the ‘ServerOrDomainName\/Groupname’.
      Select OK.
      Select OK.

    4. Remove the BUILTIN/Administrators group from SQL Server logons. (Do not perform this step until the previous three steps have been completed.)

      T-SQL:
      Exec sp_revokelogin ‘Builtin\/administrators’

      Enterprise Manager:
      Expand SQL Server name.
      Expand Security.
      Select Server Roles tab.
      Select System Administrators.
      Click OK.
      From user list, right-click BUILTIN/Administrators.
      Select Delete.
      Select Yes.

F.4 File Permissions

  1. To use system to set proper file permissions perform the following steps:

    Windows Explorer:
    T-SQL:
    Start/Run/explorer.exe.
    Browse to SQL Server install directory (\/mssql).
    Right-click on install directory name.
    Select properties.
    Select security tab.
    Click on permissions button.

  2. The DBA shall set permissions for all SQLServer files and directories to be ONLY Full Control for the following:

    1. Administrators

    2. CREATOR OWNER

    3. SYSTEM

    4. SQL Server service account (custom name)

    5. DBA Group (MSSQLSERVER\/MSSQL_DBA)

  3. Check Replace Permissions on existing files.
    Check Replace Permissions on subfolders.
    Repeat this procedure for each of the .mdf and .ldf database files.

F.5 Registry Permissions

  1. The DBA shall check to ensure that registry permissions have been granted properly. Windows REGEDT32: The DBA shall perform the following steps:

    • StartlRun/regedt32 .exe.

    • Select Window HKEY _LOCAL_MACHINE. Expand Software.

    • Expand Microsoft.

    • Select Microsoft SQL Server

    • Click on Security from menu bar.

    • Select permissions.

  2. The DBA shall set permissions to full control for the following: (when updating permissions - check Replace Permissions on Existing subkeys).

    • Administrators

    • SYSTEM

    • SQL Server service account (custom name)

    • DBA group (MSSQLSERVER\/MSSQL_DBA)

    • CREATOR OWNER

  3. The DBA shall repeat these procedures for \/Software\/Microsoft\/Windows NT\/CurrentVersion\/Perflib with permissions set to Full Control granted to

    • Administrators

    • CREATOR OWNER

    • SYSTEM

  4. The DBA shall grant read and write (Query Value, Set Value, Create Subkey, Enumerate Subkeys, Notify, WriteDAC, Write Owner, Read Control) permissions to the DBA group account (MSSQLSERVER\/MSSQL_DBA), and SQL Server Service account (custom name).

  5. Upon completion of these permission steps,the DBA shall configure the SQL Server services to use the service account.
    Enterprise Manager:

    • Expand server.

    • Expand Management.

    • Right-click on SQLServer Agent.

    • Select Properties.

    • Select General tab.

    • Set Service startup account/This account.

    • Enter new service account name.

    • Click OK.

F.6 Audit Configuration

  1. Enable logon auditing.

    T-SQL:
    N/A

    Enterprise Manager:
    Right-click on SQL server name.
    Select Properties.
    Select Security tab.
    Select Security/Audit level selection All or Failure.
    Click OK.

  2. Enable the following audit events (SQL 2000 only).

    Note:

    A custom trace file requires an extension for enabling SCAN FOR STARTUP PROCS. The required audit event selections are automatic if C2 audit mode is selected.

  3. The following required audit events shall be selected by the DBA:

    ID Event Name
    14 Audit Logon Event
    15 Audit Logout Event
    18 Audit Server Starts and Stops Event
    20 Logon Failed
    102 Audit Statement GDR
    103 Audit Object GDR
    104 Audit Add/Drop Logon
    105 Audit Logon GDR
    106 Audit Logon Change Property
    107 Audit Logon Change Password
    108 Audit Add Logon to Server Role
    109 Audit Add DB User
    110 Audit Add Member to DB
    111 Audit Add/Drop Role
    112 App Role Pass Change
    113 Audit Statement Permission
    117 Audit Change Audit
    118 Audit Object Derived Permission

    T-SQL:

    Note:

    Set SQL Server instance to scan for startup procedures:
    Exec sp_configure ‘scan for startup procs’, ‘1’

    Note:

    Create a custom trace procedure. The following file was created using SQL Profiler. For each audit event, include the following information in the audit data:


    -Application name(10)
    -SQL Logon name (11)
    -Server process ID(12)
    -Start time(14)
    - End time(15)
    -Event sub-class(21)
    -Object ID(22)
    -Success (23)
    -Object type (28)
    -Database name (35)
    -Login SID (41)

    Note:

    Audit trail data directed to a table requires that ALL object permissions on ALL objects be audited since MS SQL Server does not provide the granularity to audit a single object or use of particular privileges on objects.

    CREATE PROCEDURE my_audit AS
    -- Create a Queue declare @rc int
    declare @TraceID int
    declare @maxfilesize bigint
    set @maxfilesize = 5
    exec @rc = sp_trace_create @TraceID output, 6, ’c:\/mssql8\/mssql8$mssql8\/data\/my_audit’, @maxfilesize, NULL
    if (@rc != 0) go to error

  4. -Client side File and Table cannot be scripted.
    -Set the events:
    declare @on bit
    set @on = 1
    exec sp_trace_setevent @TraceID, 18, 10, @on
    exec sp_trace_setevent @TraceID, 18, 11, @on
    exec sp_trace_setevent @TraceID, 18, 12, @on
    exec sp_trace_setevent @TraceID, 18, 14, @on
    exec sp_trace_setevent @TraceID, 18, 15, @on
    exec sp_trace_setevent @TraceID, 18, 21, @on
    exec sp_trace_setevent @TraceID, 18, 22, @on
    exec sp_trace_setevent @TraceID, 18, 23, @on
    exec sp_trace_setevent @TraceID, 18, 28, @on
    exec sp_trace_setevent @TraceID, 18, 35, @on
    exec sp_trace_setevent @TraceID, 18, 41, @on
    exec sp_trace_setevent @TraceID, 20, 10, @on
    exec sp_trace_setevent @TraceID, 20, 11, @on
    exec sp_trace_setevent @TraceID, 20, 12, @on
    exec sp_trace_setevent @TraceID, 20, 14, @on
    exec sp_trace_setevent @TraceID, 20, 15, @on
    exec sp_trace_setevent @TraceID, 20, 21, @on
    exec sp_trace_setevent @TraceID, 20, 22, @on
    exec sp_trace_setevent @TraceID, 20, 23, @on
    exec sp_trace_setevent @TraceID, 20, 28, @on
    exec sp_trace_setevent @TraceID, 20, 35, @on
    exec sp_trace_setevent @TraceID, 20, 41, @on
    exec sp_trace_setevent @TraceID, 102, 10, @on
    exec sp_trace_setevent @TraceID, 102, 11, @on
    exec sp_trace_setevent @TraceID, 102, 12, @on
    exec sp_trace_setevent @TraceID, 102, 14, @on
    exec sp_trace_setevent @TraceID, 102, 15, @on
    exec sp_trace_setevent @TraceID, 102, 21, @on
    exec sp_trace_setevent @TraceID, 102, 22, @on
    exec sp_trace_setevent @TraceID, 102, 23, @on
    exec sp_trace_setevent @TraceID, 102, 28, @on
    exec sp_trace_setevent @TraceID, 102, 35, @on
    exec sp_trace_setevent @TraceID, 102, 41, @on
    exec sp_trace_setevent @TraceID, 103, 10, @on
    exec sp_trace_setevent @TraceID, 103, 11, @on
    exec sp_trace_setevent @TraceID, 103, 12, @on
    exec sp_trace_setevent @TraceID, 103, 14, @on
    exec sp_trace_setevent @TraceID, 103, 15, @on
    exec sp_trace_setevent @TraceID, 103, 21, @on
    exec sp_trace_setevent @TraceID, 103, 22, @on
    exec sp_trace_setevent @TraceID, 103, 23, @on
    exec sp_trace_setevent @TraceID, 103, 28, @on
    exec sp_trace_setevent @TraceID, 103, 35, @on
    exec sp_trace_setevent @TraceID, 103, 41, @on
    exec sp_trace_setevent @TraceID, 104, 10, @on
    exec sp_trace_setevent @TraceID, 104, 11, @on
    exec sp_trace_setevent @TraceID, 104, 12, @on
    exec sp_trace_setevent @TraceID, 104, 14, @on
    exec sp_trace_setevent @TraceID, 104, 15, @on
    exec sp_trace_setevent @TraceID, 104, 21, @on
    exec sp_trace_setevent @TraceID, 104, 22, @on
    exec sp_trace_setevent @TraceID, 104, 23, @on
    exec sp_trace_setevent @TraceID, 104, 28, @on
    exec sp_trace_setevent @TraceID, 104, 35, @on
    exec sp_trace_setevent @TraceID, 104, 41, @on
    exec sp_trace_setevent @TraceID, 105, 10, @on
    exec sp_trace_setevent @TraceID, 105, 11, @on
    exec sp_trace_setevent @TraceID, 105, 12, @on
    exec sp_trace_setevent @TraceID, 105, 14, @on
    exec sp_trace_setevent @TraceID, 105, 15, @on
    exec sp_trace_setevent @TraceID, 105, 21, @on
    exec sp_trace_setevent @TraceID, 105, 22, @on
    exec sp_trace_setevent @TraceID, 105, 23, @on
    exec sp_trace_setevent @TraceID, 105, 28, @on
    exec sp_trace_setevent @TraceID, 105, 35, @on
    exec sp_trace_setevent @TraceID, 105, 41, @on
    exec sp_trace_setevent @TraceID, 106, 10, @on
    exec sp_trace_setevent @TraceID, 106, 11, @on
    exec sp_trace_setevent @TraceID, 106, 12, @on
    exec sp_trace_setevent @TraceID, 106, 14, @on
    exec sp_trace_setevent @TraceID, 106, 15, @on
    exec sp_trace_setevent @TraceID, 106, 21, @on
    exec sp_trace_setevent @TraceID, 106, 22, @on
    exec sp_trace_setevent @TraceID, 106, 23, @on
    exec sp_trace_setevent @TraceID, 106, 28, @on
    exec sp_trace_setevent @TraceID, 106, 35, @on
    exec sp_trace_setevent @TraceID, 106, 41, @on
    exec sp_trace_setevent @TraceID, 107, 10, @on
    exec sp_trace_setevent @TraceID, 107, 11, @on
    exec sp_trace_setevent @TraceID, 107, 12, @on
    exec sp_trace_setevent @TraceID, 107, 14, @on
    exec sp_trace_setevent @TraceID, 107, 15, @on
    exec sp_trace_setevent @TraceID, 107, 21, @on
    exec sp_trace_setevent @TraceID, 107, 22, @on
    exec sp_trace_setevent @TraceID, 107, 23, @on
    exec sp_trace_setevent @TraceID, 107, 28, @on
    exec sp_trace_setevent @TraceID, 107, 35, @on
    exec sp_trace_setevent @TraceID, 107, 41, @on
    exec sp_trace_setevent @TraceID, 108, 10, @on
    exec sp_trace_setevent @TraceID, 108, 11, @on
    exec sp_trace_setevent @TraceID, 108, 12, @on
    exec sp_trace_setevent @TraceID, 108, 14, @on
    exec sp_trace_setevent @TraceID, 108, 15, @on
    exec sp_trace_setevent @TraceID, 108, 21, @on
    exec sp_trace_setevent @TraceID, 108, 22, @on
    exec sp_trace_setevent @TraceID, 108, 23, @on
    exec sp_trace_setevent @TraceID, 108, 28, @on
    exec sp_trace_setevent @TraceID, 108, 35, @on
    exec sp_trace_setevent @TraceID, 108, 41, @on
    exec sp_trace_setevent @TraceID, 109, 10, @on
    exec sp_trace_setevent @TraceID, 109, 11, @on
    exec sp_trace_setevent @TraceID, 109, 12, @on
    exec sp_trace_setevent @TraceID, 109, 14, @on
    exec sp_trace_setevent @TraceID, 109, 15, @on
    exec sp_trace_setevent @TraceID, 109, 21, @on
    exec sp_trace_setevent @TraceID, 109, 22, @on
    exec sp_trace_setevent @TraceID, 109, 23, @on
    exec sp_trace_setevent @TraceID, 109, 28, @on
    exec sp_trace_setevent @TraceID, 109, 35, @on
    exec sp_trace_setevent @TraceID, 109, 41, @on
    exec sp_trace_setevent @TraceID, 110, 10, @on
    exec sp_trace_setevent @TraceID, 110, 11, @on
    exec sp_trace_setevent @TraceID, 110, 12, @on
    exec sp_trace_setevent @TraceID, 110, 14, @on
    exec sp_trace_setevent @TraceID, 110, 15, @on
    exec sp_trace_setevent @TraceID, 110, 21, @on
    exec sp_trace_setevent @TraceID, 110, 22, @on
    exec sp_trace_setevent @TraceID, 110, 23, @on
    exec sp_trace_setevent @TraceID, 110, 28, @on
    exec sp_trace_setevent @TraceID, 110, 35, @on
    exec sp_trace_setevent @TraceID, 110, 41, @on
    exec sp_trace_setevent @TraceID, 111, 10, @on
    exec sp_trace_setevent @TraceID, 111, 11, @on
    exec sp_trace_setevent @TraceID, 111, 12, @on
    exec sp_trace_setevent @TraceID, 111, 14, @on
    exec sp_trace_setevent @TraceID, 111, 15, @on
    exec sp_trace_setevent @TraceID, 111, 21, @on
    exec sp_trace_setevent @TraceID, 111, 22, @on
    exec sp_trace_setevent @TraceID, 111, 23, @on
    exec sp_trace_setevent @TraceID, 111, 28, @on
    exec sp_trace_setevent @TraceID, 111, 35, @on
    exec sp_trace_setevent @TraceID, 111, 41, @on
    exec sp_trace_setevent @TraceID, 112, 10, @on
    exec sp_trace_setevent @TraceID, 112, 11, @on
    exec sp_trace_setevent @TraceID, 112, 12, @on
    exec sp_trace_setevent @TraceID, 112, 14, @on
    exec sp_trace_setevent @TraceID, 112, 15, @on
    exec sp_trace_setevent @TraceID, 112, 21, @on
    exec sp_trace_setevent @TraceID, 112, 22, @on
    exec sp_trace_setevent @TraceID, 112, 23, @on
    exec sp_trace_setevent @TraceID, 112, 28, @on
    exec sp_trace_setevent @TraceID, 112, 35, @on
    exec sp_trace_setevent @TraceID, 112, 41, @on
    exec sp_trace_setevent @TraceID, 113, 10, @on
    exec sp_trace_setevent @TraceID, 113, 11, @on
    exec sp_trace_setevent @TraceID, 113, 12, @on
    exec sp_trace_setevent @TraceID, 113, 14, @on
    exec sp_trace_setevent @TraceID, 113, 15, @on
    exec sp_trace_setevent @TraceID, 113, 21, @on
    exec sp_trace_setevent @TraceID, 113, 22, @on
    exec sp_trace_setevent @TraceID, 113, 23, @on
    exec sp_trace_setevent @TraceID, 113, 28, @on
    exec sp_trace_setevent @TraceID, 113, 35, @on
    exec sp_trace_setevent @TraceID, 113, 41, @on
    exec sp_trace_setevent @TraceID, 115, 10, @on
    exec sp_trace_setevent @TraceID, 115, 11, @on
    exec sp_trace_setevent @TraceID, 115, 12, @on
    exec sp_trace_setevent @TraceID, 115, 14, @on
    exec sp_trace_setevent @TraceID, 115, 15, @on
    exec sp_trace_setevent @TraceID, 115, 21, @on
    exec sp_trace_setevent @TraceID, 115, 22, @on
    exec sp_trace_setevent @TraceID, 115, 23, @on
    exec sp_trace_setevent @TraceID, 115, 28, @on
    exec sp_trace_setevent @TraceID, 115, 35, @on
    exec sp_trace_setevent @TraceID, 115, 41, @on
    exec sp_trace_setevent @TraceID, 117, 10, @on
    exec sp_trace_setevent @TraceID, 117, 11, @on
    exec sp_trace_setevent @TraceID, 117, 12, @on
    exec sp_trace_setevent @TraceID, 117, 14, @on
    exec sp_trace_setevent @TraceID, 117, 15, @on
    exec sp_trace_setevent @TraceID, 117, 21, @on
    exec sp_trace_setevent @TraceID, 117, 22, @on
    exec sp_trace_setevent @TraceID, 117, 23, @on
    exec sp_trace_setevent @TraceID, 117, 28, @on
    exec sp_trace_setevent @TraceID, 117, 35, @on
    exec sp_trace_setevent @TraceID, 117, 41, @on
    exec sp_trace_setevent @TraceID, 118, 10, @on
    exec sp_trace_setevent @TraceID, 118, 11, @on
    exec sp_trace_setevent @TraceID, 118, 12, @on
    exec sp_trace_setevent @TraceID, 118, 14, @on
    exec sp_trace_setevent @TraceID, 118, 15, @on
    exec sp_trace_setevent @TraceID, 118, 21, @on
    exec sp_trace_setevent @TraceID, 118, 22, @on
    exec sp_trace_setevent @TraceID, 118, 23, @on
    exec sp_trace_setevent @TraceID, 118, 28, @on
    exec sp_trace_setevent @TraceID, 118, 35, @on
    exec sp_trace_setevent @TraceID, 118, 41, @on
    -- Set the Filters.
    declare @intfilter int
    declare @bigintfilter bigint
    -- Set the trace status to start.
    exec sp_trace_setstatus @TraceID, 1
    -- Display trace ID for future references.
    select TraceID=@TraceID
    goto finish
    Error:
    Select ErrorCode=@rc
    Finish:
    GO
    exec sp_procoption ’my_audit’, ’startup’, ’true’
    GO

    Enterprise Manager:

    Note:

    Scan for startup procs must be set in T-SQL.


    Expand SQL Server name.
    Expand Databases.
    Expand Master database.
    Right-click on Stored Procedures.
    Select New Stored Procedure.
    Paste in procedure as listed above under T-SQL.
    Click OK.

    - Verify audit data protection (SQL Server 2000 only).

    Note:

    For the auditing trace, rollover should be enabled and shutdown on failure should be enabled. This is automatic if c2 audit mode is selected.


    Review the trace SQL stored procedure script to set the option parameter specification to 6. This parameter is located directly after the word "output" in the sp_trace_create stored procedure call.

    -Check to ensure that updates and deletes on the audit data is being audited.

    For audit data stored in files use Windows Explorer:

    Note:

    If a custom audit trace is being used, the file location and name to be verified for audit shall be specified in the trace definition.

    Start/Run/explorer.exe.
    Browse to c:\/winnt\/system32\/config\/appevent.evt or to file as specified in trace output specification.
    Right-mouse click on appevent.evt.
    Select Properties.
    Select Security tab.
    Click Auditing button.
    Click Add button.
    Select Everyone group.
    Click Add button.
    Click OK.
    Select audit for Success for delete, change permissions, and take ownership.
    Select audit for Failure for execute, delete, change permissions, and take ownership.
    Click apply.
    Click OK.

    For audit data stored in a table:
    T-SQL:

    Note:

    Replace 0 below with the trace id of the audit trace to review only audit trace information.


    Declare @on bit
    Set @on = 1
    exec sp_trace_setevent TraceID, 114, 10, @on
    exec sp_trace_setevent TraceID, 114, 11, @on
    exec sp_trace_setevent TraceID, 114, 12, @on
    exec sp_trace_setevent TraceID, 114, 14, @on
    exec sp_trace_setevent TraceID, 114, 15, @on
    exec sp_trace_setevent TraceID, 114, 21, @on
    exec sp_trace_setevent TraceID, 114, 22, @on
    exec sp_trace_setevent TraceID, 114, 23, @on
    exec sp_trace_setevent TraceID, 114, 28, @on
    exec sp_trace_setevent TraceID, 114, 35, @on
    exec sp_trace_setevent TraceID, 114, 41, @on

F.7 Host Directory/Stored and Extended Procedure Access

  1. -Deny access to specified stored procedures.

    Note:

    No registry access procedures or office automation procedures should be available to non-DBA users. Either delete these procedures from the system or deny all permissions to these procedures to all users.

    T-SQL:

    Note:

    List all procedures to be protected or removed. Select name from sysobjects where name like ’xp_reg%’ or name like ’sp_OA%’.

    Deny execute on ProcedureName to PUBLIC;
    OR
    Drop procedure ProcedureName.

    Enterprise Manager:
    Expand SQL Server.
    Expand Databases.
    Expand Master database.
    Select Extended Stored Procedures.
    Scroll down the list of procedures.
    For each procedure that begins with ‘sp_OA’ and ‘xp_reg’:
    Right-click on the procedure name.
    Select Delete or Properties.
    Select permissions.
    Select List only users/user and database roles/public with permissions to this object.
    Click on check box under EXEC column until a red X shows.
    Click Apply button.
    Click OK.
    Close and repeat for all procedures that begin with ‘sp_OA’ or ‘xp_reg’.
    -Encrypt user-defined stored procedures.

    T-SQL:
    (Ensure you have source code available for all stored procedures before performing this task.)
    First list all unencrypted user-defined stored procedures. This list does not include objects owned by the database owner.
    Select sysobjects.name from sysobjects.
    inner join syscomments on sysobjects.id = syscomments.id
    where syscomments.encrypted = 0 and
    (sysobjects.type=’S’ or sysobjects.type=’X’)
    and sysobjects.uid >4 and sysobjects.uid<16384
    For each stored procedure listed:
    Alter procedure ProcedureName with encryption as ProcedureSQLStatements.

    Enterprise Manager:
    N/A

    -Remove any user-defined extended procedures.

    Enterprise Manager:
    Expand SQL Server.
    Expand Databases.
    Expand Master database.
    Select Extended Stored Procedures.
    Scroll down the list of procedures.
    For each procedure whose owner is not dbo:
    Right-click on the procedure name.
    Select Delete.
    Click Yes.
    Repeat for all user-defined extended stored procedures.
    Repeat for all databases.
    - Protect system-defined extended stored procedures from user access.

    T-SQL:
    List system extended stored procedures:
    Select sysobjects.name, sysusers.name, sysprotects.action
    from sysprotects
    inner join sysobjects on sysobjects.id=sysprotects.id
    inner join sysusers on sysusers.uid=sysprotects.uid
    where sysobjects.type = ’X’ and
    sysobjects.uid <5
    For each procedure listed:
    Deny execute on ProcedureName to public.

    Enterprise Manager:
    Expand SQL Server.
    Expand Databases.
    Expand Master database.
    Select Extended Stored Procedures.
    Scroll down the list of procedures.
    Right-click on a procedure name.
    Select All Tasks.
    Select Manage Permissions.
    For user public, click on check box under EXEC column until a red X shows.
    Repeat for all user-defined extended stored procedures.
    Repeat for all databases.

  2. -Remove the extended procedure xp_cmdshell from the system.

    T-SQL:
    Drop procedure xp_cmdshell

    Enterprise Manager:
    Expand server name.
    Expand databases.
    Expand Master database.
    Expand Extended Procedures.
    Select and delete xp_cmdshell if listed.

F.8 Privileges to Assign Permissions

  1. -Revoke any administrative privileges to objects from users.

    T-SQL:

    Note:

    List administrative privileges assigned to users.


    Select sysusers.name, sysobjects.name, sysprotects.action from sysprotects
    inner join sysusers on sysusers.uid=sysprotects.uid
    inner join sysobjects on sysobjects.id=sysprotects.id
    where sysprotects.protecttype = 204
    Revoke grant option for ObjectName from UserName.

    Enterprise Manager:
    N/A

F.9 Privileges Assigned to PUBLIC and Guest

  1. The DBA shall remove the Guest account from all databases except master and tempdb. The DBA shall use the following procedures:

    T-SQL:
    exec sp_dropuser ‘guest’
    repeat for all databases except Master and Tempdb

    Enterprise Manager:
    Expand server name.
    Expand Databases.
    Expand database name (except Master and tempdb).
    Select users.
    Right-click guest.
    Select delete.
    Click Yes.
    Repeat for all databases (except Master and tempdb)

  2. Remove statement permissions assigned to Public or Guest.

    T-SQL:
    Deny all to public
    Deny all to guest
    Repeat for each database

    Enterprise Manager:
    N/A

  3. Remove role assignments granted to Guest.

    T-SQL:
    EXEC sp_helpuser ’GUEST’
    For each role assignment listed:
    Exec sp_droprolemember ‘RoleName’, ‘Guest’

    Enterprise Manager:
    Expand server name.
    Expand Databases.
    Expand Master database.
    Select users.
    Double-click user Guest.
    Clear all checks except public.
    Click OK.

  4. Revoke object permissions granted to PUBLIC or Guest.

    T-SQL:
    List any permissions assignments:
    EXEC sp_helpuser ’PUBLIC’.
    EXEC sp_helpuser ’GUEST’

    For each object listed:
    Deny all on ObjectName to ‘PUBLIC’.
    Deny all on ObjectName to ‘Guest’.

    Enterprise Manager:
    Expand server name.
    Expand Databases.
    Expand database name (repeat for Master and tempdb).
    Select users.
    Right-click on Guest.
    Select Properties.
    Select Permissions.
    Select list only objects with permissions for this user.
    Clear any boxes that are checked.
    Repeat for Roles/Public.

    Note:

    Some permissions assigned to PUBLIC within the master database may require that the " Allow modifications to be made directly to the system catalogs" database setting be temporarily be enabled.

F.10 Predefined Role Assignments

  1. Remove any predefined server or fixed database roles assigned to non-DBAs.

    T-SQL:
    List users granted server role memberships:
    Exec sp_helpsrvrolemember
    For any unauthorized users:
    Exec sp_dropsrvrolemember ‘RoleName’,’UserName’
    List users granted database roles:
    For non-dba account granted a group role beginning with ‘db_’:
    Exec sp_droprolemember ‘RoleName’,’UserName’

    Enterprise Manager:
    Expand server.
    Expand Security.
    Select Server Roles.
    Repeat for each role listed.
    Double-click on server role.
    Review users listed.
    For each unauthorized user:
    Select name.
    Click Remove button.
    When all unauthorized users are removed click OK.
    For fixed database roles:
    Expand server.
    Expand Databases.
    Expand database name.
    Select Roles.
    Double-click on each database role (begins with ‘db_’) listed to view users assigned.
    Select any unauthorized users and press Delete.
    Repeat for each database.

  2. Revoke DBA privileges from unauthorized users.

    T-SQL:
    Review list of users granted ‘sysadmin’ server role.
    EXEC sp_helpsrvrolemember ‘sysadmin’
    For each unauthorized user:
    Exec sp_droprolemember ‘sysadmin’, ‘UserName’

    Enterprise Manager:
    Expand server.
    Expand Security.
    Select Server Roles.
    Right-click on sysadmin server role.
    Review users listed.
    For each unauthorized user:
    Select name.
    Click Remove button.
    When all unauthorized users are removed, click OK.

F.11 Privileges Assigned to Users

  1. Revoke statement privileges assigned to users.

    T-SQL:
    List all assigned statement permissions:
    EXEC sp_helprotect NULL, NULL, NULL, ’s’
    For each user listed:
    Revoke StatementPrivilege from UserName.

    Enterprise Manager:
    N/A
    -Revoke any references privileges granted to application users or application roles.

    Note:

    Repeat for each database.

    T-SQL:
    Select sysusers.name, sysobjects.name, sysprotects.action from sysprotects
    Inner join sysobjects on sysobjects.id = sysprotects.id
    Inner join sysusers on sysusers.uid=sysprotects.uid
    where sysprotects.action=204
    For each object listed:
    Revoke references on ObjectName from UserName.

    Enterprise Manager:
    N/A

  2. Restrict Cmdexec and Active Scripting job step privileges to DBAs.

    T-SQL:
    N/A

    Enterprise Manager:
    Expand server.
    Expand Management.
    Right-click on SQLServer Agent.
    Select Properties.
    Select Job System tab.
    Select Non-SysAdmin job step proxy account/Only users with SysAdmin privileges can execute CmdExec and Active Scripting job steps.

  3. Deny access to DBA Views to users.

    T-SQL:
    Select sysobjects.name, sysprotects.uid from sysobjects:
    inner join sysprotects on sysobjects.id = sysprotects.id
    where (sysobjects.type = ’S’ or sysobjects.type = ’V’) and
    sysobjects.uid >4
    For each permission listed:
    Deny all on ObjectName from UserOrRoleName.

  4. Secure backup files on disk.
    Determine backup location:

    T-SQL:
    To list drives where backup files are stored:
    Use msdb.
    Select physical_drive,physical_name from backup file.
    Secure the files:
    Windows Explorer:
    Start/Run/explorer.exe.
    Browse to backup directory and file listed from T-SQL.
    Right-click on directory.
    Select Properties. Select Security tab.
    Select Permissions.
    Restrict permissions to full control to:
    SYSTEM
    Administrators
    SQL Server Agent service account
    OS DBA group account
    CREATOR OWNER

F.12 Application Roles

-Define Application administrator roles.
T-SQL:
Exec sp_addrole ‘RoleName’
OR
Exec sp_addapprole ‘RoleName’, ‘Password’
Create application administrator roles for all of the systems applications.
Create application user roles for all systems applications.

Enterprise Manager:
Expand SQL Server name.
Expand Databases.
Select the appropriate application database.
Right click on Roles.
Select New Database Roles.
Type in Role name.
Select Database Role.
Click OK.

F.13 Object Privileges

  1. Revoke object privileges granted directly to users.

    T-SQL:
    Exec sp_helprotect NULL, NULL, NULL, ‘o’
    For any user (not group) names listed:
    Revoke Privilege on ObjectName from UserName.

    Enterprise Manager:
    Review by user in each database or by object in each database.

  2. Remove or change ownership of objects not owned by application accounts.

    T-SQL:
    List objects not owned by the database owner:
    Select name, uid from sysobjects where uid <> 1
    Delete object or change ownership to the application user:
    Drop ObjectType ObjectName.
    OR
    Exec sp_changeobjectowner ‘ObjectName,’ ‘Owner’.

    Enterprise Manager:
    Expand Server name.
    Expand Databases.
    Expand a database.
    Select Tables.
    Review Owner column for listed tables.
    For each table not owned by dbo, select table and press Delete.
    Repeat for Views, Stored procedures, Extended stored procedures, user defined data types, and user defined functions.
    Repeat for each database.

  3. Disable application object owner accounts.

    T-SQL:
    Select sysusers.name, sysobjects.name from sysobjects:
    inner join sysusers on sysusers.uid=sysobjects.uid
    where sysusers.hasdbaccess=1 and sysusers.name<>’dbo’
    For each application (object) owner account:
    exec sp_denylogin ‘UserName’

    Enterprise Manager:
    Expand SQL Server.
    Expand Security.
    Select Logins.
    Double-click on application owner account to disable.
    Select deny access.
    Click OK.
    Repeat for all application (object) owner accounts.

F.14 Linked or Remote Servers

  1. Configure Linked Server definitions to use current authentication.

    T-SQL:
    N/A

    Enterprise Manager:
    Expand server. Expand Security.
    Select Linked Servers.
    Double-click each linked server.
    Select Impersonate.
    Click OK.

F.15 Replication Security Configuration

  1. Configure Snapshot folder security.
    Valid value: The value should be an explicit share and not an administrative share; full control to Administrators, DBA group, CREATOR OWNER, SYSTEM; read/write to SQL Server service account.

    T-SQL:
    exec sp_browsesnapshotfolder

    Enterprise Manager:
    Expand SQL Server.
    Expand Replication.
    Expand Publications.
    For each publication, right-click on publication.
    Select Snapshot location tab.
    Select generate snapshots in the following location.
    Enter the path to a secure folder that is not an Administrative share (same security as other SQL Server directories).
    De-select generate snapshots in the normal snapshot folder.
    Click Apply.
    Click OK.

  2. Verify Distributor Database security.

    Enterprise Manager:
    Select Tools from menu bar.
    Select Replication.
    Select Configure Publishing, Subscribers, and Distribution.
    Select subscribers tab.
    Double-click on each subscriber.
    Under Agent connection to the subscriber:
    Select Impersonate the SQL Server Agent account on SQL Server (trusted connection).
    Click OK.
    Repeat for each subscriber listed.
    Repeat for each Publisher listed under Publisher tab.
    Close.

F.16 Naming Standards
Instance names are defined at SQL Server installation and cannot be modified. A valid instance name shall not contain any version specific identifiers.

  1. Check SQL Server Instance Name (SQL Server 2000 only).

    T-SQL:
    To display:
    @@SERVERNAME

    Enterprise Manager:
    To display:
    Select server.
    Right-click on server.
    Select Properties.
    Select General tab.
    View Name.

  2. Check database datafile allocations.

    Note:

    Only empty datafiles can be removed from the database. Datafiles should not be shared by databases.

    To view datafiles in use and their database assignments:

    T-SQL:
    Select name, filename from sysdatabases.

    Enterprise Manager:
    Expand server.
    Expand Databases.
    Expand Master.
    Select tables.
    Right-click on sysdatabases table.
    Select Open Table.
    Select Return all rows.
    View database names and file names.
    To add a datafile to a database:

    T-SQL:
    Alter database DatabaseName; add file FileSpecification.

Exhibit 10.8.4-7  (02-21-2008)
Glossary

Column: Database tables are made of different columns (fields) corresponding to the attributes of the object described by the table.

Delete: The Delete is a command used to delete record(s) from a table in database.

Data: Piece of information collected and formatted in a specific way. The term data is frequently used to describe binary (machine-readable) information.

Database: A database is a collection of information organized into related tables of data and definitions of data objects. The data within a database can be easily accessed and manipulated trough computer program.

Data Integrity: That condition in which the user is assured that the data is complete, its condition is maintained during any operation, in short, the data is preserved for its intended use. The goal of database security is to protect critical and sensitive data from unauthorized access. Access in this context means not only changing or deleting the data in your database, but also just reading or disclosing it.

Data mart: The term data mart is synonymous with data warehouse for the purposes of this document. A data mart has the same characteristics and required controls of a data warehouse, but is usually smaller and is focused on the data for a single division or one workgroup within the enterprise.

Data mining: Data mining refers to the process of finding hidden patters and relationships in the data of a data warehouse. Data mining activities must comply with the guidance of this IRM.

Data warehouse: A data warehouse refers to a collection of data, assembled from many different databases across an entire enterprise, designed to support management decision making. A data warehouse contains a wide variety of data that presents a coherent picture of business conditions at a single point in time.

Field:The smallest structure in a relational database, used to store the individual pieces of data about the object; stores a single fact about an object that we’re interested in; represents an attribute.

Join: Join command used to retrieve data from 2 or more database tables with existing relationship based upon a common attribute.

Key: a field in the database (or an attribute in an ERD) that is used to uniquely identify records and establish relationships between tables or entities; used for the retrieval of data in the table.

Lock: Locks are used by Database management systems to facilitate concurrency control. Locks enable different users to access different records/tables within the same database without interfering with one another. Locking mechanisms can be enforced at the record or table levels.

NULL: The keyword is used to represent a missing value.

ODBC: Short for Open DataBase Connectivity, a standard database access technology developed by Microsoft Corporation. The purpose of ODBC is to allow accessing any DBMS (DataBase Management System) from any application (as long as the application and the database are ODBC compliant), regardless of which DBMS is managing the data.

Oracle: Oracle is an enterprise relational database management system.

Query: Queries are the main way to make a request for information from a database. Queries consist of questions presented to the database in a predefined format, in most cases SQL (Structured Query Language) format.

Record: A single "row" in a table; represents the collection of information for a single occurrence of the entity that the table represents.

Relational database: A data structure through which data is stored in tables that are related to one another in some way. The way the tables are related is described through a relationship.

Relationship: Establishes a connection or correspondence or link between a pair of tables in a database, or between a pair of entities in an entity-relationship diagram (ERD).

Rollback: Rollback is a command which cancels/undoes the proposed changes in a pending database transaction and marks the end of the transaction.

Select: The Select is a command, which is the primary means for retrieving data from a RDBMS.

SQL: SQL is short for Structured Query Language and is an industry standard language used for manipulation of data in a RDBMS. There are several different dialects of SQL like, ANSI SQL, T-SQL, etc.

Stored Procedure: Stored Procedure is a set of SQL statements stored within a database server and is executed as single entity. Using stored procedures has several advantages over using inline SQL statements, like improved performance and separation of the application logic layer from database layer in n-tier applications.

Table: A Table in RDBMS refers to data arranged in rows and columns, which defines a database entity.

Transaction: Transaction is a group of SQL database commands regarded and executed as a single atomic entity.

Trigger: Triggers are special type of stored procedures executed automatically when certain events take place. There are different types of triggers – for update, for insert and for delete. Each trigger is associated with a single database table.

Update: The Update is a SQL command used to edit/update existing records in a database table.

Exhibit 10.8.4-8  (02-21-2008)
References

Department of the Treasury

1) Department of the Treasury Information Technology Manual, TD P 81-01. August 2001

Internal Revenue Service

1) IRM 10.8.1, Information Technology (IT) Security Policy and Guidance.

National Institute of Standards and Technology (NIST)

1) National Institute of Standards and Technology Special Publication 800-12, An Introduction to Computer Security: The NIST Handbook. October 1995

2) Federal Information Processing Standards Publication 127-2, Database Language Structured Query language (SQL), 1993 June 02, 1993


More Internal Revenue Manual