Configuration
Configuration
The IBM Verify Identity Access OIDC Provider (IVIAOP) uses YAML documents for all configuration data. When the container starts, it will look in the /var/isvaop/config
directory of the container for YAML documents.
Depending on your container environment, the files within the configuration directory can be bind mounted in, provided via a ConfigMap or any other mechanism which places the files in the configuration directory.
Refer to YAML Config Guide for full YAML configuration details.
Using Multiple Configuration YAML Documents
IVIAOP configuration can span across multiple YAML documents. This is useful for simplifying the management of configuration data.
YAML Documents Rules
IVIAOP combines all YAML documents found in /var/isvaop/config
using the following rules:
- IVIAOP configuration documents must have the file extension
.yaml
or.yml
. - The following top-level keys can only be defined once across all configuration YAML documents.
version
definition
jwks
authentication
template_macros
ssl
server
javascript
logging
dynamic_registration
secrets
runtime_db
session_cache
- The following top-level keys can be defined more than once in different configuration YAML files. When this occurs IVIAOP will combine all of the values.
server_connections
attribute_sources
ldapcfg
clients
keystore
rules
- When the configuration
version
is greater than or equal to24.04
, the following rules apply:- Full YAML based configuration is supported.
- All configurations must supplied in the YAML configuration.
attribute_map
underdefinition
references to attribute source underattribute_sources
usingname
of the
attribute source.
- When the configuration
version
is lesser than24.04
, the following rules apply:- Full YAML based configuration is NOT supported.
- The following configurations must supplied in corresponding folders under
/var/isvaop/config
- Customized template pages:
templates
- Keystores:
keystore
- JavaScript mapping rules:
javascript/mappingrule
- JavaScript access policies:
javascript/accesspolicy
- Static clients:
clients
- Customized template pages:
attribute_map
underdefinition
references to attribute source underattribute_sources
usingid
of the
attribute source.
Example of Multiple Configuration YAML Documents
This example illustrates how multiple configuration YAML documents can be provided to IVIAOP. The following files are provided to the /var/isvaop/config
path within the container.
isvaop.yml
oidc.yml
runtimedb.yml
session.yml
ldap.yml
attrsrc_value.yml
keystores.yml
rules.yml
clients.yml
isvaop.yml
- This file contains the top
level version
, server
, template_macros
, logging
, secrets
, ssl
, authentication
and javascript
keys. Each
document can provide more than one top level key, provided they are
following YAML Documents Rules.
# this file contains the IVIAOP server and related configurations
version24.04
server
ssl
key"ks:rt_profile_keys/httpserver"
certificate"ks:rt_profile_keys/httpserver"
require_mtls true
client_auth_trust_store ks truststore
pages
type zip
content"@pages.zip"
template_macros
user_macros
name
family_name
given_name
display_name
request_macros
authorization_details
claims
user_code
state
logging
level debug
secrets
obf_key"abcdef"
ssl
certificate
ks:rt_profile
disable_hostname_verificationtrue
authentication
endpoint -
https://auth.isvaop.com:445/oauth2/auth
callback_param_name Target
javascript
timeout0
max_load16
max_idle_time600
max_ctx_in_isolate50
cleanup_frequency0
use_poolfalse
oidc.yml
- This file contains the definition
, jwks
and dynamic_registration
keys.
# this file contains the OIDC related configurations
definition
id1
name OIDC Definition
grant_types
authorization_code
implicit
password
client_credentials
refresh_token
'urn:openid:params:grant-type:ciba'
access_policy_id1
pre_mappingrule_id100
post_mappingrule_id101
base_url'https://auth.isvaop.com:445'
mtls_base_url'https://auth.isvaop.com:445'
mtls_certificate_header_name X-Client-Certificate
features
enable_fault_tolerancefalse
enable_dynamic_registrationtrue
consent_prompt PROMPT_ONCE
fapi_compliantfalse
enforce_parfalse
prefer_claims_at_userinfotrue
token_settings
issuer https //www.ibm.com
signing_alg PS512
signing_keystore rt_profile
signing_keylabel rsa256
authorization_code_lifetime300
access_token_lifetime7200
id_token_lifetime3600
refresh_token_lifetime64800
attribute_map
name name
preferred_username preferred_username
email email
metadata
claims_supported
iss
name
displayName
jwks
signing_keystore rt_profile_keys
encryption_keystore rt_profile_keys
dynamic_registration
recipe UK-OB
mappingrule_id dcr
software_statement_validation
jwks_uri -
https://oidc-dev-test.ite1.idng.ibmcloudsecurity.com/oidc/endpoint/default/jwks
signing_algs
PS256
ES256
registration_endpoint_authentication
require_mtlstrue
require_bearer_tokentrue
require_software_statementfalse
allow_custom_client_credstrue
management_endpoint_authentication
require_mtlstrue
require_bearer_tokentrue
require_software_statementfalse
registration_access_token
generatetrue
lifetime86400
scopes
cdr:registration
runtimedb.yml
- This file contains the runtime_db
and server_connections
keys.
# this file contains the runtime db related configurations
runtime_db db2srv
server_connections
name db2srv
type db2
database_name isvaop
hosts
hostname db2pri.isvaop.com
hostport50001
hostname db2alt.isvaop.com
hostport50001
credential
username db2inst1
password"OBF:U2FsdGVkX18T/grbo0K8FiJ4DtaTl3EqjRECDQrP/xQ="
conn_settings
min_pool_size5
max_pool_size50
max_idle_time10
connect_timeout5
aged_timeout30
ssl
certificate
ks:db2client
session.yml
- This file contains the session_cache
and server_connections
keys.
# this file contains the session cache related configurations
session_cache
type redis
cfg redis-standalone
server_connections
name redis-standalone
type redis
deployment
model standalone
hosts
hostname redis.isvaop.com
hostport6390
credential
username isva
password"OBF:U2FsdGVkX18rz1DFhOzHmrG5GKCRQJsEMmTcN/5VxSA="
ssl
certificate
ks:rt_profile
conn_settings
min_idle_size5
idle_timeout10
max_pool_size50
connect_timeout5
io_timeout3
ldap.yml
- This file contains the server_connections
, attribute_sources
, and ldapcfg
keys.
# this file contains the `server_connection`, `attribute_sources` and `ldapcfg` configuration for the ldap server `ldap_stg`
server_connections
name ldap_stg
type ldap
hosts
hostname192.168.1.232
hostport389
credential
bind_dn cn=admin,dc=example,dc=org
bind_password"OBF:U2FsdGVkX18T/grbo0K8FiJ4DtaTl3EqjRECDQrP/xQ="
ssl
certificate
ks:rt_profile
conn_settings
max_pool_size50
connect_timeout3
attribute_sources
id1
name name
type ldap
value displayName
scope subtree
filter (objectclass=*)
selector cn,displayName,mail
srv_conn ldap_stg
baseDN dc=example,dc=org
id2
name preferred_username
type ldap
value cn
scope subtree
filter (objectclass=*)
selector cn,displayName,mail
srv_conn ldap_stg
baseDN dc=example,dc=org
ldapcfg
name ldap_stg_example
scope subtree
user_object_classes top,Person,organizationalPerson,inetOrgPerson
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector objectClass,cn,sn,givenName,userPassword
srv_conn ldap_stg
attribute uid
baseDN dc=example,dc=org
name ldap_stg_ibm
scope subtree
user_object_classes top,Person,organizationalPerson,inetOrgPerson
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector objectClass,cn,sn,givenName,userPassword
srv_conn ldap_stg
attribute uid
baseDN dc=ibm,dc=com
attrsrc_value.yml
- This file contains the attribute_sources
key.
# this file contains value ldap type attribute sources
attribute_sources
id3
name company_name
type value
value IBM
id4
name company_url
type value
value"https://www.ibm.com"
keystores.yml
- This file contains the keystore
key.
# this file contains the keystores
keystore
name ks1
type p12
content"B64:<encoded_p12>"
password"OBF:<obfuscated_p12_password>"
name ks2
type pem
certificate
label cert01
content"B64:<encoded PEM>"
label cert02
content"@<file>"
label cert03
content
<inline PEM>
key
label key01
content"B64:<encoded PEM>"
label key02
content"@<file>"
label key03
content
<inline PEM>
name ks3
type zip
content"B64:<encoded zip>"
name ks4
type path
content"keystore/ks4_contents"
rules.yml
- This file contains the rules
key.
# this file contains the JavaScript mapping rules and access policy
rules
mapping
name pretoken
rule_type javascript # optional, default to javascript
content"@<file>"
name posttoken
content"B64:<data>"
name cb_notify
content
<inline JS>
access_policy
name default_policy
content
<inline JS>
clients.yml
- This file container the clients
key.
# this file defines the static clients
clients
client_id client01
client_id_issued_at1642399207
client_secret secret
client_name Test Client 01
enabledtrue
grant_types
refresh_token
urn:openid:params:grant-type:ciba
token_endpoint_auth_method private_key_jwt
token_endpoint_auth_signing_alg PS256
token_endpoint_auth_single_use_jtifalse
id_token_signed_response_alg PS512
request_object_signing_alg ES512
require_pushed_authorization_requestsfalse
require_pkcetrue
backchannel_token_delivery_mode poll
backchannel_user_code_parameterfalse
client_id client01jarm
client_id_issued_at1642399207
client_secret"secret" # ahwouvzsvawraww
client_name Client JARM
enabledtrue
grant_types
password
refresh_token
authorization_code
implicit
response_types
code
token id_token
code id_token
code id_token token
code token
redirect_uris
https://www.google.com
https://isvaop.ibm.com:445
token_endpoint_auth_method default
tls_client_auth_subject_dn CN=clientID01,OU=security,O=IBM,L=singapore,ST=singapore,C=SG
tls_client_certificate_bound_access_tokensfalse
id_token_signed_response_alg none
These separate documents are equivalent to providing the following as a single YAML document:
# this file contains all configurations
version24.04
server
ssl
key"ks:rt_profile_keys/httpserver"
certificate"ks:rt_profile_keys/httpserver"
client_auth_trust_store ks truststore
require_mtls true
pages
type zip
content"@pages.zip"
template_macros
user_macros
name
family_name
given_name
display_name
request_macros
authorization_details
claims
user_code
state
logging
level debug
secrets
obf_key"abcdef"
ssl
certificate
ks:rt_profile
disable_hostname_verificationtrue
authentication
endpoint -
https://auth.isvaop.com:445/oauth2/auth
callback_param_name Target
javascript
timeout0
max_load16
max_idle_time600
max_ctx_in_isolate50
cleanup_frequency0
use_poolfalse
definition
id1
name OIDC Definition
grant_types
authorization_code
implicit
password
client_credentials
refresh_token
'urn:openid:params:grant-type:ciba'
access_policy_id default_policy
pre_mappingrule_id pretoken
post_mappingrule_id posttoken
base_url'https://auth.isvaop.com:445'
mtls_base_url'https://auth.isvaop.com:445'
mtls_certificate_header_name X-Client-Certificate
dpop_validation_time_skew100
jwt_bearer_validation_time_skew200
client_assertion_validation_time_skew200
request_object_validation_time_skew100
jwt_token_validation_time_skew100
features
enable_fault_tolerancefalse
enable_dynamic_registrationtrue
consent_prompt PROMPT_ONCE
fapi_compliantfalse
enforce_parfalse
prefer_claims_at_userinfotrue
token_settings
issuer https //www.ibm.com
signing_alg PS512
signing_keystore rt_profile
signing_keylabel rsa256
authorization_code_lifetime300
access_token_lifetime7200
id_token_lifetime3600
refresh_token_lifetime64800
request_object
lifetime3600
require_expirytrue
only_request_object_paramsfalse
enforce_single_usagefalse
backchannel_settings
default_expiry900
maximum_expiry1800
polling_interval5
notifyuser_mappingrule_id notifyuser
checkstatus_mappingrule_id checkstatus
attribute_map
name name
preferred_username preferred_username
email email
metadata
claims_supported
iss
name
displayName
jwks
signing_keystore rt_profile_keys
encryption_keystore rt_profile_keys
dynamic_registration
recipe UK-OB
mappingrule_id dcr
software_statement_validation
jwks_uri -
https://isvaop.ibmcloudsecurity.com/oidc/endpoint/default/jwks
signing_algs
PS256
ES256
registration_endpoint_authentication
require_mtlstrue
require_bearer_tokentrue
require_software_statementfalse
allow_custom_client_credstrue
management_endpoint_authentication
require_mtlstrue
require_bearer_tokentrue
require_software_statementfalse
registration_access_token
generatetrue
lifetime86400
scopes
cdr:registration
runtime_db db2srv
session_cache
type redis
cfg redis-standalone
server_connections
name db2srv
type db2
database_name isvaop
hosts
hostname db2pri.isvaop.com
hostport50001
hostname db2alt.isvaop.com
hostport50001
credential
username db2inst1
password"OBF:U2FsdGVkX18T/grbo0K8FiJ4DtaTl3EqjRECDQrP/xQ="
conn_settings
min_pool_size5
max_pool_size50
max_idle_time10
connect_timeout5
aged_timeout30
ssl
certificate
ks:db2client
name redis-standalone
type redis
deployment
model standalone
hosts
hostname redis.isvaop.com
hostport6390
credential
username isva
password"OBF:U2FsdGVkX18rz1DFhOzHmrG5GKCRQJsEMmTcN/5VxSA="
ssl
certificate
ks:rt_profile
conn_settings
min_idle_size5
idle_timeout10
max_pool_size50
connect_timeout5
io_timeout3
name ldap_stg
type ldap
hosts
hostname192.168.1.232
hostport389
credential
bind_dn cn=admin,dc=example,dc=org
bind_password"OBF:U2FsdGVkX18T/grbo0K8FiJ4DtaTl3EqjRECDQrP/xQ="
ssl
certificate
ks:rt_profile
conn_settings
max_pool_size50
connect_timeout3
attribute_sources
id1
name name
type ldap
value displayName
scope subtree
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector cn,displayName,mail
srv_conn ldap_stg
baseDN dc=ibm,dc=com
id2
name preferred_username
type ldap
value cn
scope subtree
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector cn,displayName,mail
srv_conn ldap_stg
baseDN dc=ibm,dc=com
id3
name email
type ldap
value mail
scope subtree
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector cn,displayName,mail
srv_conn ldap_stg
baseDN dc=ibm,dc=com
ldapcfg
name ldap_stg_example
scope subtree
user_object_classes top,Person,organizationalPerson,inetOrgPerson
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector objectClass,cn,sn,givenName,userPassword
srv_conn ldap_stg
attribute uid
baseDN dc=example,dc=org
name ldap_stg_ibm
scope subtree
user_object_classes top,Person,organizationalPerson,inetOrgPerson
filter (|(|(objectclass=ePerson)(objectclass=person))(objectclass=User))
selector objectClass,cn,sn,givenName,userPassword
srv_conn ldap_stg
attribute uid
baseDN dc=ibm,dc=com
keystore
name ks1
type p12
content"B64:<encoded_p12>"
password"OBF:<obfuscated_p12_password>"
name ks2
type pem
certificate
label cert01
content"B64:<encoded PEM>"
label cert02
content"@<file>"
label cert03
content
<inline PEM>
key
label key01
content"B64:<encoded PEM>"
label key02
content"@<file>"
label key03
content
<inline PEM>
name ks3
type zip
content"B64:<encoded zip>"
name ks4
type path
content"keystore/ks4_contents"
rules
mapping
name pretoken
rule_type javascript # optional, default to javascript
content"@<file>"
name posttoken
content"B64:<data>"
name cb_notify
content
<inline JS>
access_policy
name default_policy
content
<inline JS>
clients
client_id client01
client_id_issued_at1642399207
client_secret secret
client_name Test Client 01
enabledtrue
grant_types
refresh_token
urn:openid:params:grant-type:ciba
token_endpoint_auth_method private_key_jwt
token_endpoint_auth_signing_alg PS256
token_endpoint_auth_single_use_jtifalse
id_token_signed_response_alg PS512
request_object_signing_alg ES512
require_pushed_authorization_requestsfalse
require_pkcetrue
backchannel_token_delivery_mode poll
backchannel_user_code_parameterfalse
client_id client01jarm
client_id_issued_at1642399207
client_secret"secret" # ahwouvzsvawraww
client_name Client JARM
enabledtrue
grant_types
password
refresh_token
authorization_code
implicit
response_types
code
token id_token
code id_token
code id_token token
code token
redirect_uris
https://www.google.com
https://isvaop.ibm.com:445
token_endpoint_auth_method default
tls_client_auth_subject_dn CN=clientID01,OU=security,O=IBM,L=singapore,ST=singapore,C=SG
tls_client_certificate_bound_access_tokensfalse
id_token_signed_response_alg none
Special Types
There are special types which can used in addition to plain text within the YAML file. These special types can be used to substitute values from alternative sources.
Type | Syntax |
---|---|
Keystore | ks:<keystore name> |
Certificate or key | ks:<keystore name>/<certificate or key label> |
External File | @<file name> |
Base 64 Data | B64:<base64 encoded string> |
Obfuscated (Encrypted with Shared Secret) String | OBF:<obfuscated string> |
Encrypted (Encrypted with RSA) String | ENC:<encrypted string> |
Special Types Available in Kubernetes
In addition to the standard special types, there are Kubernetes specific special types available when IVIAOP is running in a Kubernetes environment.
Type | Syntax |
---|---|
Kubernetes ConfigMap | configmap:<configmap name>/<configmap field> |
Kubernetes Secret | secret:<secret name>/<secret field> |
Example Keystore and Certificate
Refer to Key Management for ks:
prefix details and example.
Example File Reference
The following example shows how a file reference can be used to source content from an external file. In this example, a rate limiting rule will be loaded from an external file.
The following folder structure is present in the configuration directory /var/isvaop/config
:
|-- server
| `-- redis_stg.yml
`-- session.yml
In this example, server\redis_stg.yml
is a simple YAML file with the content:
name redis_stg
type redis
deployment
model standalone
hosts
hostname redis_stg.isvaop.top
hostport6390
credential
username
password"OBF:U2FsdGVkX18rz1DFhOzHmrG5GKCRQJsEMmTcN/5VxSA="
In the IVIAOP configuration file session.yml
, the content of server\redis_stg.yml
is included by specifying "@server\redis_stg.yml" as a value.
session_cache
type redis
cfg redis_stg
server_connections
"@server/redis_stg.yml"
This is equivalent to including the text content as-is within the YAML configuration data.
session_cache
type redis
cfg redis_stg
server_connections
name redis_stg
type redis
deployment
model standalone
hosts
hostname redis_stg.isvaop.top
hostport6390
credential
username
password"OBF:U2FsdGVkX18rz1DFhOzHmrG5GKCRQJsEMmTcN/5VxSA="
Example Base 64 Data
For some types of data, it is not practical to store these as text within the configuration YAML and in some scenarios it is useful to be able to embed all data within a single configuration YAML document. In these cases, the values can be base 64 encoded and embedded as values within the configuration YAML.
The following example shows how a transformation rule can be embedded in the configuration YAML as base 64 encoded data.
First, generate the base 64 representation of the file. On UNIX-like systems this can be achieved with the base64
command.
$ base64 -w 0 -i default_policy.js
aW1wb3J0Q2xhc3MoUGFja2FnZXMuY29tLnRpdm9s...
In the IVIAOP configuration YAML, this can be placed on a single line preceded by the B64:
prefix.
rules
access_policy
name default_policy
content"B64:aW1wb3J0Q2xhc3MoUGFja2FnZXMuY29tLnRpdm9s..."
This is equivalent to including the text content as-is within the YAML configuration data.
rules
access_policy
name default_policy
content
importClass(Packages.com.tivoli.am.fim.trustserver.sts.utilities.IDMappingExtUtils);
IDMappingExtUtils.traceString("Username: " + context.getUser().getUsername());
IDMappingExtUtils.traceString("Nonce: " + context.getRequest().getParameter("nonce"));
IDMappingExtUtils.traceString("Response type: " + context.getProtocolContext().getAuthenticationRequest().getAuthenticationContext().getScope());
IDMappingExtUtils.traceString("DefinitionName: " + context.getProtocolContext().getDefinitionName());
IDMappingExtUtils.traceString("ClientName: " + context.getProtocolContext().getClientName());
...
Example Obfuscated (Encrypted with Shared Secret) String
Configuration data can also be provided as encrypted entries which are obfuscated using a shared secret/password. The shared secret is provided in the secrets
section of the YAML and will be used to decrypt all OBF:
prefixed entries found within the configuration YAML.
The following example shows the data p@ssw0rd
being encrypted with the shared secret abcdef
:
$ echo -n "p@ssw0rd" | openssl enc -aes256 \
-pbkdf2 -pass pass:"abcdef" -md sha512 \
-base64
Note that OpenSSL 1.1.1 or newer is required for the above command.
This command will produce a base 64 string similar to U2FsdGVkX1+0aFOU6f+0y7k6H6slVT0L7ztjRaHL7Sc=
. Note that due to salting, you should expect that this command will produce a different encrypted representation of the input data each time it is executed.
The resulting encrypted base 64 string can be provided to IVIAOP using the OBF:
prefix:
runtime_db db2srv
server_connections
name db2srv
type db2
database_name isvaop
hosts
hostname db2pri.isvaop.com
hostport50001
credential
username db2inst1
password"OBF:U2FsdGVkX1+0aFOU6f+0y7k6H6slVT0L7ztjRaHL7Sc="
Example Encrypted (Encrypted with RSA) String
Configuration data can also be provided as RSA encrypted entries. The private key required to decrypt the entry is provided in the secrets
section of the YAML and will be used to decrypt all ENC:
prefixed entries found within the configuration YAML.
To use RSA encryption, generate a private certificate:
$ openssl genrsa -out private.pem 2048
This private certificate will be used to decrypt the entries and must be provided in the configuration YAML. To create encrypted entries, generate a corresponding public key which will be used for the encryption operations:
$ openssl rsa -pubout -in private.pem -out public.pem
The following example shows the data p@ssw0rd
being encrypted with the public key public.pem and base64 encoded:
$ echo -n "p@ssw0rd" | openssl rsautl -encrypt -inkey public.pem -pubin | base64
This command will produce a base 64 encoded string. The encrypted base 64 encoded string can be provided to IVIAOP using the ENC:
prefix:
runtime_db db2srv
server_connections
name db2srv
type db2
database_name isvaop
hosts
hostname db2pri.isvaop.com
hostport50001
credential
username db2inst1
password"ENC:L2qQGwwPFqLzUK3..."
Example Kubernetes ConfigMap
The Kubernetes ConfigMap type can be used to directly reference a field from a particular ConfigMap within the IVIAOP configuration YAML. During bootstrapping, the IVIAOP container will use the Kubernetes REST API endpoints to retrieve the ConfigMap and substitute the value into the configuration YAML.
Consider the following ConfigMap named access-policy
containing the fields default_policy_name
, default_policy_type
and default_policy.js
:
kind ConfigMap
apiVersion v1
metadata
name access-policy
namespace isvaop
data
default_policy.js
importClass(Packages.com.tivoli.am.fim.trustserver.sts.utilities.IDMappingExtUtils);
IDMappingExtUtils.traceString("Username: " +
context.getUser().getUsername());
...
default_policy_name default_policy
default_policy_type javascript
To reference these values within the configuration YAML, use the syntax for the Kubernetes ConfigMap type:
rules
access_policy
name"configmap:access-policy/default_policy_name"
type"configmap:access-policy/default_policy_type"
content"configmap:access-policy/default_policy.js"
During bootstrapping, IVIAOP will retrieve the ConfigMap and substitute it into the configuration YAML:
rules
access_policy
name default_policy
type javascript
content
importClass(Packages.com.tivoli.am.fim.trustserver.sts.utilities.IDMappingExtUtils);
IDMappingExtUtils.traceString("Username: " +
context.getUser().getUsername());
...
Example Kubernetes Secret
The Kubernetes Secret type can be used to directly reference a field from a particular secret within the IVIAOP configuration YAML. During bootstrapping, the IVIAOP container will use the Kubernetes REST API endpoints to retrieve the secret and substitute the secret value into the configuration YAML.
Consider the following secret named storage
containing the
fields db2srv_dbname
, db2srv_hostname
, db2srv_hostport
, db2srv_username
, and db2srv_password
:
kind Secret
apiVersion v1
metadata
name storage
namespace isvaop
data
db2srv_dbname aXN2YW9w
db2srv_hostname ZGIyc3J2LmlzdmFvcC5jb20=
db2srv_hostport NTAwMDE=
db2srv_username ZGIyaW5zdDE=
db2srv_password YWRtaW4=
type Opaque
To reference these values within the configuration YAML, use the syntax for the Kubernetes Secret type:
runtime_db db2srv
server_connections
name db2srv
type db2
database_name secret storage/db2srv_dbname
hosts
hostname secret storage/db2srv_hostname
hostport secret storage/db2srv_hostport
credential
username secret storage/db2srv_username
password secret storage/db2srv_password
During bootstrapping, IVIAOP will retrieve the secret, base64 decode the data and substitute it into the configuration
YAML:
runtime_db db2srv
server_connections
name db2srv
type db2
database_name isvaop
hosts
hostname db2srv.isvaop.com
hostport50001
credential
username db2inst1
password admin
Effective configuration
With the configuration split across multiple documents, we have introduced an environemnt variable to retrieve the effective configuration that will be used by the IVIAOP container. The effective configuration is essentially one YAML document with all the configuration combined together.
To enable accessing the YAML document set DEBUG_SAVE_EFFECTIVE_CONFIG_AS_FILE
to true
.
Once the contianer restarts, it will log the location of the YAML document. You can then use a terminal to access the effective config.
Example log
[03/23/2023 03:41:07.021 UTC] (internal.config.saveEffectiveConfigAsFile) I [CORR_ID-870f0857-66a0-42c0-be69-7e9f3e4ea324] "Environment variable DEBUG_SAVE_EFFECTIVE_CONFIG_AS_FILE is set to 'true', save effective configurations to file '/isvaop/config/7751bb5e-0090-40ae-b743-838c23b7444c/EffectiveConfig.yml'"
Note
The effective configuration document may contain sensitive information, we recommend that
DEBUG_SAVE_EFFECTIVE_CONFIG_AS_FILE
is set to true only in
staging environment.
Updated 4 months ago