This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).
We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:
Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,
Post an idea.
Get feedback from the IBM team and other customers to refine your idea.
Follow the idea through the IBM Ideas process.
Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.
IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.
ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.
See this idea on ideas.ibm.com
Why is it useful?
(IPIC is used as an example to illustrate the requirement, but the requirement extends to any Keystores that may be required by a z/OS Connect API server.)
IPIC security is an important consideration when deploying z/OS Connect API servers as Linux containers, particularly bind-time (transport) security which will prevent an unauthorised client system from connecting to CICS. IPIC bind-time (transport) security is implemented by configuring the connection to use TLS client authentication.
Container images are designed to be immutable, and this applies to both application content (e.g. .war files) and configuration (e.g. server.xml snippets). An example of an immutable secure IPIC connection config that could be used unchanged from development (z/OS Connect Designer) through to production (z/OS Connect API server):
<zosconnect_cicsIpicConnection id="cicsConn"
zosConnectNetworkid="${BAQ_NETWORK}"
zosConnectApplid="${BAQ_APPLID}"
host="${CICS_HOST}"
port="${CICS_PORT}"
sslRef="ipicSSLConfig" />
<ssl id="ipicSSLConfig"
keyStoreRef="ipicKeyStore"
trustStoreRef="ipicTrustStore" />
<keyStore id="ipicKeyStore"
location="${server.config.dir}/resources/security/${KEYSTORE}"
password="${KEYSTORE_PASSWORD}"
type="PKCS12" />
<keyStore id="ipicTrustStore"
location="${server.config.dir}/resources/security/${TRUSTSTORE}"
password="${TRUSTSTORE_PASSWORD}"
type="PKCS12" />
Docker, Podman, etc. provide a simple mechanism for mounting Keystores into a z/OS Connect Designer container; for example using a docker-compose.yaml file:
version: "3.2"
services:
zosConnect:
image: icr.io/zosconnect/ibm-zcon-designer:3.0.75
environment:
- BAQ_NETWORK=BAQCA
- BAQ_APPLID=BAQCA
- CICS_HOST=10.242.64.200
- CICS_PORT=57027
- KEYSTORE=ipic-dev-keystore.p12
- KEYSTORE_PASSWORD=${KPASS}
- TRUSTSTORE=ipic-dev-truststore.p12
- TRUSTSTORE_PASSWORD=${TPASS}
- HTTPS_PORT=9443
ports:
- "9443:9443"
volumes:
- ../zc-pot-api:/workspace/project
- ./logs/:/logs/
- ./certs:/config/resources/security/:ro
- ./defaults:/config/configDropins/defaults:ro
In a Kubernetes environment (where z/OS Connect API servers are deployed), the same result is achieved using ConfigMaps, Secrets, Volumes and volumeMounts. However, the z/OS Connect Operator and associated Custom Resource (CR) do not currently support all of the k8s objects required to mount keystores into a Liberty server, making it difficult for customers to design and build immutable z/OS Connect API server container images. Currently, a customer would have to do something like this:
(Keystores and truststores would be pre-deployed as k8s Secrets.)
1) Build a z/OS Connect API server image containing a secure IPIC connection server.xml snippet (similar to example above)
2) Create a ZosConnect CR instance, which will in turn create a Deployment, which will in turn start a z/OS Connect API server in a container
3) The z/OS Connect API server will fail to start with "keystore not found" type errors
4) Patch the Deployment in order to mount the keystores; example patch-file:
spec:
template:
spec:
containers:
- name: zc
volumeMounts:
- mountPath: "/opt/ibm/wlp/usr/servers/defaultServer/resources/security/ipic-prod-truststore.p12"
name: zc-truststore
readOnly: true
subPath: ipic-prod-truststore.p12
- mountPath: "/opt/ibm/wlp/usr/servers/defaultServer/resources/security/ipic-prod-keystore.p12"
name: zc-keystore
readOnly: true
subPath: ipic-prod-keystore.p12
volumes:
- name: zc-truststore
secret:
defaultMode: 420
secretName: zc-truststore
- name: zc-keystore
secret:
defaultMode: 420
secretName: zc-keystore
5) k8s will create a new Pod / z/OS Connect API server; it will start successfully and the old Pod / API server will be deleted
Who would benefit?
All customers deploying z/OS Connect API servers to Kubernetes.
How would it work?
The ZosConnect Custom Resource (CR) schema would be enhanced to support all of the k8s objects required to mount keystores into a Liberty server. Optionally, the z/OS Connect Operator UI would be similarly enhanced, but in the meantime, it would be sufficient to support an enhanced ZosConnect CR in yaml format.
Idea priority | Medium |
By clicking the "Post Comment" or "Submit Idea" button, you are agreeing to the IBM Ideas Portal Terms of Use.
Do not place IBM confidential, company confidential, or personal information into any field.