Oracle® Transparent Gateway for DRDA Installation and User’s Guide
10g Release 1 (10.1.0.2.0) for Microsoft Windows
Part Number B12010-01
The gateway architecture involves multiple computer systems that have distinct security capabilities and limitations. This chapter provides information for planning and implementing your security system.
This chapter provides information that is specific to this release of the Oracle Transparent Gateway for DRDA, including the following sections:
Gateway security involves two groups:
Users and applications that are permitted access to a given gateway instance and DRDA database server
Server database objects that users and applications are able to query and update
You can control access in the gateway architecture at several points. Control over database object access is provided by each DRDA database server with GRANTs and related native authorization mechanisms based on user ID.
When the gateway is involved in a SQL request, security mechanisms are in effect for each DRDA system component encountered by the gateway. The first system component encountered is the application tool or 3GL program. The last system component encountered is the DRDA database.
An application must connect to an Oracle integrating server before using the gateway. The type of logon authentication that you use determines the resulting Oracle user ID and can affect gateway operation. There are two basic types of authentication:
With Oracle authentication, each Oracle user ID has a password known to the Oracle server. When an application connects to the server, it supplies a user ID and password. The Oracle server confirms that the user ID exists and that the password matches the one kept in the database.
Operating system authentication
With operating system authentication, the server’s underlying operating system is responsible for authentication. An Oracle user ID that is created with the IDENTIFIED EXTERNALLY attribute, instead of a password, is accessed with operating system authentication. To log into such a user ID, the application supplies a forward slash ( / ) for a user ID and does not supply a password.
To perform operating system authentication, the server determines the requester’s operating system user ID, optionally adds a fixed prefix to it, and uses the result as the Oracle user ID. The server confirms that the user ID exists and is IDENTIFIED EXTERNALLY, but no password checking is done. The underlying assumption is that users were authenticated when they logged into the operating system.
Operating system authentication is not available on all platforms and is not available in some Oracle Net (client-server) and multi-threaded server configurations. Refer to the Oracle Database Installation Guide for Windows and Oracle Net documentation to determine the availability of this feature in Microsoft Windows.
For more information about authenticating application logons, refer to the Oracle Database Reference.
The information here is specific to the gateway. For additional information on database links, refer to the Oracle Database Administrator's Guide.
The first point of control for a database link is simply whether it is accessible to a given user. A public database link can be used by any user ID. A private database link is usable only by the user who created it. The server makes no distinction regarding the type of use (such as read-only versus update or write) or which remote objects can be accessed. These distinctions are the responsibility of the DRDA database that is accessed.
The CONNECT clause is another security-related attribute of a database link. You can use the CONNECT clause to specify an explicit user ID and password, which can differ from the user’s Oracle user ID and password. This CONNECT user ID and password combination is sent to the gateway when the database link connection is first opened. Depending on gateway options, the gateway might send that user ID and password to the DRDA Server for it to validate.
If a database link is created without a CONNECT clause, then the user’s Oracle user ID and password are sent to the gateway when the connection is opened. If the user logs into the Oracle integrating server with operating system authentication, then the gateway receives no user ID or password from the Oracle integrating server. In this case, user ID mapping facilities at the DRDA Server can be used to make such a connection possible if all users on the same Pentium-based host can use the same DRDA database user ID.
TCP/IP does not have any additional configurable security mechanism. The gateway supports a validation mechanism which requires a user ID and a valid password. The security information is passed to the DRDA Server for validation. This type of validation is equivalent to the "SNA Security Option SECURITY=PROGRAM" or "SNA Security Option SECURITY=PROGRAM", which is discussed in Chapter 6, " Configuring Microsoft SNA Server or Host Integration Server" and Chapter 7, " Configuring IBM Communication Server". The difference between the two methods is that in the SNA configuration, the security validation is performed by the SNA network facilities, while in the TCP/IP configuration, the DRDA Server manually performs the validation.
Current DRDA Servers provide options for manipulating the security conduct of an inbound (client) DRDA session request. Refer to the appropriate IBM documentation for detailed information about the security options discussed in this section. Refer to the section, "Documentation Requirements", for a list of IBM documentation.
User ID mapping is the most useful DRDA Server security capability. User ID mapping refers to changing the user ID associated with an incoming DRDA request to some other user ID known to that server. This is a useful feature if your installation does not have a uniform user ID structure across all systems and databases.
The SYSIBM.LUNAMES table controls inbound security conduct on an SNA LU basis, affecting all DRDA connections from a particular Pentium-based host system. This table also controls whether inbound connection user IDs are subject to translation or mapping.
When translation is used, rows in the SYSIBM.USERNAMES table specify translated user IDs by LU name and inbound user ID. Default entries that pertain to all LUs and to all inbound user IDs can be made in both tables. The mapping table can also be used simply to indicate which inbound user IDs are permitted, from a particular LU or from all LUs, whether or not they are mapped.
This implementation provides a flexible mapping structure. You can specify that all connections from a particular LU use a single DB2 user ID, or that a particular inbound user ID always be mapped to a particular DB2 user ID regardless of origin. A USERNAMES entry with blank LU name and inbound user ID can designate a single default DB2 user ID for all connections unless a more specific entry, by LU name, user ID, or both, exists.
The CDB tables can be updated by a user with update authority using a SQL tool such as the DB2 SPUFI utility. For example, most database administrators, systems programmers, and security officers can update CDB tables. The DB2 DDF component must be stopped and restarted for CDB changes to take effect.
The DB2 non-DRDA-specific security features are also involved in DRDA connections. User ids are subject to normal DB2 or SAF/RACF validation in addition to connection or sign-on exit processing. Passwords are also subject to validation. Once the connection is established, all normal authorizations or GRANTs associated with the user ID are in effect. The user ID must have execute authority on the gateway DRDA package to process any SQL statements.
Under VM, DRDA sessions are managed by APPC VTAM Support (AVS), which runs as a disconnected GCS virtual machine. AVS retrieves incoming APPC connection requests (both DRDA and non-DRDA) and routes the connection to an appropriate server virtual machine.
Originating LU name
Inbound user ID
The new user ID
You can create default entries that apply to any LU name and to any inbound user ID, and an entry can indicate that the inbound user ID is to be used without mapping.
Once any indicated user ID mapping has been done, inbound DRDA connection requests are forwarded to the specified DB2/VM server machine. DB2/VM confirms only that the user ID has CONNECT authority and, if so, that the connection is complete. At this point, the application’s access to DB2/VM objects is controlled by the normal authorities and GRANTs for the connected user ID. The user ID must have execute authority on the gateway DRDA package to process any SQL statements.
DB2/400 does not provide a user ID mapping capability comparable to that in DB2/OS390 and DB2/VM. Normally, the user ID in an incoming DRDA connection request must be a valid user ID on that AS/400.
The AS/400 subsystem communications entry for the gateway should specify that the gateway is not a secure location and should include a default user ID of *NONE.
Once the application has completed the DRDA connection to the AS/400, it is subject to all authorities and GRANTs associated with the user ID in use. The user ID must have execute authority on the gateway DRDA package to execute any SQL statements.
DB2/Universal Database (DB2/UDB) does not provide a user ID mapping capability comparable to that in DB2/OS390 and DB2/VM. Normally, the user ID in an incoming DRDA connection request must be a valid user ID on that host.
Once the gateway has completed the DRDA connection to the host, it is subject to all authorities and GRANTs associated with the user ID in use. The user ID must have execute authority on the gateway DRDA package to execute any SQL statements.
The gateway uses userids and passwords to access the information in the remote database on the DRDA Server. Some userids and passwords must be defined in the Gateway Initialization File to handle functions such as resource recovery. Refer to the parameters DRDA_RECOVERY_USERID and DRDA_RECOVERY_PASSWORD in Appendix C as examples. In today’s security conscious environment, having plain-text passwords that are accessible in the Initialization File is deemed insecure. A new encryption feature has been added to the gateway to help make this more secure. The g4drpwd utility can be used to encrypt passwords that would normally be stored in the Initialization File. Using this feature is optional, but it is highly recommended by Oracle Corporation. With this feature, passwords are no longer stored in the Initialization File, but instead are stored in a password file in an encrypted form, thus making the information more secure. Read the next section to learn how to use this feature.
The g4drpwd utility is used to encrypt passwords that would normally be stored in the Gateway Initialization File. The utility works by reading the Initialization File and looking for parameters with a special value. The specific value is the asterisk ("*"). This designates that the value of this parameter is stored in an encrypted form in another file. The following is a sample section of the Initialization File with this value ("*"):
# DRDA_RECOVERY_PASSWORD: Default: none, must be a valid MVS password. # The recovery user connects to the IBM database if a distributed transaction # is in doubt. DRDA_RECOVERY_PASSWORD=*
The Initialization File is first edited to set the value of the parameter to "*". Then the g4drpwd utility is run, specifying the gateway SID on the command line. The utility will read the Initialization File and will prompt the user to enter the values that are to be encrypted.
The syntax of the command is:
] is the SID of the gateway.
The following is an example run, assuming a gateway sid of DB2:
> g4drpwd DB2 ORACLE Gateway Password Utility (tg4drda) Constructing password file for Gateway SID DB2 Enter the value for DRDA_RECOVERY_PASSWORD ORADRDA
In the example above, the parameter "
DRDA_RECOVERY_PASSWORD" is identified as requiring encryption. The user enters the value (in other words, "
ORADRDA") and presses enter. If more parameters require encryption, then they will be prompted for in turn. The encrypted data is stored in the tg4drda\admin directory.
Note:It is important that the Oracle Home Selector is pointing to the correct gateway home to ensure that the correct Gateway Initialization File is read.