Control plane and data plane security controls
Harden your deployment across two domains: the Red Hat OpenShift Container Platform (RHOCP) cluster that hosts the control plane, and the RHEL-based data plane nodes that host compute and optional storage workloads.
Access control plane services Copy linkLink copied!
Control plane services run as pods in the openstack namespace on Red Hat OpenShift Container Platform (RHOCP). Interact with control plane services with the oc CLI or the RHOCP web console as a user with cluster-admin privileges.
Procedure Copy linkLink copied!
Access the data plane Copy linkLink copied!
Data plane nodes such as Compute, Networker, optional storage are RHEL 9 hosts. The OpenStack Operator manages them with Ansible over SSH, using a key pair stored in a Kubernetes Secret CR. Direct root SSH to these nodes is disabled unless you configure it in the OpenStackDataPlaneNodeSet CR.
Procedure Copy linkLink copied!
Control plane network access Copy linkLink copied!
The control plane runs inside the Red Hat OpenShift Container Platform (RHOCP) cluster. Network access to control plane service pods is governed by Kubernetes NetworkPolicy objects, RHOCP Routes, and MetalLB LoadBalancer configurations.
- Applying NetworkPolicy to restrict control plane traffic
-
By default, pods in the
openstacknamespace can communicate with each other. To enforce least-privilege, createNetworkPolicyresources that restrict ingress to only the required ports and source namespaces. The following example shows how to restrict ingress to keystone API pods:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: restrict-keystone-ingress namespace: openstack spec: podSelector: matchLabels: service: keystone policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: openstack ports: - protocol: TCP port: 5000Note The OVN-Kubernetes CNI supportsNetworkPolicyenforcement. Verify your CNI before relying onNetworkPolicyfor security boundaries. - Restricting external access to OpenStack APIs
-
Public OpenStack API endpoints are exposed through RHOCP Routes that are backed by the HAProxy-based RHOCP Ingress Controller, or MetalLB LoadBalancer services. Complete the following steps to restrict which external IPs can reach these endpoints:
- For RHOCP Routes, configure the Ingress Controller with IP allowlists or place an external firewall or load balancer in front of the RHOCP cluster.
- For MetalLB, use
spec.loadBalancerSourceRangeson the Service object to restrict source CIDRs. - For internal APIs, use the
internalapinetwork withMultusorNetworkAttachmentDefinitions, which keeps traffic off the public network entirely.
SNMP protocol strings Copy linkLink copied!
Simple network management protocol (SNMP) is relevant only to the RHEL hosts on the data plane nodes. The control plane pods do not run SNMP daemons.
If you use SNMP monitoring on your data plane nodes, configure the SNMP daemon through edpm-ansible Ansible variables or a custom OpenStackDataPlaneService CR that deploys a ConfigMap with your snmpd.conf overrides.
Set the following SNMP access control settings as Ansible variables or deploy a custom snmpd.conf through a ConfigMap:
ro_communityis an IPv4 read-only community string. Change from the default value ofpublic.ro_community6is an IPv6 read-only community string. Change from the default value ofpublic.ro_networkis network permitted to query the daemon. The default is 127.0.0.1.ro_network6is an IPv6 network permitted to query the daemon. The default is ::1/128.
The following example shows custom SNMP configured with ConfigMap and DataPlaneService:
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-snmpd-config
namespace: openstack
data:
snmpd.conf: |
com2sec notConfigUser default mysecurestring
com2sec6 notConfigUser default myv6securestring
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.1
access notConfigGroup "" any noauth exact systemview none none
Reference this ConfigMap in a custom OpenStackDataPlaneService CR that deploys it to the data plane nodes.
public on production data plane nodes. Rotate SNMP strings on the same schedule as other service credentials.Security groups and OVN Copy linkLink copied!
Red Hat OpenStack Services on OpenShift (RHOSO) 18.0 uses ML2/OVN as its networking mechanism driver. The ML2 and OVS driver has been completely removed. Security groups are implemented natively with OVN ACLs that correspond with OpenFlow rules in the OVS pipeline on each Compute node.
RHOSO 18.0 has some important differences from Red Hat OpenStack Platform (RHOSP) 17.1:
- There is no
NeutronOVSFirewallDriverparameter in RHOSO. OVN handles security group enforcement natively through ACLs. - Security groups are stateful by default. ML2/OVN also supports stateless security groups, which bypass connection tracking and can provide significant performance gains in high-throughput environments.
- Multicast traffic handling remains consistent with OVS-based behavior. OVN uses the
NORMALaction and forwards multicast traffic to all ports as specified by RFC 4541, because security groups do not apply to all port types, such as router ports. - Stateless security groups require explicit return-traffic rules. If you create a rule allowing outbound TCP, you must also create a corresponding inbound rule for replies.
- Security group logging
- RHOSO 18.0 supports security group packet logging through the Networking service logging API. Logs are written to
/var/log/containers/openvswitch/ovn-controller.logon each Compute node. Ensure the logging service plugin is loaded in the Networking service configuration within theOpenStackControlPlaneCR. This provides an audit trail forACCEPTandDROPevents per security group, per port.
Additional RHOCP hardening Copy linkLink copied!
Because the control plane is hosted on Red Hat OpenShift Container Platform (RHOCP), several RHOCP hardening practices directly affect the security posture of your deployment.
- RBAC on the RHOCP cluster
- Limit cluster-admin access to a small number of administrators. Create RHOCP
RolesandRoleBindingsthat are scoped to theopenstackandopenstack-operatorsnamespaces for day-to-day operations. The OpenStack Operator CRDs can be managed by users withnamespace-scopedprivileges. - Pod security
- RHOCP enforces Pod Security Admission (PSA) by default. The OpenStack Operator pods run with the profiles set by the Operator itself. Do not relax PSA labels on the
openstacknamespace unless Red Hat guidance explicitly requires it. etcdencryption- All Kubernetes Secrets, including the
osp-secretcontaining OpenStack service credentials, are stored inetcd. Enableetcdencryption at rest on your RHOCP cluster to protect these credentials. - Image provenance
- RHOSO service container images are signed and delivered through the Red Hat container registry. Verify that your RHOCP cluster is configured to enforce image signature verification and that your
OpenStackVersionCR references only supported image versions. - TLS on the control plane
- The RHOSO OpenStack Operator integrates with the
cert-managerOperator to manage TLS certificates for OpenStack service endpoints. TLS is enabled by default for both internal and public endpoints. Thecert-managerOperator creates and rotates certificates automatically. If you use a custom CA, configure the issuer accordingly in thecert-managerconfiguration before deploying the control plane. - Observability and audit
- RHOSO 18.0 integrates natively with Prometheus and AlertManager from RHOCP Observability, and Loki and
ClusterLogForwarderfrom the Logging stack. Enable these components to collect metrics and logs from both the control plane pods and the data plane nodes. The Telemetry services ceilometer and prometheus are enabled by default. For security auditing, configure the RHOCP API audit log and forward RHOSO service logs to a centralized SIEM.
RHOSP 17.1 to RHOSO 18.0 security comparison Copy linkLink copied!
Review the security differences between Red Hat OpenStack Platform (RHOSP) 17.1 and Red Hat OpenStack Services on OpenShift (RHOSO) 18.0.
| RHOSP 17.1 mechanism | RHOSO 18.0 Replacement | Notes |
|---|---|---|
|
Heat |
Kubernetes |
No heat/TripleO stack. |
|
|
Update Kubernetes Secret CRs. Operators reconcile and restart pods. |
No |
|
|
|
No undercloud/overcloud model. |
|
|
OVN ACLs handle security groups natively. No driver parameter is needed. |
ML2/OVS removed entirely. |
|
|
|
No Puppet or Hiera on control plane. |