Integrating SailPoint with Oracle Database
Important
This is an advanced connector for accounts. Please open a support ticket for assistance. This is a standard connector for provisioning.
The SailPoint Oracle Database integration is capable of end-to-end user administration with provisioning and password management capabilities of Oracle database, helping provide rich governance and control experience to the enterprise.
If you have user accounts in Oracle Database that you want to load into SailPoint, you can create a direct connect source for Oracle Database and load that data into your system. To manage that data, either create an identity profile based on the source or verify that the accounts you load are correlated to an existing identity.
Note
To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the SaaS Release Notes page.
Supported Features
The Oracle Database connector supports the following features:
Note
Before you can use any feature marked with an asterisk (*), SailPoint must activate the feature for your site.
- Authentication
- Accounts
- *Password Management
- *Provisioning
- *Access Certifications (certification of entitlements connected to accounts)
For more information on features, refer to Source Features.
In account - entitlement management, the Oracle Database connector supports the management of Oracle entitlements as system privileges.
- Management of Oracle groups as ROLE
- Aggregation and Refresh entitlement
- Create, Update, and Delete
The Oracle Database source supports:
- Permissions directly assigned to accounts and groups as direct permissions during account and entitlement aggregation.
- Revocation of the aggregated permissions for an account through certification.
The details of the features are:
Accounts
| Features | Users |
|---|---|
| Create | ✔ |
| Aggregate | ✔ |
| Enable/ Disable | ✔ |
| Password Management | ✔ |
| Group Entitlements (Read, Request, and Revoke) | ✔ Roles |
| Additional Entitlements | SYSTEM_PRIVILEGES |
| Enable Direct Permissions | ✔ |
Group Entitlements
Group Entitlements are the entitlement types for which SailPoint provides the ability to aggregate additional details of these entitlement types from the managed system. These objects have separate schema defining the list of attributes that the aggregation task fetches as additional details when aggregation is run for that Group Entitlement type.
The group hierarchy for the Roles attribute is supported.
| Features | Users |
|---|---|
| Aggregation | ✔ |
| Direct Permissions | ✔ |
| Read Group Hierarchy | ✔ |
To enable direct permissions and their aggregation for the account or the group schema of your Oracle Database source, perform the following steps.
- Use listSources API to get the source ID for your source.
- Use listSchemas API to get the schema ID for the account or group schema for which you want to enable direct permissions.
-
Use updateSchema API and enter the following content in the body.
Privilege Classification
SailPoint Privilege Classification helps organizations systematically categorize and manage the privilege levels of entitlements within their sources. By classifying entitlements as high, medium, or low, administrators can better understand the potential risk and impact associated with specific access rights. This allows automatic assignment of privilege levels based on system recommendations, custom-defined criteria, or a same level across all entitlements.
| Privilege Level | Description |
|---|---|
| High | Administrative level access to accounts |
| Medium | Administrative level access for a specific role or function |
| Low | Only basic access of data |
Note
To manage Privilege Classification, users must have administrative roles such as Org Admin, Source Admin or Source Sub-Admin.
For more information, refer to Managing Privilege Classification.
Password Management
If Password Management is enabled for your organization, you can change the password for a user of the source. After enabling password management on the source, be aware of the following:
- The password policy defined in SailPoint applies to accounts on this source.
- If you change the password for an application connected to this source, the change will automatically be made to the source itself.
For more information on configuring password management, refer to Password Management Overview.
Supported Managed Systems
The SailPoint Oracle connector supports the following versions of the Oracle Server:
- Oracle Database 23ai
- Oracle Database 21c
- Oracle Database 19c
- Oracle Database 18c
- Oracle Database 12cR2
- Oracle Database 12c
Note
The connector manages users and groups of Oracle 23ai, 21c, 19c, 18c, 12c, and 12cR2 for:
- Pluggable database (PDB)
- Container database (CDB) at current container level
The SailPoint Oracle connector supports managing Oracle Databases hosted on Amazon Web Services Relational Database Service (AWS RDS). For more information on AWS RDS, refer to Amazon Web Services Relational Database Service (AWS RDS).
Note
The Oracle Database connector does not support the Oracle Versions 11g and 10g.
Amazon Web Services Relational Database Service (AWS RDS)
AWS RDS Oracle is a managed service provided by Amazon that has certain restrictions on what an administrative account can perform on the Oracle Database instance on AWS RDS. As a result of these restrictions, the SailPoint Oracle connector supports Oracle on AWS RDS with the following limitations:
- Application configuration attributes are the same.
- By default, the Oracle Database connector aggregates all the roles, system privileges, and profiles as entitlements where profiles are not requestable. Among the aggregated roles/system privileges, the master user does not have all the permissions for provisioning on an AWS RDS instance.
-
For creation of the service account, the following permissions (in reference to the permissions mentioned in Required Permissions) cannot be assigned to the service account by the master user:
GRANT GRANT ANY ROLE TO ${UserName};GRANT GRANT ANY PRIVILEGE TO ${UserName};GRANT SELECT ON dba_col_privs TO ${UserName};GRANT SELECT ON V_$version TO ${UserName};GRANT SELECT on V_$PWFILE_USERS to ${UserName};
-
In order to enable the service account to grant the role (which is allowed on RDS) to a user, the following permission must be given to the service account through the master user:
For assigning the service user permissions, use the SQL script located at this location: https://community.sailpoint.com/docs/DOC-11323
This script grants all the permissions available with the master user WITH ADMIN OPTION=YES to the service user.
-
In cases where you use custom roles created by the master user or any other user which is equivalent to the master, the owner of the role must assign the role to the service user using the WITH ADMIN OPTION.
- For the table/system privileges, the revoke option is available with the user who has granted them.
Prerequisites
- Configure at least one virtual appliance cluster and successfully test the connection. For instructions, refer to the Virtual Appliance Reference Guide.
- Identify or create a service account on the Oracle Database system.
- Obtain the custom Oracle jar file ojdbc8.jar from Oracle Database 12.2.0.1 JDBC Driver & UCP Downloads.
- For mTLS authentication, complete the requirements in Prerequisites for mTLS Authentication.
Prerequisites for mTLS Authentication
Your Oracle DBA must complete the following on the Oracle Database server before you configure the connector:
- Configure the Oracle listener to accept TCPS connections, typically on port
2484. - Enable client certificate authentication (
SSL_CLIENT_AUTHENTICATION = TRUEinsqlnet.ora). -
Create a minimum permission user as below:
Example:
-
Grant the required permissions to the database user. Refer to Required Permissions for more information.
Note
Oracle reads certificate Subject DNs in X.500 order - least-specific attribute first (for example, C= before CN=). The external name on the database user must match this format exactly. To confirm the exact DN format, use the orapki cert display utility on the Oracle server and inspect the Subject field of the client certificate.
Note
To use Oracle Wallet mode, upload OraclePKI jars to the source config. OraclePKI jar version must be compatible with the ojdbc driver jar version.
oraclepki.jarosdt_cert.jarosdt_core.jar
Server Side Files
Oracle Wallet Mode:
cwallet.sso- Auto-login server wallet - opened by the Oracle listener at startup; no password requiredewallet.p12- Password-protected server wallet - contains the server certificate, private key, and the trusted client certificate
Java Keystore Mode:
cwallet.sso/ewallet.p12- Contains the server certificate and private key and client certificate; used by the Oracle listenerserver.crt- Oracle server's public certificate - exported from the server wallet
Oracle Wallet Configuration on VA
The following files must be placed on the VA before configuring the source. These are typically generated and maintained by the Oracle/customer PKI team.
Oracle Wallet Directory
The Oracle Wallet directory contains the client certificate, private key, and the Oracle server's CA certificate for server identity verification. The wallet directory contains the following files:
| File | Description |
|---|---|
cwallet.sso |
Auto-login wallet - no password required at runtime |
ewallet.p12 |
Password-protected wallet - password required at runtime |
On the VA, place cwallet.sso or ewallet.p12 in a directory at a secure path, for example:
Note
Auto-login wallets (cwallet.sso) do not require a password at runtime. Password-protected wallets (ewallet.p12) require the wallet password to be entered in the source configuration.
Java Keystore Configuration on VA
The following files must be placed on the VA before configuring the source. These are typically generated and maintained by the Oracle/customer PKI team.
Java Keystore Directory
The Java Keystore directory contains the client's private key and certificate used to authenticate to Oracle, and the Oracle server's CA certificate used to verify the server's identity during the TLS handshake. The directory contains the following files:
| File | Description |
|---|---|
client.p12 or client.jks |
Client keystore - contains the client's private key and certificate |
truststore.p12 or truststore.jks |
Client truststore - contains the Oracle server's CA certificate |
On the VA, place client.p12/client.jks and truststore.p12/truststore.jks files in a directory at a secure path, for example:
Note
Both the client keystore and truststore must be accessible to the VA at runtime. Ensure the directory and files have the correct permissions before configuring the source.
Responsibility for File Preparation
| File | Responsible Party |
|---|---|
| Oracle server certificate (imported into the client truststore) | Oracle/customer PKI team |
| Client certificate and keystore | SailPoint implementer or Oracle/customer PKI team, depending on the deployment model |
Prerequisites for Kerberos Authentication
Your Active Directory administrator and Oracle DBA must complete the following before you configure the connector:
Active Directory Configuration:
- Create a client principal (AD user account) for the connector to authenticate as (for example,
ora_kerb@EXAMPLE.COM). Enable AES256 encryption on this account (msDS-SupportedEncryptionTypesmust include AES256). - Create a service account (AD user account) with an SPN registered for the Oracle service in the format
oracle/<oracle-server-fqdn>(for example,oracle/oracle-server.example.com). - Generate a client keytab for the client principal using
ktpasswith AES256-SHA1 encryption. - Generate a service keytab for the Oracle SPN using
ktpassand place it on the Oracle server.
Note
After running ktpass, the AD account's password is reset. Set PasswordNeverExpires and CannotChangePassword on both accounts to prevent key version number (kvno) mismatches.
Oracle Database Server Configuration:
-
Configure Kerberos authentication in
sqlnet.orawith the following parameters:SQLNET.AUTHENTICATION_SERVICES = (KERBEROS5)SQLNET.AUTHENTICATION_KERBEROS5_SERVICE- set to the Kerberos service name (for example,oracle)SQLNET.KERBEROS5_CONF- path to thekrb5.inifile on the Oracle serverSQLNET.KERBEROS5_KEYTAB- path to the service keytab on the Oracle serverSQLNET.KERBEROS5_CONF_MIT = TRUESQLNET.KERBEROS5_CLOCKSKEW- clock skew tolerance in seconds (for example,300)
-
Create a
krb5.ini(orkrb5.config) on the Oracle server with the realm, KDC address, and encryption type information matching the Active Directory configuration. - Restart the Oracle listener and database services after making these changes.
-
Create an Oracle database user identified externally. The username must match the Kerberos client principal exactly (case-sensitive, including the realm):
-
Grant the database user
CREATE SESSIONand the required permissions. Refer to Required Permissions for more information.
Note
Ensure os_authent_prefix is set to an empty string ('') on the Oracle instance. If it is set to a non-empty value (for example, OPS$), Oracle prepends it to the Kerberos principal before matching, causing authentication failures.
Note
Validate the Kerberos setup locally on the Oracle server before configuring the connector. Use Oracle's okinit utility to obtain a TGT and sqlplus /@<tns_alias> to confirm Kerberos login works end-to-end.
Kerberos Configuration Files on the VA
The following files must be placed on the VA before configuring the source. Place all files in a single directory, for example /home/sailpoint/oracle-kerberos/.
| File | Description | Required For |
|---|---|---|
krb5.config |
Kerberos configuration - defines the realm, KDC address, and encryption types. Must match the Active Directory domain configuration. | Keytab and Password modes (when using Configuration File) |
OracleJDBCDriver.config |
JAAS login module configuration - tells the Java Kerberos login module how to authenticate (keytab path, principal, and related settings). | Keytab and Password modes |
<client>.keytab |
Client keytab file - contains the encrypted key for the client principal. Generated by the AD administrator using ktpass. |
Keytab mode only |
Note
The keyTab path in OracleJDBCDriver.config must point to the exact location of the keytab file on the VA. A path mismatch causes authentication failures.
Note
Use the IP address of the KDC in the krb5.config on the VA if the KDC hostname is not resolvable from the VA network. If FQDN is used, configure a hosts.yaml on the VA. Refer to Configuring a hosts.yaml File.
Required Permissions
The service account (user) on the target systems must have permissions for the operations it carries out.
| Operation | Required Permissions |
|---|---|
| Load Accounts | Read Permissions |
| Provision Accounts | Write Properties Write User Objects Create User Objects |
| Password Management | Change Password Reset Password |
| Enable and Disable Accounts | Read Account Write Account |
| Unlock Accounts | Read Lockstatus Write Lockstatus |
Additional Permissions
Update the service account for the Oracle Database source with the following permissions:
The Oracle administrator must have all the permissions mentioned below for performing the provisioning operations.
Sign in with administrator credentials and execute the following command to create a new user:
The following table lists the required permissions for the specific operations mentioned below in this section:
| Operation | Required Permissions |
|---|---|
| Test Connection | Test Connection |
| Account Aggregation | Test Connection and Account Aggregation |
| Group Aggregation | Test Connection and Group Aggregation |
| CREATE Account | Test Connection, Account Aggregation and Create Account |
| UPDATE / MODIFY Account | Test Connection, Account Aggregation and UPDATE/MODIFY Account |
Test Connection
SELECT Permission
For the CDB service account, the above permission must be in the following format:
Account Aggregation
SELECT Permission
GRANT SELECT ON dba_users TO ${UserName}; (By this command discovering schema is possible)
GRANT SELECT ON dba_sys_privs TO ${UserName};
GRANT SELECT ON dba_role_privs TO ${UserName};
Note
To view Sysdba privileges: SELECT * FROM V$PWFILE_USERS
For the CDB service account, the above permissions must be in the following format:
Group Aggregation
SELECT Permission
GRANT SELECT ON dba_roles TO ${UserName};(By this command discovering schema is possible)GRANT SELECT ON dba_tab_privs TO ${UserName};GRANT SELECT ON dba_col_privs TO ${UserName};GRANT SELECT ON dba_sys_privs TO ${UserName};GRANT SELECT ON system_privilege_map TO ${UserName};GRANT SELECT ON V_$version TO ${UserName};GRANT SELECT on V_$PWFILE_USERS to ${UserName};GRANT SELECT ON dba_role_privs TO ${UserName};
Note
To view Sysdba privileges: SELECT * FROM V$PWFILE_USERS
For the CDB service account, the above permissions must be in the following format:
Create Account
| Account | Role | Profile |
|---|---|---|
GRANT CONNECT TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
GRANT CREATE USER TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
GRANT GRANT ANY ROLE TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
GRANT GRANT ANY PRIVILEGE TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
GRANT SELECT ON DBA_TABLESPACES TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
GRANT SELECT ON DBA_PROFILES TO ${UserName}; |
GRANT CREATE ROLE TO ${UserName}; |
GRANT CREATE PROFILE TO ${UserName}; |
For the CDB service account, the above permissions must be in the following format:
Connect account
All other permissions
Update Account
| Account | Role | Profile |
|---|---|---|
GRANT ALTER USER TO ${UserName}; |
GRANT ALTER ANY ROLE TO ${UserName}; |
GRANT ALTER PROFILE TO ${UserName}; |
For the CDB service account, the above permissions must be in the following format:
Documentation Feedback
Feedback is provided as an informational resource only and does not form part of SailPoint’s official product documentation. SailPoint does not warrant or make any guarantees about the feedback (including without limitation as to its accuracy, relevance, or reliability). All feedback is subject to the terms set forth at https://developer.sailpoint.com/discuss/tos.