Skip to content

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.

  1. Use listSources API to get the source ID for your source.
  2. Use listSchemas API to get the schema ID for the account or group schema for which you want to enable direct permissions.
  3. Use updateSchema API and enter the following content in the body.

    {
        "op": "replace",
        "path": "/includePermissions",
        "value": true
    }
    

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:

    GRANT <RoleName> TO ${UserName} WITH ADMIN OPTION
    

    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

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 = TRUE in sqlnet.ora).
  • Create a minimum permission user as below:

    CREATE USER "username" IDENTIFIED EXTERNALLY;
    

    Example:

    CREATE USER MTLSUSER
      IDENTIFIED EXTERNALLY AS 'CN=jmtlsclient,OU=SailPoint,O=Lab,C=US';
    
  • 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.jar
  • osdt_cert.jar
  • osdt_core.jar
Server Side Files

Oracle Wallet Mode:

  • cwallet.sso - Auto-login server wallet - opened by the Oracle listener at startup; no password required
  • ewallet.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 listener
  • server.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:

/home/sailpoint/certificate/

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:

/home/sailpoint/certificate/keystore/

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-SupportedEncryptionTypes must 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 ktpass with AES256-SHA1 encryption.
  • Generate a service keytab for the Oracle SPN using ktpass and 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.ora with 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 the krb5.ini file on the Oracle server
    • SQLNET.KERBEROS5_KEYTAB - path to the service keytab on the Oracle server
    • SQLNET.KERBEROS5_CONF_MIT = TRUE
    • SQLNET.KERBEROS5_CLOCKSKEW - clock skew tolerance in seconds (for example, 300)
  • Create a krb5.ini (or krb5.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):

    CREATE USER "ORA_KERB@EXAMPLE.COM" IDENTIFIED EXTERNALLY;
    
  • Grant the database user CREATE SESSION and 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:

GRANT SELECT ON DBA_TABLESPACES TO ${UserName};
GRANT SELECT ON DBA_PROFILES TO ${UserName};

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:

CREATE USER ${UserName} IDENTIFIED BY ${Password};

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

GRANT create session TO ${UserName};

For the CDB service account, the above permission must be in the following format:

GRANT CREATE SESSION to <C##username> container=CURRENT;

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:

GRANT SELECT ON dba_users TO <C##username> container=CURRENT;

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:

GRANT SELECT ON dba_roles TO <C##username> container=CURRENT;

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

GRANT CONNECT TO <C##username> container=CURRENT;

All other permissions

GRANT CREATE ROLE TO <C##username> container=ALL;

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:

GRANT ALTER USER TO <C##username> container=ALL;

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.