This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack-docs-admin.git


The following commit(s) were added to refs/heads/master by this push:
     new 388d55a  hosts: update docs around CA framework and security
388d55a is described below

commit 388d55a2b8321af9c1d885d568b3208810d4fe07
Author: Rohit Yadav <[email protected]>
AuthorDate: Wed Aug 30 12:51:06 2017 +0200

    hosts: update docs around CA framework and security
    
    Signed-off-by: Rohit Yadav <[email protected]>
---
 source/hosts.rst | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)

diff --git a/source/hosts.rst b/source/hosts.rst
index 68f2e94..7974067 100644
--- a/source/hosts.rst
+++ b/source/hosts.rst
@@ -636,3 +636,105 @@ power management actions such as on, off, reset, cycle, 
soft and status.
 
 If a host is in maintenance mode, Root admins are still allowed to perform
 power management actions but in the UI a warning is displayed.
+
+Security
+========
+
+Starting 4.11, CloudStack has an inbuilt certicate authority (CA) framework and
+a default 'root' CA provider which acts as a self-signed CA. The CA framework
+participates in certificate issuance, renewal, revocation, and propagation of
+certificates during setup of a host. This framework is primary used to
+secure communications between CloudStack management server(s), the
+KVM/LXC/SSVM/CPVM agent(s) and peer management server(s).
+
+Following are some global settings that control various aspects of this 
feature.
+
+.. cssclass:: table-striped table-bordered table-hover
+
+=======================================   
====================================================================
+Global setting                            Description
+=======================================   
====================================================================
+ca.framework.provider.plugin              The configured CA provider plugin
+ca.framework.cert.keysize                 The key size used for certificate 
generation
+ca.framework.cert.signature.algorithm     The certificate signature algorithm
+ca.framework.cert.validity.period         Certificate validity in days
+ca.framework.cert.automatic.renewal       Whether to auto-renew expiring 
certificate on hosts
+ca.framework.background.task.delay        The delay between each CA background 
task round in seconds
+ca.framework.cert.expiry.alert.period     The number of days to check and 
alert expiring certificates
+ca.plugin.root.private.key                (hidden/encrypted in database) 
Auto-generated CA private key
+ca.plugin.root.public.key                 (hidden/encrypted in database) CA 
public key
+ca.plugin.root.ca.certificate             (hidden/encrypted in database) CA 
certificate
+ca.plugin.root.issuer.dn                  The CA issue distinguished name used 
by the root CA provider
+ca.plugin.root.auth.strictness            Setting to enforce two-way SSL 
authentication and trust validation
+ca.plugin.root.allow.expired.cert         Setting to allow clients with 
expired certificates
+=======================================   
====================================================================
+
+A change in `ca.framework.background.task.delay` settings requires restarting 
of
+management server(s) as the thread pool and a background tasks are configured
+only when CloudStack management server(s) start.
+
+After upgrade to CloudStack 4.11+, the CA framework will by default use the
+`root` CA provider. This CA provider will auto-generate its private/public keys
+and CA certificate on first boot post-upgrade. For freshly installed
+environments, the `ca.plugin.root.auth.strictness` setting will be `true` to
+enforce two-way SSL authentication and trust validation between client and
+server components, however, it will be `false` on upgraded environments to
+be backward compatible with legacy behaviour of trusting all clients and
+servers, and one-way SSL authentication. Upgraded/existing environments can
+use the `provisionCertificate` API to renew/setup certificates for already
+connected agents/hosts, and once all the agents/hosts are secured they may
+enforce authentication and validation strictness by setting
+`ca.plugin.root.auth.strictness` to `true` and restarting the management
+server(s).
+
+Management Server Address Propagation
+-------------------------------------
+
+Historically, when multiple management servers are used a tcp-LB is used on
+port 8250 (default) of the management servers and the VIP/LB-IP is used as the
+`host` setting to be used by various CloudStack agents such as the KVM, CPVM,
+SSVM agents, who connect to the `host` on port 8250. However, starting
+CloudStack 4.11+ the `host` setting can accept comma separated list of
+management server IPs to which new CloudStack hosts/agents will get a shuffled
+list of the same to which they can cycle reconnections in a round-robin way.
+
+Securing Process
+----------------
+
+Agents while making connections/reconnections to management server will only
+validate server certificate and be able to present client certificate (issued 
to
+them) when `cloud.jks` is accessible to them. On older hosts that are setup
+prior to this feature the keystore won't be available, however, they can still
+connect to management server(s) if `ca.plugin.root.auth.strictness` is set to
+`false`. Management server(s) will check and setup their own `cloud.jks`
+keystore on startup, this keystore will be used for connecting to peer
+management server(s).
+
+When a new host is being setup, such as adding a KVM host or starting a 
systemvm
+host, the CA framework kicks in and uses ssh to execute `keystore-setup` to
+generate a new keystore file `cloud.jks.new`, save a random passphrase of the
+keystore in the agent's properties file and a CSR `cloud.csr` file. The CSR is
+then used to issue certificate for that agent/host and ssh is used to execute
+`keystore-cert-import` to import the issued certificate along with the CA
+certificate(s), the keystore is that renamed as `cloud.jks` replacing an
+previous keystore in-use. During this process, keys and certificates files are
+also stored in `cloud.key`, `cloud.crt`, `cloud.ca.crt` in the
+agent's configuration directory.
+
+When hosts are added out-of-band, for example a KVM host that is setup first
+outside of CloudStack and added to a cluster, the keystore file will not be
+available however the keystore and security could be setup by using keystore
+utility scripts manually. The `keystore-setup` can be ran first to generate a
+keystore and a CSR, then CloudStack CA can be used to issue certificate by
+providing the CSR to the `issueCertificate` API, and finally issued certificate
+and CA certificate(s) can be imported to the keystore using 
`keystore-cert-import`
+script.
+
+Following lists the usage of these scripts, when using these script use full
+paths, use the final keystore filename as `cloud.jks`, and the certificate/key
+content need to be encoded and provided such that newlines are replace with `^`
+and space are replaced with `~`:
+
+.. code:: bash
+   keystore-setup [properties filepath] [final keystore filepath] [keystore 
passphrase] [validity/days] [csr filepath]
+   keystore-cert-import [properties filepath] [final keystore file name/path] 
[mode: ssh|agent] [certificate file name/path] [certificate content] 
[ca-certificate file name/path] [ca-certificate content] [private key file 
name/path] [private key file name/path]

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to