Implement X.509 auth for MySQL and Ironic
Change-Id: Iad34da8ca26e53876fe32001fceedd42b26161ca
Related-PROD: PROD-22747
diff --git a/galera/server/database/ssl/ironic.yaml b/galera/server/database/ssl/ironic.yaml
new file mode 100644
index 0000000..eeb9dbb
--- /dev/null
+++ b/galera/server/database/ssl/ironic.yaml
@@ -0,0 +1,4 @@
+parameters:
+ _param:
+ mysql_ironic_ssl_option:
+ - SSL: True
\ No newline at end of file
diff --git a/galera/server/database/x509/ironic.yml b/galera/server/database/x509/ironic.yml
new file mode 100644
index 0000000..85082f5
--- /dev/null
+++ b/galera/server/database/x509/ironic.yml
@@ -0,0 +1,7 @@
+parameters:
+ _param:
+ mysql_ironic_client_ssl_x509_subject: '/C=cz/CN=mysql-ironic-client/L=Prague/O=Mirantis'
+ mysql_ironic_client_ssl_x509_issuer: '/C=cz/CN=Salt Master CA/L=Prague/O=Mirantis'
+ mysql_ironic_ssl_option:
+ - SUBJECT: ${_param:mysql_ironic_client_ssl_x509_subject}
+ - ISSUER: ${_param:mysql_ironic_client_ssl_x509_issuer}
\ No newline at end of file
diff --git a/ironic/api/cluster.yml b/ironic/api/cluster.yml
index b0bb69f..acf635e 100644
--- a/ironic/api/cluster.yml
+++ b/ironic/api/cluster.yml
@@ -1,6 +1,10 @@
classes:
+- system.salt.minion.cert.mysql.clients.openstack.ironic
- service.ironic.api.cluster
parameters:
+ _param:
+ openstack_mysql_x509_enabled: False
+ galera_ssl_enabled: False
linux:
system:
package:
@@ -14,3 +18,11 @@
role: ${_param:openstack_node_role}
bind:
address: ${_param:cluster_baremetal_local_address}
+ database:
+ x509:
+ enabled: ${_param:openstack_mysql_x509_enabled}
+ ca_file: ${_param:mysql_ironic_ssl_ca_file}
+ key_file: ${_param:mysql_ironic_client_ssl_key_file}
+ cert_file: ${_param:mysql_ironic_client_ssl_cert_file}
+ ssl:
+ enabled: ${_param:galera_ssl_enabled}
diff --git a/ironic/api/single.yml b/ironic/api/single.yml
index 51c3f9c..0d4ae09 100644
--- a/ironic/api/single.yml
+++ b/ironic/api/single.yml
@@ -1,6 +1,10 @@
classes:
+- system.salt.minion.cert.mysql.clients.openstack.ironic
- service.ironic.api.single
parameters:
+ _param:
+ openstack_mysql_x509_enabled: False
+ galera_ssl_enabled: False
linux:
system:
package:
@@ -12,3 +16,11 @@
role: ${_param:openstack_node_role}
bind:
address: ${_param:single_address}
+ database:
+ x509:
+ enabled: ${_param:openstack_mysql_x509_enabled}
+ ca_file: ${_param:mysql_ironic_ssl_ca_file}
+ key_file: ${_param:mysql_ironic_client_ssl_key_file}
+ cert_file: ${_param:mysql_ironic_client_ssl_cert_file}
+ ssl:
+ enabled: ${_param:galera_ssl_enabled}
diff --git a/ironic/conductor/cluster.yml b/ironic/conductor/cluster.yml
index 063719c..c97624b 100644
--- a/ironic/conductor/cluster.yml
+++ b/ironic/conductor/cluster.yml
@@ -1,6 +1,10 @@
classes:
+- system.salt.minion.cert.mysql.clients.openstack.ironic
- service.ironic.conductor.cluster
parameters:
+ _param:
+ openstack_mysql_x509_enabled: False
+ galera_ssl_enabled: False
linux:
system:
package:
@@ -10,3 +14,11 @@
ironic:
conductor:
api_url: 'http://${_param:cluster_baremetal_vip_address}:6385'
+ database:
+ x509:
+ enabled: ${_param:openstack_mysql_x509_enabled}
+ ca_file: ${_param:mysql_ironic_ssl_ca_file}
+ key_file: ${_param:mysql_ironic_client_ssl_key_file}
+ cert_file: ${_param:mysql_ironic_client_ssl_cert_file}
+ ssl:
+ enabled: ${_param:galera_ssl_enabled}
diff --git a/ironic/conductor/single.yml b/ironic/conductor/single.yml
index d827129..80215a5 100644
--- a/ironic/conductor/single.yml
+++ b/ironic/conductor/single.yml
@@ -1,6 +1,10 @@
classes:
+- system.salt.minion.cert.mysql.clients.openstack.ironic
- service.ironic.conductor.single
parameters:
+ _param:
+ openstack_mysql_x509_enabled: False
+ galera_ssl_enabled: False
linux:
system:
package:
@@ -11,3 +15,11 @@
conductor:
enabled: true
version: ${_param:ironic_version}
+ database:
+ x509:
+ enabled: ${_param:openstack_mysql_x509_enabled}
+ ca_file: ${_param:mysql_ironic_ssl_ca_file}
+ key_file: ${_param:mysql_ironic_client_ssl_key_file}
+ cert_file: ${_param:mysql_ironic_client_ssl_cert_file}
+ ssl:
+ enabled: ${_param:galera_ssl_enabled}
diff --git a/salt/minion/cert/mysql/clients/openstack/ironic.yml b/salt/minion/cert/mysql/clients/openstack/ironic.yml
new file mode 100644
index 0000000..fe4aa19
--- /dev/null
+++ b/salt/minion/cert/mysql/clients/openstack/ironic.yml
@@ -0,0 +1,27 @@
+parameters:
+ _param:
+ salt_minion_ca_host: cfg01.${_param:cluster_domain}
+ salt_minion_ca_authority: salt_master_ca
+ mysql_ironic_client_ssl_key_file: /etc/ironic/ssl/mysql/client-key.pem
+ mysql_ironic_client_ssl_cert_file: /etc/ironic/ssl/mysql/client-cert.pem
+ mysql_ironic_ssl_ca_file: /etc/ironic/ssl/mysql/ca-cert.pem
+ salt:
+ minion:
+ cert:
+ mysql-ironic-client:
+ host: ${_param:salt_minion_ca_host}
+ authority: ${_param:salt_minion_ca_authority}
+ common_name: mysql-ironic-client
+ signing_policy: cert_client
+ alternative_names: >
+ IP:${_param:cluster_local_address},
+ DNS:${_param:cluster_local_address},
+ DNS:${linux:system:name},
+ DNS:${linux:network:fqdn}
+ key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+ key_file: ${_param:mysql_ironic_client_ssl_key_file}
+ cert_file: ${_param:mysql_ironic_client_ssl_cert_file}
+ ca_file: ${_param:mysql_ironic_ssl_ca_file}
+ user: ironic
+ group: ironic
+ mode: 640