Create an Oracle Database Server Workload
This guide walks you through creating a Server Workload: Server Workloads represent target services, APIs, databases, or applications that receive and respond to access requests from Client Workloads.Learn more in Aembit to securely connect your applications to Oracle databases without storing static database passwords.
Use this Server Workload to enable your applications to authenticate to Oracle 19c or 21c databases using username/password credentials injected by Aembit’s Agent Proxy.
Aembit intercepts the Oracle Transparent Network Substrate (TNS) wire protocol through transparent steering and injects credentials at connection time. Your client applications connect to Oracle as they normally would, with minor configuration changes described in Client configuration.
Prerequisites
Section titled “Prerequisites”Before you begin, ensure you have the following.
Account access
Section titled “Account access”- Access to your Aembit Tenant: Aembit Tenants serve as isolated, dedicated environments within Aembit that provide complete separation of administrative domains and security configurations.Learn more (role: Workload Administrator or higher)
Infrastructure
Section titled “Infrastructure”- Aembit Edge: Aembit Edge represents components deployed within your operational environments that enforce Access Policies by intercepting traffic, verifying identities, and injecting credentials just-in-time.Learn more Components deployed on a Linux VM:
- Agent Proxy installed on Linux
- Transparent steering (installed by default on Linux). If using selective transparent steering, ensure the Oracle database host is included.
- An Oracle 19c or 21c database accessible from the VM (for example, AWS RDS for Oracle or a containerized Oracle instance)
- A database user account with the permissions your application requires
Client configuration
Section titled “Client configuration”Create the Credential Provider
Section titled “Create the Credential Provider”Create a Credential Provider: Credential Providers obtain the specific access credentials—such as API keys, OAuth tokens, or temporary cloud credentials—that Client Workloads need to authenticate to Server Workloads.Learn more that stores the Oracle database credentials Aembit injects at connection time.
-
Log in to your Aembit Tenant.
-
Go to Credential Providers and click + New.
-
Configure the following fields:
Field Value Name Descriptive name (for example, oracle-db-credentials)Credential Type Username & Password Username The Oracle database username (for example, app_user)Password The Oracle database password -
Click Save.
For detailed configuration options, see Username & Password Credential Provider.
Create the Server Workload
Section titled “Create the Server Workload”Create a Server Workload that identifies your Oracle database.
-
Go to Server Workloads and click + New.
-
Configure the following fields:
Field Value Name Descriptive name (for example, oracle-db-production)Host The Oracle database hostname or IP address Application Protocol Oracle Database Port 1521(Oracle default listener port)Forward to Port 1521Authentication method Password Authentication Authentication scheme Password -
Click Save.
Create an Access Policy
Section titled “Create an Access Policy”Create an Access Policy: Access Policies define, enforce, and audit access between Client and Server Workloads by cryptographically verifying workload identity and contextual factors rather than relying on static secrets.Learn more that links your Client Workload: Client Workloads represent software applications, scripts, or automated processes that initiate access requests to Server Workloads, operating autonomously without direct user interaction.Learn more, Credential Provider, and Server Workload.
-
Go to Access Policies and click + New.
-
In the Access Policy Builder, configure:
- Client Workload: Select the Client Workload that represents your application connecting to Oracle
- Server Workload: Select the Oracle Database Server Workload you created in the preceding section
- Credential Provider: Select the Username & Password Credential Provider you created in the preceding section
-
(Optional) Add a Trust Provider: Trust Providers validate Client Workload identities through workload attestation, verifying identity claims from the workload's runtime environment rather than relying on pre-shared secrets.Learn more and Access Condition: Access Conditions add dynamic, context-aware constraints to authorization by evaluating circumstances like time, location, or security posture to determine whether to grant access.Learn more based on your security requirements.
-
Click Save.
For more details on configuring Access Policies, see Access Policies.
Test the integration
Section titled “Test the integration”After creating the Access Policy, test the connection from your application on the Linux VM where Agent Proxy is running.
Test with a Python thin client
Section titled “Test with a Python thin client”import oracledb
# Connect using thin mode (default), no Oracle Client installation required# The Agent Proxy intercepts this connection and injects credentialsconnection = oracledb.connect( user="any_user", password="aembit", dsn="your-oracle-host:1521/your_service_name")
cursor = connection.cursor()cursor.execute("SELECT 1 FROM DUAL")print(cursor.fetchone())
cursor.close()connection.close()The expected result is (1,). The Agent Proxy intercepts the Oracle TNS connection, injects the real database
credentials from the Credential Provider, and forwards the authenticated connection to the Oracle database.
Test with a Java thin client
Section titled “Test with a Java thin client”// JDBC thin driver, no Oracle Client installation required// The Agent Proxy intercepts this connection and injects credentialsString url = "jdbc:oracle:thin:@your-oracle-host:1521/your_service_name";Connection conn = DriverManager.getConnection(url, "any_user", "aembit");
Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT 1 FROM DUAL");rs.next();System.out.println(rs.getInt(1));
rs.close();stmt.close();conn.close();Troubleshooting
Section titled “Troubleshooting”For common issues like Agent Proxy connectivity or network problems, see the Troubleshooting Guide.
This section covers Oracle Database-specific issues.
Connection refused or timeout
Section titled “Connection refused or timeout”Symptom: Your client application receives a connection timeout or “Connection refused” error when connecting to Oracle.
Cause: Transparent steering isn’t configured for port 1521, Agent Proxy isn’t running, or the Oracle database is unreachable.
Solution:
- Verify Agent Proxy is running:
sudo systemctl status aembit_agent_proxy - Confirm your transparent steering configuration includes port 1521 in your steering configuration
- Test direct connectivity to the Oracle database from the VM:
nc -zv <oracle-host> 1521
Authentication fails after credential injection
Section titled “Authentication fails after credential injection”Symptom: The Oracle database returns ORA-01017: invalid username/password; logon denied even though the
Credential Provider has correct credentials.
Cause: The Oracle database user may use a password version that Aembit doesn’t support in this release, or the username/password in the Credential Provider may be incorrect.
Solution:
- Verify your client application uses
aembitas the password in its connection configuration - Verify the credentials in your Credential Provider match the Oracle database user exactly (username is case-sensitive in Oracle)
- Test the credentials directly against the Oracle database (bypassing Agent Proxy) to confirm they work
- Check Agent Proxy logs for credential injection errors:
Terminal window sudo journalctl --namespace aembit_agent_proxy --since "5 minutes ago"
No matching Access Policy
Section titled “No matching Access Policy”Symptom: The connection succeeds but Agent Proxy doesn’t inject credentials, so the application connects with the placeholder credentials and Oracle rejects the login.
Cause: No active Access Policy matches the Client Workload, Server Workload, and Credential Provider combination.
Solution:
- Verify your Access Policy is active (not deactivated) in the Aembit Tenant
- Confirm the Client Workload identifier matches your application (check process name, path, or other configured identifiers)
- Check that the Server Workload host and port match the Oracle database your application connects to
Cleanup
Section titled “Cleanup”If you no longer need this integration, remove components in this order:
-
Deactivate associated Access Policies
- Go to Access Policies
- Find policies that use this Server Workload or Credential Provider
- Deactivate the policy (toggle off)
-
Delete the Server Workload in Aembit
- Go to Server Workloads
- Select your Oracle Database workload and click Delete
-
Delete the Credential Provider in Aembit
- Go to Credential Providers
- Select the associated Credential Provider and click Delete
Deleting the Server Workload immediately stops credential provisioning. Make sure no applications actively use this workload before deletion.
Related resources
Section titled “Related resources”- About Oracle Databases: How Aembit’s Oracle protocol support works, supported versions, and thin vs thick clients
- Username & Password Credential Provider: Credential Provider configuration
- Transparent steering: Steering mode configuration
- Access Policies: How to create and manage Access Policies
- Support matrix: Supported deployment models for Oracle Database