Oracle Goldengate Security
Oracle Goldengate Security
19c (19.1.0)
E98065-04
December 2019
Oracle Fusion Middleware Oracle GoldenGate Security Guide, 19c (19.1.0)
E98065-04
Copyright © 2017, 2019, Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing restrictions on
use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your
license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify,
license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means.
Reverse engineering, disassembly, or decompilation of this software, unless required by law for
interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If
you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on
behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software,
any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are
"commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-
specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the
programs, including any operating system, integrated software, any programs installed on the hardware,
and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications.
It is not developed or intended for use in any inherently dangerous applications, including applications that
may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you
shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its
safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this
software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of
their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are
used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron,
the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro
Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information about content, products,
and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly
disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise
set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be
responsible for any loss, costs, or damages incurred due to your access to or use of third-party content,
products, or services, except as set forth in an applicable agreement between you and Oracle.
Contents
2 Securing Deployments
2.1 Creating a Self-Signed Root Certificate 2-1
2.2 Creating Server Certificates 2-2
2.3 Creating a Distribution Server User Certificate 2-3
2.4 Trusted Certificates 2-4
4 Network
4.1 Network Access Control 4-1
4.2 Network Connection Adapter 4-5
4.3 Reverse Proxy Support 4-7
4.4 Network Communication 4-10
iii
5.4 HTTPS Security and Cache Headers 5-5
10 Securing Manager
iv
11 Configuring GGSCI Command Security
11.1 Setting Up Command Security 11-1
11.2 Securing the CMDSEC File 11-3
v
Audience
The Oracle GoldenGate Security Guide is intended for database administrators
(DBAs), security administrators, application developers, and others tasked with
performing the following operations securely and efficiently:
• Designing and implementing security policies to protect the data of an
organization, users, and applications from accidental, inappropriate, or
unauthorized actions
• Creating and enforcing policies and practices of auditing and accountability for
inappropriate or unauthorized actions
• Creating, maintaining, and terminating user accounts, passwords, roles, and
privileges
• Developing applications that provide desired services securely in a variety of
computational models, leveraging database and directory services to maximize
both efficiency and ease of use
To use this document, you need a basic understanding of how and why a database is
used, and basic familiarity with SQL.
6
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle
Accessibility Program website at http://www.oracle.com/pls/topic/lookup?
ctx=acc&id=docacc.
7
Conventions
The following text conventions are used in this document:
Convention Meaning
boldface Boldface type indicates graphical user interface elements associated
with an action, such as "From the File menu, select Save." Boldface
also is used for terms defined in text or in the glossary.
italic Italic type indicates placeholder variables for which you supply
italic particular values, such as in the parameter statement: TABLE
table_name. Italic type also is used for book titles and emphasis.
monospace Monospace type indicates code components such as user exits and
scripts; the names of files and database objects; URL paths; and input
MONOSPACE
and output text that appears on the screen. Uppercase monospace
type is generally used to represent the names of Oracle GoldenGate
parameters, commands, and user-configurable functions, as well as
SQL commands and keywords.
UPPERCASE Uppercase in the regular text font indicates the name of a utility unless
the name is intended to be a specific case.
{} Braces within syntax enclose a set of options that are separated by
pipe symbols, one of which must be selected, for example: {option1 |
option2 | option3}.
[] Brackets within syntax indicate an optional element. For example in this
syntax, the SAVE clause is optional: CLEANUP REPLICAT group_name
[, SAVE count]. Multiple options within an optional element are
separated by a pipe symbol, for example: [option1 | option2].
8
Related Information
The Oracle GoldenGate Product Documentation Libraries are found at
https://docs.oracle.com/en/middleware/goldengate/index.html
Additional Oracle GoldenGate information, including best practices, articles, and
solutions, is found at:
Oracle GoldenGate A-Team Chronicles
9
1
Introducing Oracle GoldenGate Security
Oracle GoldenGate includes many security features that provide varying levels of
security. Understanding the security features and the uses cases they cover are
important first steps when learning how to secure your environment.
There are two different architectures offered with Oracle GoldenGate:
1-1
Chapter 1
Overview of Security Options
1-2
Chapter 1
Overview of Security Options
1-3
Chapter 1
Overview of Security Options
1-4
Part I
Securing the Microservices Architecture
Use this part to secure your Microservices Architecture (MA) environment.
With Microservices, each server (Administration, Distribution, Performance Monitoring,
Receiver Server and Service Manager) runs its own process and communicates with
REST. As REST is a style that uses secure HTTP, all the security related concerns
and solutions applied to HTTPS apply to REST interfaces also. This includes ensuring
general security related to HTTPS-based requests, responses, sessions, cookies,
headers and content as well as addressing issues such as Cross Site Request
Forgery, UI Redressing and delegated authentication. TLS 1.2 (Transport Layer
Security) provides both confidentiality and integrity with optional Authentication. Server
authentication, which verifies the identity of the server used by the client for
communication. Client authentication verifies the identity of the client that the server is
communicating. A typical configuration enforces server authentication while client
authentication is optional. Additional security configurations can specify the level of
security strength and revocation options.
Connection Filtering
This is responsible for qualifying and filtering a candidate connection based on
connection policy specifications.
Certificate Filtering
Similar to connection filtering, this feature enables qualifying certificates as part of
accepting or denying a connection request.
Fall-back Constraints
Network security configuration within MA servers enables you to configure and
constrain the protocol version negotiation fall-back behavior allowing them to control if
and how the protocol versions are negotiated.
Session Management
MA Service Interfaces requests are REST and stateless, which implies that no client
application context it stored on the server between requests. The application session
state is entirely held by the client. Session management includes:
Encryption Profile
The encryption profile allows you to use Oracle Key Vault, which is a full-stack,
security-hardened software appliance built to centralize the management of MA
security objects.
2
Securing Deployments
Microservices REST-based Service Interfaces are agnostic with regard to which
underlying HTTP or HTTPS protocol is used. Their behavior is the same whether
issued over a secure or an unsecure protocol.
Securing deployments involves enabling security through the security configuration
when setting up a deployment for the first time using Oracle GoldenGate
microservices. Administrators who are assigned the security role can change the
details of the default MA security profile to control various aspects of secure operation.
See How to Add Users 19c in Using the Oracle GoldenGate Microservices
Architecture to know more about the security user role.
MA's default security configuration is ranked at a high-medium security level. By
enabling security for an MA deployment, the default coordinated security profile from
both inbound and outbound communications is enabled (excluding the client and
server wallet location (WRL).
To secure a deployment, you can use your existing wallets and certificates, or create
new ones. See Setting Up Secure and Non-Secure Deployments in Using the Oracle
GoldenGate Microservices Architecture for more information.
• Creating a Self-Signed Root Certificate
In a secure mode, communication with Oracle GoldenGate MA including
administrative calls and data transport is secured using TLS certificates, which you
purchase or create your own for testing purposes.
• Creating Server Certificates
You must make sure that your Oracle GoldenGate MAimplementation has a clear
guideline for security certificates, before you go into production. For testing
purposes, however, you can generate server certificates.
• Creating a Distribution Server User Certificate
You have the option of using a client certificate or a username and password that
is common to the Distribution Server deployment and the Receiver Server
deployment.
• Trusted Certificates
The wss communication protocol is used in the Distribution Server for the
Distribution Path to meet the needs of secure communication using TLS in Oracle
GoldenGate Microservices Architecture.
2-1
Chapter 2
Creating Server Certificates
3. In the orapki command to create self-signed (root user) certificate, specify the -
sign_alg sha256 option.
4. In orapki wallet:
2-2
Chapter 2
Creating a Distribution Server User Certificate
5. Using the CSR, create a signed server or client certificate and sign it using the root
certificate. Assign a unique serial number to each certificate.
6. Add the root certificate into the client’s or server’s wallet as a trusted certificate.
7. Add the server or client certificate as a user certificate into the client’s or server’s
wallet.
2-3
Chapter 2
Trusted Certificates
2. Create an automatic login client wallet. This example uses dist_client for the
wallet name.
5. Using CSR, create a signed server or client certificate and sign it using the root
certificate. Assign a unique serial number to each certificate.
6. Add the root certificate as a trusted certificate into the client’s or server’s wallet.
7. Add the server or client certificate as a user certificate into the client’s or server’s
wallet.
2-4
Chapter 2
Trusted Certificates
The certificates in both wallets need to be trusted by each other, so either both need to
have commercial certificates issued by Classic architecture, or they have to trust each
other for self-signed certificates.
For self-signed certificates, you can choose from one of the following:
• Have both certificates signed by the same Root Certificate.
• The other side’s certificate is added to the local wallet as trusted certificate
Here's an example that shows the Distribution Server and Receiver Server certificates.
"distsrvr": {
"$schema": "ogg:service",
"config": {
"network": {
"serviceListeningPort": 9102
},
"authorizationDetails": {
"common": {
"allow": [
"Digest",
"x-Cert",
"Basic"
]
}
},
"authorizationEnabled": true,
"workerThreadCount": 24,
"legacyProtocolEnabled": true,
"taskManagerEnabled": true,
"security": false,
//The following is the outbound communication setup.
"securityDetails": {
"network": {
"outbound": {
"authMode": "client_server",
"crlEnabled": false,
"role": "client",
"wrl": "file:/u02/ogg/dpora12c/etc/ssl/
740977c539e7",
"wrlPassword": ""
}
In this example, the section that starts with securityDetails is for the outbound
communication setup. The WRL values gives wallet location.
For the Receiver Server, the certificate is in the wallet for the inbound wallet location,
which is in the same deploymentConfiguration.dat file, as shown in the following
example.
…
"recvsrvr" : {
"$schema" : "ogg:service",
"config" : {
"authorizationDetails" : {
2-5
Chapter 2
Trusted Certificates
"common" : {
"allow" : [ "Basic", "x-Cert" ]
}
},
"authorizationEnabled" : true,
"legacyProtocolEnabled" : true,
"network" : {
"serviceListeningPort" : 10083
},
"security" : true,
"securityDetails" : {
"network" : {
"common" : {
"authMode" : "clientOptional_server",
"blockSize" : 4096,
"cipherSuites" : [
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
"TLS_RSA_WITH_AES_256_GCM_SHA384"
],
"crlEnabled" : false,
"crlStore" : "file:",
"id" : "OracleSSL",
"protocolVersion" : "1_2_Or_1_1_Or_1_0_Or_3_0"
},
"inbound" : {
"role" : "server",
"wrl" : "file:/home/oracle/apps/OlnxSRCSSL/etc/ssl/
OlnxSRC",
"wrlPassword" : ""
},
"outbound" : {
"role" : "client",
"wrl" : "file:/home/oracle/apps/OlnxSRCSSL/etc/ssl/
oggdistclient",
"wrlPassword" : ""
}
On the Distribution Server, if the hostname used in the Receiver Server’s certificate
can’t be routed correctly, /etc/hosts file should be updated with the correct IP
address for that host. The Distribution Server will use this IP address to communicate
with the Receiver Server once it accepts the certificate from the Receiver Server.
Using the Reverse Proxy (NGINX) with the Distribution Server and Receiver
Server
You only need to add the Nginx certificate to the Distribution server’s client wallet as a
trusted certificate. Usually the certificate used by Nginx is self-signed. If it is issued by
Classic architecture, then there is no need to perform this step.
The host name in the NGINX certificate should also be routable. If not, on the
Distribution Server, /etc/hosts file needs to be updated to reflect the correct IP
address for that host name.The Distribution Server will use the host name in the
certificate to communicate to the target. If the NGINX certificate doesn’t have a valid
2-6
Chapter 2
Trusted Certificates
host name in it, but has a Subject Alternative Name record, then the host name is the
DNS name there. For example:
2-7
3
Authentication and Authorization
The MA security defines the communication authorization and authentication.
Authentication includes tasks such as configuring the credential store and aliases for
scripts in the AdminClient. Authorization includes tasks for network and server
configuration.
All the security configurations and services are common to MA-based servers. These
servers authenticate, authorize, and secure access to command and control,
monitoring, data conveyance, and information service interfaces for the MA.
Oracle GoldenGate Microservices define an infrastructure for building service-aware
applications to operate and integrate into global, cloud-based deployment
environments. Oracle GoldenGate server programs are implemented using the
microservices infrastructure. All security and configuration implementations provided
by MA are common services.
• Authentication
Learn how you can use identity authentication.
• Authorization
Learn how you can use authorization modes.
• Authentication and Authorization for WebSockets
Learn how you can use WebSocket authentication and authorization.
• Response Status Codes
A few of the MA HTTPS authentication and authorization error codes are:
3.1 Authentication
Learn how you can use identity authentication.
The goal of the authenticated identity design is to establish identity authentication
between users, an MA server or application, and an MA server. The authentication
design relies on either the validity of a certificate or of a user credential (username and
password pair).
The MA servers publish REST service interfaces that enable users and applications to
request services including operational control over one or more MA deployments,
service administration, status, and performance monitoring.
3-1
Chapter 3
Authentication
Type of Description
Authentication
3-2
Chapter 3
Authorization
1. Configure the database client Oracle Wallet, see Creating the Wallet and Adding a
Master Key.
2. Configure UTL_HTTPS with TLS (SSL) for client-side authentication, see Using
UTL_HTTPS.
3.2 Authorization
Learn how you can use authorization modes.
3-3
Chapter 3
Authentication and Authorization for WebSockets
User Privileges
You can configure these security roles for users from the Administration Server, see
Setting Up Secure or Non-Secure Deployments.
Note:
These are authorization privileges and are not directly related to
authentication.
3-4
Chapter 3
Response Status Codes
401 Unauthorized
Returned in all cases when the presented credential is poorly formed or missing when
required. This includes incorrectly spelled or unregistered user names when
presented as part of an authorization credential. It does not apply to authorization
resources (404 errors).
403 Forbidden
Returned in all cases when the presented credential is well-formed, but is invalid or
does not have sufficient authorization (permissions) to grant access to the underlying
resource.
The full list is found in the Internet Engineering Task Force RFC 7231 standard.
3-5
4
Network
Learn how to secure your network for Oracle GoldenGate.
This chapter describes endpoint protection such as Network Access Control and
Network Connection Adapters along with the steps to configure and use Reverse
Proxy.
Topics:
• Network Access Control
The MA configuration of the network connection takes the form of an array or
network access control list (ACL).
• Network Connection Adapter
Learn about how to specify your network connection configuration.
• Reverse Proxy Support
Learn how to configure your reverse proxy servers.
• Network Communication
An MA server is the originator of all the response messages sent to the client
when a request is sent to the server.
There might be cases where access from specific sides is excluded or access from
specific sides is allowed. Within Oracle GoldenGate, you are able to adjust the
Application network setting so that you can create black or white lists for access
points. Similarly, there might be cases, that you want to have the distribution path
working on a specific network adapter only. This is feasible within Oracle GoldenGate.
Each ACL specification minimally consists of a permission statement indicating
whether the ACL specification allows or denies client connections from the specified
address. ACL specifications are processed in order and terminate when the specified
address is qualified. If the specified address does not qualify, processes continue with
the next ACL specification. Once the address of the client requesting connection is
qualified, the ACLs permissions dictate whether the connection is 'allowed' or 'denied'.
If the ACL specifications qualify address of the client requesting connection, a default
4-1
Chapter 4
Network Access Control
resolution of 'allow is assumed and the client is allowed to connect. The ACL in the
configuration take the following syntactic forms:
The ipACLs can use IPv4 addresses, ipv6 addresses and IPv4 mapped addresses as
described in RFC 4291.
Inbound connection requests are processed uniformly after they are received over a
network interface. The network interface configuration dictates the form of addressing.
For example, addresses appearing on an IPv6 interface appears as IPv6 addresses. If
the IPv6 configuration specifies IPv4 mapping, then the IPv4 client's address is
mapped into the IPv6 addressing space. An address appearing on an IPv4 interface
appears as an unmapped IPv4 address. Since the ACL qualification focuses on
qualifying addresses and all adapters within the host environment have unique
addresses, no additional interface information is required.
For hosts that support hot-fail over network interfaces, the fail-over and reassignment
of network IP address to adapter MAC addresses is transparent to the application.
Example 4-1 Examples
Deny client connections originating from 192.0.2.254.
Explicitly allow all client connections. The first ACP by default qualifies all addresses.
The second ACL is never processed.
Allow client connections originating from 127.0.0.1, but deny connection originating
from 192.0.2.254 appearing on an interface configured for IPv6 addressing.
4-2
Chapter 4
Network Access Control
370:7334" },
{ "permission" : "deny", "address" : "ff::192.0.2.254" } ]
{
"$schema":"api:standardResponse",
"links":[
{
"href":"http://localhost:11000/services/v2/deployments/Local/
services/adminsrvr",
"mediaType":"application/json",
"rel":"canonical"
},
{
"href":"http://localhost:11000/services/v2/deployments/Local/
services/adminsrvr",
"mediaType":"application/json",
"rel":"self"
}
],
"messages":[
]
}
Admin.json file:
4-3
Chapter 4
Network Access Control
},
{
"address": "10.90.136.97",
"permission": "allow"
},
{
"address": "10.209.243.80",
"permission": "deny"
}
],
"serviceListeningPort": 9101
}
}
}
[
{
"address": "10.196.9.33 ",
"permission": "allow"
},
{
"address": "10.90.136.97",
4-4
Chapter 4
Network Connection Adapter
"permission": "allow"
},
{
"address": "10.209.243.80",
"permission": "deny"
}
]
ipACL := '[' aclSpec [, aclSpec] ']'
aclSpec := "permission" : [ "deny" | "allow" ]
[, "address": [ ipv4Address | ipv4MappedAddress | ipv6Address ] ]
1. portValue | portValueString
2. networkSpec
3. '[' networkSpec [, networkSpec ...] ']'
portValue := [1234567890]+
portValueString := '"' portValue '"'
networkSpec := '{' portSpec [, ipaddressSpec | nameSpec] [,
interfaceSpec] [, networkOptionSpec] '}'
portSpec := "port" : portValue | portValueString
ipaddressSpec := "address" : ipv4Address | ipv6Address | "ANY"
nameSpec := '"' :alphanum: '"'
interfaceSpec := "interface" : '"' :alphanum: '"'
networkOptionSpec := "options" : IPV4_ONLY | IPV6_ONLY
The first form retains compatibility with existing network port specifications where only
the portValue or portValueString is provided.
4-5
Chapter 4
Network Connection Adapter
The second form assigns the networkSpec as a single value. This form still only
defines a single network specification and allows greater control and flexibility in
identifying network values and options.
The third form defines an array of networkSpec instances. It allows you to specify
different network configurations based upon either address or network interface.
Example 4-6 Example
With the following simplified host network interface configuration:
1. "serviceListeningPort: "9000"
2. "serviceListeningPort: 9000
8. "serviceListeningPort: [
{ "port" : "9000", "interface" :
"lo" }
{ "port" : "9000", "address" : "192.0.2.39", "option" :
"IPV4_ONLY" }
4-6
Chapter 4
Reverse Proxy Support
Form 1 - 4
Listens on port 9000 on ANY address over ALL interfaces.
Form 5
Listens on port 9000 on address 192.0.2.254 only.
Form 6
Listens on port 9000 on the address associates with server1.
Form 7
Listens on port 9000 on the address associates with interface eth1 and accepts IPV4
address connections using the mapped IPV4.
Form 8
Listens on port 9000 on the address associates with interface lo, on port 9000
address 192.0.2.39 accepting only IPV4 addresses, and on port 9000 with addresses
associated with interface eth1 accepting onlyIPV6 addresses.
Most of this logic handles selecting the network interface adapter based on the
network interface adapter’s identifying name or the address. The interface can be
searched for based on the requested address.
Specifying multiple adapters means that each network specification resolves to only a
subset of adapters. Precedence processing allows the specification of ANY address
and ALL interfaces for the last network specification as a pool specification when the
platform networking interfaces support mapping subset interface matches.
Note:
Reverse proxy is optional, however, Oracle recommends that you ensure
easy access to microservices and provide enhanced security.
4-7
Chapter 4
Reverse Proxy Support
can simply be accessed from the single address. For example, https://
goldengate.example.com/distsrvr for the Distribution Server. The URL is
different for each service and is by name instead of by port.
You can use these options with the ReverseProxySettings:
-o or --output
The output file name. The default file name is ogg.conf.
-P or --password
A password for a Service Manager account.
-l or --log
Log file name and initiates logging. The default is no logging.
--trailOnly
Configure only for inbound trail data.
-t or --type
The proxy server type. The default is Nginx.
-s or --no-ssl
Configure without SSL.
-h or --host
The virtual host name for reverse proxy.
-p or --port
The reverse proxy port number. The defaults are 80 or 443.
-? or --help
Display usage information.
-u or --user
Name of the Service Manager account to use.
-v or --version
Displays the version.
These values are used when connecting to the Service Manager and are required
when authentication is enabled.
You can use any reverse proxy service with MA. The following example provides a
process that you can follow to configure other reverse proxy services in conjunction
with the documentation for your proxy server.
Prerequisites
The following prerequisites provide details on the minimum requirements to configure
an NGINX Reverse Proxy. Similar requirements may be required for your environment
and reverse proxy if not using NGINX. Consult the documentation for your reverse
proxy.
1. Install NGINX, see Installing NGINX Reverse Proxy. For Oracle Linux, the
command to install NGINX is:
yum —y install NGINX
2. Check the JRE version to be JRE 8 or higher.
4-8
Chapter 4
Reverse Proxy Support
$OGG_HOME/lib/utl/reverseproxy/ReverseProxySettings --help
To add the NGINX certificate to the Distribution server’s client wallet as a trusted
certificate, see Trusted Certificates.
1. To generate a configuration file for NGINX Reverse Proxy, run a similar command
using the ReverseProxySettings utility. If you are configuring NGINX to use a
secure configuration, you have to omit the -s option and ensure you are using
HTTPS instead of HTTP.
$OGG_HOME/lib/utl/reverseproxy/ReverseProxySettings -u adminuser -P
adminpwd -o ogg.conf HTTPS://localhost:9100
2. Replace the existing NGINX configuration with the configuration that was
generated using the ReverseProxySetting utility for your MA deployment:
However, this NGINX configuration isn't complete without the events section, and
enclosing the map and server sections in http.
Optionally, you can use the default nginx.conf file and add the generated
ogg.conf by adding an include statement similar to this:
include /etc/nginx/conf.d/ogg.conf;
In this case, you must comment out the other servers section.
3. Generate a Self-Signed certificate for NGINX:
For distribution paths to go through the reverse proxy, you need to use a valid
certificate. It's better to specify the same certificate that the deployment is using to
process incoming requests, otherwise, starting the path will fail with the next error
in Distribution Server:
4-9
Chapter 4
Network Communication
verification failure.
(A4)
sudo NGINX -t
Note:
If the deployments associated with the target Service Manager change,
the NGINX configuration file must be re-generated and reloaded.
SSL Termination
When there is an unsecure connection between the Reverse Proxy, which uses a
TLS-based connection, and the origin server, it is referred to as Reverse Proxy SSL-
termination.
Note that in SSL-Termination the connections between the Reverse Proxy and the
origin servers are unsecure.
However, SSL-bridging is also supported where the connections between the client
and Reverse Proxy is secured and the connection between the Reverse Proxy and the
origin server is also secured.
4-10
Chapter 4
Network Communication
DTLS (Datagram Transport Layer Security) libraries. MA Oracle platforms uses the
Oracle SSL toolkit (NZ), which includes Oracle Wallet integration.
For heterogeneous platforms, the Oracle SSL toolkit is used where available.
4-11
5
TLS and Secure Network Protocols
Communication security is the confidentiality and integrity of the information sent over
communications channels, such as TCP/IP-based networks.
Secure communication implies confidentiality and integrity of data sent over
communications channels, such as TCP/IP-based networks. It uses cryptographic
protocols to provide communication security over the network.The TLS protocol
provides privacy and data integrity when:
• Routing data using the distribution path between the Distribution and Receiver
Server.
• Communicating between Oracle GoldenGate and the client applications (web
browser, Admin Client or any other Rest API calls)
When secured by TLS, connections between a client and a server should have one or
more of the following properties:
• The connection is private (or secure) because cryptography is used to encrypt the
data transmitted
• The identity of the communicating parties can be authenticated using public-key
cryptography The connection is reliable because each message transmitted
includes a message integrity check using a message authentication code to
prevent undetected loss or alteration of the data during transmission.
Topics:
• Certificate Access Control List
Learn how you can refine communication security.
• Transport Layer Security Protocols and Ciphers
Review the supported security protocols.
• TLS Certificate Revocation List Handling
Learn how to configure a revocation list.
• HTTPS Security and Cache Headers
Review the supported security and cache headers.
5-1
Chapter 5
Certificate Access Control List
The certACL entry has a scopespecification that allows the ACL entry to be applied to
specific identification elements within a certificate.
The configuration of a certificate ACL takes the form of an array of certACL entry
configuration specification. Each specification minimally contains a permission
statement indicating whether it allows or denies client connections from the specified
address. The certACL entry specifications are processed in order and terminate as
soon as the specified address is qualified. If the specified address does not qualify,
processing continues with the next specification. Once a certificate is qualified, the
certACL permissions dictate whether the certificate is allowed or denied. If a no
certACL entry specification qualify the certificate of the client requesting connection, a
default resolution of 'allow is assumed and the certificate is accepted.
The regex syntax follows the ECMAScript definition. Defining a regular expression as
a JSON node value requires that the any meta symbols used (like \s) have the
\character escaped. You should take care when specifying name regular expression
patterns to ensure that only the full match with the intended target pattern is matched.
In the syntax, the patterns only full match with the intended target pattern
CN=AdminClnt not CN=AdminClnt1, CN=AdminClntOther, CN=OtherAdminClnt, or
CCN=OtherAdminClnt because the match pattern includes delimiter specifications that
bound the pattern. These patterns assume a standard distinguished name format that
allows no whitespace between the keyname and the value. The CN = AdminClnt non-
standard pattern would not match.
Example 5-1 Allow All Certificates Example
"CertACL" : [ { "name" : "^(?:(?:\\s*,?)|.*[\\s,]+)(CN=AdminClnt)(?:(?:\\s*(,+\
\s*.*))$|\\s$)", "permission" : "deny" } ]
Or
"CertACL" : [ { "name" : "^(?:(?:\\s*,?)|.*[\\s,]+)(CN=AdminClnt)(?:(?:\\s*(,+\
\s*.*))$|\\s$)", "scope" : "subject-name", "permission" : "deny" } ]
5-2
Chapter 5
Transport Layer Security Protocols and Ciphers
TLS v1.1
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
TLS v1.2
TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
ECC ciphers are based on the algebraic structure of elliptic curves over finite fields.
The elliptic curve discrete logarithm problem (ECDLP) assumes that finding the
discrete logarithm of a random elliptic curve element with respect to a publicly known
base point is infeasible. The benefit of ECC ciphers is that generally the key sizes are
smaller compared to non-ECC cipher equivalents.
5-3
Chapter 5
TLS Certificate Revocation List Handling
A Certificate Revocation List (CRLs) is a Privacy Enhance Mail (PEM) formatted file
that contains information identifying the issuer of the revocation list followed by zero or
more entries identifying certificate that have been revoked. A secured server is part of
establishing a secure channel with a peer and will initiate a handshake with the peer.
During this handshake security information and capabilities are negotiated and
exchanged, which includes the one or both certificates of the participants. Depending
on security configurations, one, both, or neither of the participants may present or
require the presentation of the peer's certificate.
After receiving and verifying the validity of a peer's X.509 certificate, the receiving
participant consults the currently configured CRL. The presence of an entry identifying
the just-validated peer certificate causes the receiving participant to consider the
remote participant's certificate as having been revoked. A revoked certificate is
considered invalid for the purposes of authenticating the identity of the remote
participant. A revoked certificate fails the integrity-check portion of the secure channel
handshake and terminates the channel. Depending on the implementation that remote
peer detects that an error occurred during certificate validation, but may not be
informed of the specific cause.
The actual CRL consists of prolog and identifies the issuer of the CRL followed by zero
or more entries. Each entry identifies a specific certificate by serial number along with
security information relating to the date of revocation, the signature algorithm, and
finger-print information.
Typically, the CRL in compact form only includes the contents between the -----
BEGIN X509 CRL----- and -----END X509 CRL----- delimiters. All other data outside
these delimiters is ignored. You can embed a textual representation of the CRL in the
CRL file without affecting the function of the CRL.
The use of CRLs is configured for each MA server individually The CRL configuration
is composed of two properties:
/config/security/common/crlEnabled
Enables or disables CRL processing.
If, however, /config/security/common/crlEnabled is enabled (true), then the /
config/security/common/crlStore property must refer to a valid and well formed
CRL.
/config/security/common/crlStore
When CRL processing is disabled (false), the remote participant's certificate is not
checked against a CRL. When this is the case, you don’t need to set the /config/
security/common/crlStore property.
A valid and well formed CRL file is either a PEM encoded CRL file that conforms to the
RFC2380 - Internet X.509 Public Key Infrastructure Certificate and Certificate
Revocation List (CRL) Profile or an empty file.
The following is a sample excerpt declaring and defining CRL processing for a secured
server.
{
"config" : {
"security: {
"common" : {
"crlEnabled" : true,
"crlStore" : "file:/scratch/Tests/unittests/etc/ssl/RootCA/CAs/
Deploy1/CRLs/empty_CRL.pem"
}
5-4
Chapter 5
HTTPS Security and Cache Headers
}
}
}
The CRL file may be updated or replace by other, presumably more current, versions
while the server is running. Replacing the CRL file causes the next request CRL
lookup to use the newly updated file.
Regardless of how the /config/security/common/crlEnabled property is set, CRL
processing is disabled if the general security configuration of the server is disabled.
For example, the value of the /config/security property is false).
One other configure setting that indirectly effects CRL processing is the /config/
securityDetails/network/common/authMode property. This property controls whether
the server requires the client to authenticate using a certificate or whether the server
accepts optionally presented certificate or whether the server will ignore any presented
client certificates. If a certificate is not required, not presented, or ignored by the
server, then CRL processing is not used.
Security Headers
The security headers that can be issued are:
X-Frame-Options
The X-Frame-Options is included as headers in server responses and signals the
client whether or not a user-agent should be allowed to render the content in an
<frame>, <iframe>, or <object>. Websites use<frame> and <iframe> to create mash-
ups or to embed part of one site. However, this exposes the embedded site to
5-5
Chapter 5
HTTPS Security and Cache Headers
X-XSS-Protection
The X-XSS-Protection is included as a header in server responses and configure the
user-agent's built in XSS (Cross-Site-Security)protection. The options are to enable,
disable and can be combined with block and report.
The default X-XSS-Protection statement is:
X-XSS-Protection: 1; mode=block
X-Content-Type-Options
The default X-Content-Type-Options statement is:
X-Content-Type-Options: nosniff
Cache Headers
The supported cache headers are:
Cache-Control
The default Cache-Control statement is:
Cache-Control: no-cache, no-store, must-revalidate
Pragma
The default Pragma statement is:
Pragma: no-cache
Expires
The default Expires statement is:
Expires: 0
HTTP Strict-Transport-Security
The default HTTP Strict-Transport-Security (HSTS) statement is:
Strict-Transport-Security: max-age=expire-time; includeSubDomains
5-6
Chapter 5
HTTPS Security and Cache Headers
5-7
6
Using Target-Initiated Distribution Paths
Learn about target-initiated distribution paths in MA, the need to set it up, and various
use cases where it is helpful to use target-initiated distribution paths.
Topics:
• Overview of Target-Initiated Paths
• How Do Target-Initiated Distribution Paths Work?
6-1
Chapter 6
How Do Target-Initiated Distribution Paths Work?
The path is ephemeral on the source deployment. Ephemeral paths help with
consolidation of path configuration and with reinforcement of target-to-source
connection initiation.
When the path is stopped or disconnected, the Distribution Server removes all the
path information including the path definition. However, the checkpoint file is retained
because the checkpoint is used to decide whether old trails can be purged or not. It is
recommended that old trails are not purged unless the path is intentionally deleted.
6-2
Part II
Common Security Features
Use this part to implement security features that are common to both the
Microservices Architecture and theClassic Architecture environments.
Topics:
• Managing Encryption Using a Key Management Service in Oracle GoldenGate
Oracle Key Vault, a Key Management Service (KMS) is supported for both Classic
Architecture and Microservices Architecture. This chapter describes the benefits,
system requirements, processes, and parameters for configuring Oracle Key Vault
with Oracle GoldenGate.
• Encrypting Data with the Master Key and Wallet Method
To use this method of data encryption, you create a master key wallet and add a
master key to the wallet. This method works as follows, depending on whether the
data is encrypted in the trails or across TCP/IP:
• Managing Identities in a Credential Store
Learn how to use an Oracle GoldenGate credential store to maintain encrypted
database passwords and user IDs and associate them with an alias.
7
Managing Encryption Using a Key
Management Service in Oracle
GoldenGate
Oracle Key Vault, a Key Management Service (KMS) is supported for both Classic
Architecture and Microservices Architecture. This chapter describes the benefits,
system requirements, processes, and parameters for configuring Oracle Key Vault
with Oracle GoldenGate.
Topics:
• What is a Key Management Service?
A Key Management Service (KMS) is a utility that centralizes the management of
encryption keys.
• Managing Encryption Using a Key Management Service in Oracle GoldenGate
Microservices Architecture
This chapter describes the benefits of using a Key Management Services with
Oracle GoldenGate Microservices Architecture. It also describes the system
requirements, processes and parameters available with Oracle GoldenGate for
configuring Oracle Key Vault with Oracle GoldenGate.
7-1
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
7-2
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
7-3
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
1. the source trail is not encrypted and you have specified the algorithm property in
the encryption object:
"target": {
"details": {
"encryption": {
"algorithm": "AES256"
}
},
"uri": "ogg://localhost:13101/services/v2/targets?trail=b4"
}
2. The source trail is encrypted and there is a defined filter of type COLUMNVALUES.
Alternatively, you can register your own key, as shown in the following example:
7-4
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
6. Add the Oracle GoldenGate related key attributes (KeyName, KeyVersion) to the
configuration. The key name must match the master keyname in the KMS
encryption profile created within Oracle GoldenGate. The key value must match
the version number of the masterkey.
7. Use okvutil to list the configuration setting and check the endpoint status. As
shown in the following example:
OS>okvutil list -v 4
okvutil version 18.2.0.0.0
Endpoint type: Oracle (non-database)
Configuration file: /u01/app/oracle/OKV/conf/okvclient.ora
Server: 10.245.64.45:5696 10.245.64.46:5696
Standby Servers:Read Servers: 10.245.64.48:5696
Auto-login wallet found, no password needed
Trying to connect to 10.245.64.45:5696 ...
Connected to 10.245.64.45:5696.
Unique ID Type Identifier
72B673E8-840B-4AD6-8400-CB77B68D74B5 Template Default template for
7-5
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
OGG_EP
76876ABA-B06D-4F35-BF7C-D9306D29764B Symmetric Key -
The next steps are managed within Oracle GoldenGate and are shown as an
implementation from the Admin Client.
7-6
Chapter 7
Managing Encryption Using a Key Management Service in Oracle GoldenGate Microservices Architecture
• Time to live: Time to live (TTL) for the key retrieved by Extract from KMS. When
encrypting the next trail, Extract checks if TTL has expired. If so, it retrieves the
latest version of the master key. The default is 24 hours.
Note:
Do not upload keys with duplicate values of Key Name and Key Version. At
the time of startup, restart, or rollover, Oracle GoldenGate processes retrieve
the highest Key Version value.
7.2.4 Client Behavior Against Different Key States for Oracle Key Vault
This topic describes the relative behavior of the of the reader or writer client processes
depending on the different encryption key states.
A key can be in the following states:
• Active: Trail writer choose the highest version number (unless _Version is
specified) with Active state for encryption. Trail reader can use this (key, version
number) to decrypt the trail.
• Preactive: Trail writer ignores the key and version number with this state.
• Deactivated: Trail writer ignores the key and version number with this state. Trail
file reader retrieves and uses this key and version number to decrypt the trail if it is
deactivated or compromised.
• Compromised: Trail writer ignores the key and version number with this state. Trail
file reader retrieves and uses this key and version number to decrypt the trail if it is
deactivated or compromised.
• Destroyed: Trail writer ignores the key and version number with this state. Trail file
reader generates an error and abends if the key and version number required to
decrypt is in this state.
• Destroyed-Compromised: Trail writer ignores the key and version number with this
state. Trail file reader generates an error and abends if the key and version
number required to decrypt is in this state.
7-7
8
Encrypting Data with the Master Key and
Wallet Method
To use this method of data encryption, you create a master key wallet and add a
master key to the wallet. This method works as follows, depending on whether the
data is encrypted in the trails or across TCP/IP:
• Each time Oracle GoldenGate creates a trail file, it generates a new encryption
key automatically. This encryption key encrypts the trail contents. The master key
encrypts the encryption key. This process of encrypting encryption keys is known
as key wrap and is described in standard ANS X9.102 from American Standards
Committee.
• For the Classic Architecture, to encrypt data across the network, Oracle
GoldenGate generates a session key using a cryptographic function based on the
master key. However, the Distribution Server ogg protocol doesn't support this
method.
Oracle GoldenGate uses an auto-login wallet (file extension .sso), which is an
obfuscated container that does not require human intervention to supply the necessary
passwords.
Encrypting data with a master key and wallet is not supported on the NonStop
platforms.
Topics:
• Creating the Wallet and Adding a Master Key
• Specifying Encryption Parameters in the Parameter File
• Renewing the Master Key
• Deleting Stale Master Keys
8-1
Chapter 8
Specifying Encryption Parameters in the Parameter File
WALLETLOCATION directory_path
8-2
Chapter 8
Specifying Encryption Parameters in the Parameter File
Note:
You can explicitly decrypt incoming trail data and then re-encrypt it again for
any output trails or files. First, enter DECRYPTTRAIL to decrypt the data, and
then enter ENCRYPTTRAIL and its output trail specifications. DECRYPTTRAIL
must precede ENCRYPTTRAIL. Explicit decryption and re-encryption enables
you to vary the AES algorithm from trail to trail, if desired. For example, you
can use AES 128 to encrypt a local trail and AES 256 to encrypt a remote
trail. Alternatively, you can use the master key and wallet method to encrypt
from one process to a second process, and then use the ENCKEYS method to
encrypt from the second process to the third process.
To create a SOCKS5 proxys with SSH tunneling to securely transmit data over the
network, perform the following steps:
8-3
Chapter 8
Renewing the Master Key
1. On Linux, a SOCKS5 proxy can be set up along with SSH tunneling using the
following SSH command:
The following example shows the SOCKS5 proxy with SSH tunnel connecting to a
GoldenGate Cloud Service (GGCS) instance with IP address 129.145.2.34:
After setting up the SOCKS5 proxy, you can set up Oracle GoldenGate on-premises
Pump to deliver data to GGCS using the SOCKSPROXY parameter from the proxy
server, as shown in the following example:
Unless the wallet is maintained centrally on shared storage (as a shared wallet), the
updated wallet must be copied to all of the other systems in the Oracle GoldenGate
configuration that use that wallet. To do so, the Oracle GoldenGate processes need to
be stopped. This procedure includes steps for performing those tasks in the correct
order.
1. Stop Extract. You need to stop the TRANLOG Extract group, which is the Extract
capturing from the transaction logs.
Note:
If the TRANLOG Extract group is also acting as an Extract pump, then you
need to stop the applicable and stop all activity on the database as well.
8-4
Chapter 8
Renewing the Master Key
2. Check the read RBA of the Extract data pump against the size of the Extract trail
by performing the following:
When the read RBA matches the trail size, then there is no more data to process.
When the Extract pump or Extract sends all the trail files to the target, then you
should start checking the Replicat to determine when it is at EOF.
3. On the source system, stop the data pumps.
STOP EXTRACT group
4. Check the read RBA of the Replicat against the size of the remote trail.
5. On the target systems, stop the Replicat when the read RBA matches the size of
the remote trail.
STOP REPLICAT group
6. On the source system, issue the following command to open the wallet.
OPEN WALLET
7. On the source system, issue the following command to confirm the version of the
current key. Make a record of the version.
INFO MASTERKEY
8. On the source system, issue the following command to renew the master key.
RENEW MASTERKEY
9. On the source system, issue the following command to confirm that a new version
is current.
INFO MASTERKEY
Note:
If you are using a shared wallet, go to step 12. If you are using a wallet
on each system, continue to the next step.
10. On the source system, issue the following command, where version is the new
version of the master key. Make a record of the hash value.
INFO MASTERKEY VERSION version
11. Copy the updated wallet from the source system to the same location as the old
wallet on all of the target systems.
12. On each target, issue the following command, where version is the new version
number of the master key. For each wallet, make certain the Status is Current
and compare the new hash value with the one that you originally recorded. All
wallets must show identical key versions and hash values.
INFO MASTERKEY VERSION version
8-5
Chapter 8
Deleting Stale Master Keys
Note:
For Oracle GoldenGate deployments using a shared wallet, the older
versions of the master key should be retained after the master key is
renewed until all processes are using the newest version. The time to wait
depends on the topology, latency, and data load of the deployment. A
minimum wait of 24 hours is a conservative estimate, but you may need to
perform testing to determine how long it takes for all processes to start using
a new key. To determine whether all of the processes are using the newest
version, view the report file of each Extract immediately after renewing the
master key to confirm the last SCN that was mined with the old key. Then,
monitor the Replicat report files to verify that this SCN was applied by all
Replicat groups. At this point, you can delete the older versions of the master
key.
8-6
Chapter 8
Deleting Stale Master Keys
3. Issue the following command to delete the stale master keys. Options are
available to delete a specific version, a range of versions, or all versions including
the current one. To delete all of the versions, transaction activity and the Oracle
GoldenGate processes must be stopped.
DELETE MASTERKEY {VERSION version | RANGE FROM begin_value TO end_value}
Note:
DELETE MASTERKEY marks the key versions for deletion but does not
actually delete them.
4. Review the messages returned by the DELETE MASTERKEY command to ensure that
the correct versions were marked for deletion. To unmark any version that was
marked erroneously, use the UNDELETE MASTERKEY VERSION version command
before proceeding with these steps. If desired, you can confirm the marked
deletions with the INFO MASTERKEY command.
5. When you are satisfied that the correct versions are marked for deletion, issue the
following command to purge them from the wallet. This is a permanent deletion
and cannot be undone.
PURGE WALLET
Next steps:
• If the wallet resides on shared storage, you are done with these steps.
• If there is a wallet on each system and you cannot stop the Oracle
GoldenGate processes, repeat the preceding steps on each Oracle
GoldenGate system.
• If there is a wallet on each system and you can stop the Oracle GoldenGate
processes, continue with these steps to stop the processes and copy the
wallet to the other systems in the correct order.
6. Stop Extract.
STOP EXTRACT group
7. In GGSCI, issue the following command for each data pump Extract until each
returns At EOF, indicating that all of the data in the local trail has been processed.
SEND EXTRACT group STATUS
9. On the target systems, issue the following command for each Replicat until it
returns At EOF.
SEND REPLICAT group STATUS
11. Copy the updated wallet from the source system to the same location as the old
wallet on all of the target systems.
12. Restart Extract.
8-7
Chapter 8
Deleting Stale Master Keys
8-8
9
Managing Identities in a Credential Store
Learn how to use an Oracle GoldenGate credential store to maintain encrypted
database passwords and user IDs and associate them with an alias.
It is the alias, not the actual user ID or password, that is specified in a command or
parameter file, and no user input of an encryption key is required. The credential store
is implemented as an autologin wallet within the Oracle Credential Store Framework
(CSF).
Another benefit of using a credential store is that multiple installations of Oracle
GoldenGate can use the same one, while retaining control over their local credentials.
You can partition the credential store into logical containers known as domains, for
example, one domain per installation of Oracle GoldenGate. Domains enable you to
develop one set of aliases (for example ext for Extract, rep for Replicat) and then
assign different local credentials to those aliases in each domain. For example,
credentials for user ogg1 can be stored as ALIAS ext under DOMAIN system1, while
credentials for user ogg2 can be stored as ALIAS ext under DOMAIN system2.
The credential store security feature is not supported on the DB2 for i, DB2 z/OS, and
NonStop platforms. For those platforms and any other supported platforms, see
Encrypting a Password in a Command or Parameter File.
Topics:
• Creating and Populating the Credential Store
• Specifying the Alias in a Parameter File or Command
Where:
• userid is the user name. Only one instance of a user name can exist in the
credential store unless the ALIAS or DOMAIN option is used.
9-1
Chapter 9
Specifying the Alias in a Parameter File or Command
• password is the password. The password is echoed (not obfuscated) when this
option is used. For security reasons, it is recommended that you omit this
option and allow the command to prompt for the password, so that it is
obfuscated as it is entered.
• alias is an alias for the user name. The alias substitutes for the credential in
parameters and commands where a login credential is required. If the ALIAS
option is omitted, the alias defaults to the user name. If you do not want user
names in parameters or command input, use ALIAS and specify a different
name from that of the user.
• domain is the domain that is to contain the specified alias. The default domain
is Oracle GoldenGate.
9-2
Part III
Securing the Classic Architecture
Use this part to secure your Classic Architecture environments.
Topics:
• Securing Manager
You can use the Manager parameter, ACCESSRULE, to set security access rules for
Manager. It allows GGSCI access from a remote host if you are using passive
Extract or Director.
• Configuring GGSCI Command Security
You can establish command security for Oracle GoldenGate to control which users
have access to which Oracle GoldenGate functions.
• Using Target System Connection Initiation
Learn how to allow Oracle GoldenGate to replicate into a more secure network or
server where communication must be established from the target back to the
source system..
• Managing Encryption Using a Key Management Service in Oracle GoldenGate
Classic Architecture
This chapter describes the benefits of using a Key Management Service with
Oracle GoldenGate Classic Architecture. It also describes the system
requirements, processes and parameters available with Oracle GoldenGate for
configuring Oracle Key Vault with Oracle GoldenGate.
Note:
Ensure that wallet created while installing the endpoint is an auto-login
wallet.
2. Specify the following Oracle Key Vault details with the GLOBALS parameter using
these options:
• Location of OKV_HOME
• Name of the master key master_key_name.
• KMS TYPE with the value set as OKV
• KMS_VERSION with the value set as 18.1.
• Time to live TTL.
See Configuring Oracle GoldenGate for details about KMS globals parameter
values.
See Oracle Key Vault Use Case Scenarios for more information about registering
and uploading master keys.
2. Activate the master key. The following is a example:
3. Add the Oracle GoldenGate master key name and version attributes to the key, as
shown in the following example:
Oracle GoldenGate identifies the master key for a particular deployment using the
custom attributes, x-OGG-KeyName and x-OGG-KeyVersion.
4. Specify the following Oracle Key Vault values in the new KMS global parameter.
See Configuring Oracle GoldenGate :
• The location of Oracle Key Vault home directory (OKV_HOME)
• Name of the master key
• Time-to-live
An example with the Oracle Key Vault values is:
Note:
Do not register multiple keys with the same x-OGG-KeyName and x-OGG-
KeyVersion.
3. Add the Oracle GoldenGate master key name and version attributes to the key, as
shown in the following example.
Oracle GoldenGate identifies the master key for a particular deployment using the
custom attributes, x-OGG-KeyName and x-OGG-KeyVersion.
For example:
KMS TYPE OKV KMS_VERSION 18.1 HOME /u01/OKV MASTER_KEY_NAME OGG1 [ TTL
10 ]
For example, the following access rules have been assigned explicit priority levels
through the PRI option. These rules allow any user to access the Collector process
(the SERVER program), and in addition, allow the IP address 122.11.12.13 to access
GGSCI commands. Access to all other Oracle GoldenGate programs is denied.
ACCESSRULE, PROG *, DENY, PRI 99
ACCESSRULE, PROG SERVER, ALLOW, PRI 1
ACCESSRULE, PROG GGSCI, IPADDR 122.11.12.13, PRI 1
Another example, the following access rule grants access to all programs to the user
JOHN and designates an encryption key to decrypt the password. If the password
provided with PASSWORD matches the one in the ENCKEYS lookup file, connection is
granted.
ACCESSRULE, PROG *, USER JOHN, PASSWORD OCEAN1, ENCRYPTKEY lookup1
10-1
11
Configuring GGSCI Command Security
You can establish command security for Oracle GoldenGate to control which users
have access to which Oracle GoldenGate functions.
Note:
The GGSCI program is only available in the Oracle GoldenGate CA.
For example, you can allow certain users to issue INFO and STATUS commands, while
preventing their use of START and STOP commands. Security levels are defined by the
operating system's user groups.
To implement security for Oracle GoldenGate commands, you create a CMDSEC file in
the Oracle GoldenGate directory. Without this file, access to all Oracle GoldenGate
commands is granted to all users.
Note:
The security of the GGSCI program is controlled by the security controls of the
operating system.
Topics:
• Setting Up Command Security
• Securing the CMDSEC File
Where:
• command_name is a GGSCI command name or a wildcard, for example START or
STOP or *.
11-1
Chapter 11
Setting Up Command Security
STATUS * dpt1 * YES Except for the preceding rule, all users in dpt1 are granted
all STATUS commands.
START REPLICAT root * YES START REPLICAT is granted to all members of the root
group.
START REPLICAT * * NO Except for the preceding rule, START REPLICAT is denied
to all users.
* EXTRACT 200 * NO All EXTRACT commands are denied to all groups with ID of
200.
The following incorrect example illustrates what to avoid when creating a CMDSEC file.
STOP * dpt2 * NO All STOP commands are denied to everyone in group dpt2.
11-2
Chapter 11
Securing the CMDSEC File
The order of the entries in Table 11-2 causes a logical error. The first rule (line 1)
denies all STOP commands to all members of group dpt2. The second rule (line 2)
grants all STOP commands to user Chen. However, because Chen is a member of the
dpt2 group, he has been denied access to all STOP commands by the second rule,
even though he is supposed to have permission to issue them.
The proper way to configure this security rule is to set the user-specific rule before the
more general rule(s). Thus, to correct the error, you would reverse the order of the two
STOP rules.
11-3
12
Using Target System Connection Initiation
Learn how to allow Oracle GoldenGate to replicate into a more secure network or
server where communication must be established from the target back to the source
system..
When a target system resides inside a trusted intranet zone, initiating connections
from the source system (the standard Oracle GoldenGate method) may violate
security policies if the source system is in a less trusted zone. It also may violate
security policies if a system in a less trusted zone contains information about the ports
or IP address of a system in the trusted zone, such as that normally found in an Oracle
GoldenGate Extract parameter file.
In this kind of intranet configuration, you can use a passive-alias Extract
configuration. Connections are initiated from the target system inside the trusted zone
by an alias Extract group, which acts as an alias for a regular Extract group on the
source system, known in this case as the passive Extract. Once a connection
between the two systems is established, data is processed and transferred across the
network by the passive Extract group in the usual way.
1. An Oracle GoldenGate user starts the alias Extract on the trusted system, or an
AUTOSTART or AUTORESTART parameter causes it to start.
2. GGSCI on the trusted system sends a message to Manager on the less trusted
system to start the associated passive Extract. The host name or IP address and
port number of the Manager on the trusted system are sent to the less trusted
system.
3. On the less trusted system, Manager starts the passive Extract, and the passive
Extract finds an open port (according to rules in the DYNAMICPORTLIST Manager
parameter) and listens on that port.
12-1
Chapter 12
Configuring the Passive Extract Group
4. The Manager on the less trusted system returns that port to GGSCI on the trusted
system.
5. GGSCI on the trusted system sends a request to the Manager on that system to
start a Collector process on that system.
6. The target Manager starts the Collector process and passes it the port number
where Extract is listening on the less trusted system.
7. Collector on the trusted system opens a connection to the passive Extract on the
less trusted system.
8. Data is sent across the network from the passive Extract to the Collector on the
target and is written to the trail in the usual manner for processing by Replicat.
Topics:
• Configuring the Passive Extract Group
• Configuring the Alias Extract Group
• Starting and Stopping the Passive and Alias Processes
• Managing Extraction Activities
• Other Considerations when using Passive-Alias Extract
Note:
The passive Extract group is only available in the Oracle GoldenGate CA.
To create an Extract group in passive mode, use the standard ADD EXTRACT command
and options, but add the PASSIVE keyword in any location relative to other command
options. Examples:
ADD EXTRACT fin, TRANLOG, BEGIN NOW, PASSIVE, DESC 'passive Extract'
ADD EXTRACT fin, PASSIVE, TRANLOG, BEGIN NOW, DESC 'passive Extract'
To configure parameters for the passive Extract group, create a parameter file in the
normal manner, except:
• Exclude the RMTHOST parameter, which normally would specify the host and port
information for the target Manager.
12-2
Chapter 12
Configuring the Alias Extract Group
Note:
The alias Extract group is only available in the Oracle GoldenGate CA.
To create an Extract group in alias mode, use the ADD EXTRACT command without any
other options except the following:
ADD EXTRACT group
, RMTHOST {host_name | IP_address}
, MGRPORT port
[, RMTNAME name]
[, DESC 'description']
The RMTHOST specification identifies this group as an alias Extract, and the information
is written to the checkpoint file. The host_name and IP_address options specify the
name or IP address of the source system. MGRPORT specifies the port on the source
system where Manager is running.
The alias Extract name can be the same as that of the passive Extract, or it can be
different. If the names are different, use the optional RMTNAME specification to specify
the name of the passive Extract. If RMTNAME is not used, Oracle GoldenGate expects
the names to be identical and writes the name to the checkpoint file of the alias Extract
for use when establishing the connection.
Error handling for TCP/IP connections is guided by the TCPERRS file on the target
system. It is recommended that you set the response values for the errors in this file to
RETRY. The default is ABEND. This file also provides options for setting the number of
retries and the delay between attempts. For more information about error handling for
TCP/IP and the TCPERRS file.
or,
STOP EXTRACT alias_group_name
12-3
Chapter 12
Managing Extraction Activities
The command is sent to the source system to start or stop the passive Extract group.
Do not issue these commands directly against the passive Extract group. You can
issue a KILL EXTRACT command directly for the passive Extract group.
12-4
A
Encrypting a Password in a Command or
Parameter File
Learn how to encrypt a database password that is to be specified in a command or
parameter file. This method should only be used for HP NonStop platforms. All other
platforms should use the Oracle Credential store to create an alias for using
commands or parameter files.
This method takes a clear-text password as input and produces an obfuscated
password string and a lookup key, both of which can then be used in the command or
parameter file. This encryption method supports all of the databases that require a
login for an Oracle GoldenGate process to access the database.
Oracle recommends that you use the USERIDALIAS, ASMUSERALIAS, or
MININGUSERALIAS options before using this method.
Where:
• password is the clear-text login password. Do not enclose the password within
quotes. If the password is case-sensitive, type it that way.
• algorithm specifies the encryption algorithm to use:
– AES128 uses the AES 128 cipher, which has a key size of 128 bits.
– AES192 uses the AES 192 cipher, which has a key size of 192 bits.
– AES256 uses the AES 256 cipher, which has a key size of 256 bits.
– BLOWFISH uses Blowfish encryption with a 64-bit block size and a variable-
length key size from 32-bits to 128-bits. Use AES if supported for the
platform. Use BLOWFISH for backward compatibility with earlier Oracle
GoldenGate versions, and for DB2 z/OS and DB2 for i. AES is not
supported on those platforms.
• ENCRYPTKEY key_name specifies the logical name of a user-created encryption
key in the ENCKEYS lookup file. The key name is used to look up the actual key
A-1
Appendix A
Specifying the Encrypted Password in a Parameter File or Command
in the ENCKEYS file. Using a user-defined key and an ENCKEYS file is required for
AES encryption. To create a key and ENCKEYS file, see Populating an
ENCKEYS File with Encryption Keys.
• ENCRYPTKEY DEFAULT directs Oracle GoldenGate to generate a predefined
Blowfish key. This type of key is insecure and should not be used in a
production environment if the platform supports AES. Use this option only for
DB2 on /OS and DB2 for i when BLOWFISH is specified. ENCRYPT PASSWORD
returns an error if AES is used with DEFAULT.
If no algorithm is specified, AES 128 is the default for all database types
except DB2 z/OS, where BLOWFISH is the default.
The following are examples of ENCRYPT PASSWORD with its various options.
ENCRYPT PASSWORD mypassword AES256 ENCRYPTKEY mykey1
ENCRYPT PASSWORD mypassword BLOWFISH ENCRYPTKEY mykey1
ENCRYPT PASSWORD mypassword BLOWFISH ENCRYPTKEY DEFAULT
3. The encrypted password is output to the screen when you run the ENCRYPT
PASSWORD command. Copy the encrypted password and then see Specifying the
Encrypted Password in a Parameter File or Command for instructions on pasting it
to a command or parameter.
A-2
Appendix A
Specifying the Encrypted Password in a Parameter File or Command
Where:
• user is the database user name for the Oracle GoldenGate process or (Oracle
only) a host string. For Oracle ASM, the user must be SYS.
• encrypted-passwordis the encrypted password that is copied from the ENCRYPT
PASSWORD command results. Do not enclose the password within quotes. Do not
use commas in passwords. If the password is case-sensitive, type it that way.
• algorithm specifies the encryption algorithm that was used to encrypt the
password: AES128, AES192, AES256, or BLOWFISH. AES128 is the default if the
default key is used and no algorithm is specified.
• ENCRYPTKEY keyname specifies the logical name of a user-created encryption key in
the ENCKEYS lookup file. Use if ENCRYPT PASSWORD was used with the KEYNAME
keyname option.
• ENCRYPTKEY DEFAULT directs Oracle GoldenGate to use a random key. Use if
ENCRYPT PASSWORD was used with the KEYNAME DEFAULT option.
The following are examples of using an encrypted password in parameters and
command:
Note:
In the following example, comma is used as a separator and is not part of the
password.
A-3
Appendix A
Specifying the Encrypted Password in a Parameter File or Command
A-4
B
Avoiding Security Attacks
Learn about security attacks and ways to mitigate them.
Topics:
• Cross Site Request Forgery
Learn how to avoid client-side attacks.
B-1
C
Encrypting Data with the ENCKEYS
Method
To use this method of data encryption, you configure Oracle GoldenGate to generate
an encryption key and store the key in a local ENCKEYS file.
Note:
Oracle only recommends the use of this method for platforms where master
key and wallet support is not available. You should not use this method if
wallet-based support is available.
The method secures the date in the trails or an Extract file and data sent across
TCP/IP networks.
The ENCKEYS method is valid for all Oracle GoldenGate-supported databases and
platforms. Blowfish must be used on the DB2 for i, DB2 z/OS, and NonStop platforms.
Encrypts the data in files, across data links, and across TCP/IP. Use any of the
following:
• Any Advanced Encryption Security (AES) cipher: Advanced Encryption Standard
(AES) is a symmetric-key encryption standard that is used by governments and
other organizations that require a high degree of data security. It offers three 128-
bit block-ciphers: a 128-bit key cipher, a 192-bit key cipher, and a 256-bit key
cipher. To use AES for any database other than Oracle on a 32-bit platform, the
path to the lib sub-directory of the Oracle GoldenGate installation directory must
be set with the library path variable. Bug 27523872 For different platforms the
library path variable is different. For Linux it is LD_LIBRARY_PATH. For IBM i and
AIX it is LIBPATH, SHLIB_PATH variable for Solaris and the PATH variable on
Windows. Not required for 64-bit platforms.
AES-128
AES-192
AES-256
• Blowfish encryption: A keyed symmetric-block cipher. The Oracle GoldenGate
implementation of Blowfish has a 64-bit block size with a variable-length key size
from 32 bits to 256 bits.
This method makes use of a permanent key that can only be changed by regenerating
the algorithm, see Populating an ENCKEYS File with Encryption Keys.
The ENCKEYS file must be secured through the normal method of assigning file
permissions in the operating system.
This procedure generates an AES encryption key and provides instructions for storing
it in the ENCKEYS file. ENCKEYS file for microservices is stored in the
C-1
Appendix C
Setting Up the Data Encryption
Where:
• RMTHOSTOPTIONS is used for passive Extract, see Populating an ENCKEYS File
with Encryption Keys.
• ENCRYPTTRAIL without options uses AES 128 as the default for all database
types except the DB2 for i, DB2 z/OS, and NonStop platforms, where
BLOWFISH is the default.
• AES128 encrypts with the AES 128 encryption algorithm. Not supported for
iDB2 for i, DB2 z/OS, and NonStop platforms.
• AES192 encrypts with AES 192 encryption algorithm. Not supported for DB2 for
i, DB2 z/OS, and NonStop platforms.
• AES256 encrypts with AES 256 encryption algorithm. Not supported for iSeries,
z/OS, and NonStop platforms.
• BLOWFISH uses Blowfish encryption with a 64-bit block size and a variable-
length key size from 32-bits to 128-bits. Use AES if supported for the platform.
Use BLOWFISH for backward compatibility with earlier Oracle GoldenGate
C-2
Appendix C
Setting Up the Data Encryption
versions, and for DB2 for I and DB2 z/OS. AES is not supported on those
platforms.
• KEYNAME keyname specifies the logical look-up name of an encryption key in
the ENCKEYS file. Not an option of ENCRYPTTRAIL.
Note:
RMTHOST is used unless the Extract is in a passive configuration.
3. If using a static Collector with data encrypted over TCP/IP, append the following
parameters in the Collector startup string:
-KEYNAME keyname
-ENCRYPT algorithm
The specified key name and algorithm must match those specified with the
KEYNAME and ENCRYPT options of RMTHOST.
C-3
Appendix C
Setting Up the Data Encryption
Note:
The algorithm specified with ENCRYPTTRAIL can vary from trail to trail. For
example, you can use AES 128 to encrypt a local trail and AES 256 to
encrypt a remote trail.
In this example, the encrypted data must be decrypted so that data pump 1pump can
perform work on it. Therefore, the DECRYPTTRAIL parameter is used in the parameter
file of the data pump. To re-encrypt the data for output, the ENCRYPTTRAIL parameter
must be used after DECRYPTTRAIL but before the output trail specifications. If the data
pump did not have to perform work on the data, the DECRYPTTRAIL and ENCRYPTTRAIL
parameters could have been omitted to retain encryption all the way to Replicat.
C-4
Appendix C
Populating an ENCKEYS File with Encryption Keys
You must generate and store encryption keys when using the security features:
• ENCRYPTTRAIL (see Setting Up the Data Encryption)
C-5
Appendix C
Populating an ENCKEYS File with Encryption Keys
Where:
• key_length is the encryption key length, up to 256-bits (32 bytes).
• n represents the number of keys to generate.
Example:
KEYGEN 128 4
C-6
Appendix C
Populating an ENCKEYS File with Encryption Keys
3. Save the file as the name ENCKEYS in all upper case letters, without an extension,
in the Oracle GoldenGate installation directory.
4. Copy the ENCKEYS file to the Oracle GoldenGate installation directory on every
system. The key names and values in all of the ENCKEYS files must be identical, or
else the data exchange will fail and Extract and Collector will abort with the
following message:
GGS error 118 – TCP/IP Server with invalid data.
C-7