From c0d176054173e79b10b42889d396bccadcc1072c Mon Sep 17 00:00:00 2001 From: Priti Desai Date: Thu, 19 Feb 2015 14:02:47 -0800 Subject: [PATCH] Enhancement - Additional ways to configure SSL Guide today has decent coverage on secure communication, but Nathan K. recently (not that recently) published a blog post on various secure deployment models. Adding discussion on various deployment models from his blog into the guide. Change-Id: I207c58890a8cf9b3fb377c6d167037b6aae3d563 Closes-Bug: #1334009 Co-Authored-By: nkinder --- security-guide/ch_secure_communication.xml | 1 + ...section_secure-reference-architectures.xml | 203 ++++++ security-guide/static/secure-arch-ref-1.png | Bin 0 -> 26177 bytes security-guide/static/secure-arch-ref-1.svg | 495 ++++++++++++++ security-guide/static/secure-arch-ref-2.png | Bin 0 -> 22466 bytes security-guide/static/secure-arch-ref-2.svg | 381 +++++++++++ security-guide/static/secure-arch-ref-3.png | Bin 0 -> 33682 bytes security-guide/static/secure-arch-ref-3.svg | 543 +++++++++++++++ security-guide/static/secure-arch-ref-4.png | Bin 0 -> 32605 bytes security-guide/static/secure-arch-ref-4.svg | 638 ++++++++++++++++++ 10 files changed, 2261 insertions(+) create mode 100644 security-guide/section_secure-reference-architectures.xml create mode 100644 security-guide/static/secure-arch-ref-1.png create mode 100644 security-guide/static/secure-arch-ref-1.svg create mode 100644 security-guide/static/secure-arch-ref-2.png create mode 100644 security-guide/static/secure-arch-ref-2.svg create mode 100644 security-guide/static/secure-arch-ref-3.png create mode 100644 security-guide/static/secure-arch-ref-3.svg create mode 100644 security-guide/static/secure-arch-ref-4.png create mode 100644 security-guide/static/secure-arch-ref-4.svg diff --git a/security-guide/ch_secure_communication.xml b/security-guide/ch_secure_communication.xml index 69b7ea2c..6f548692 100644 --- a/security-guide/ch_secure_communication.xml +++ b/security-guide/ch_secure_communication.xml @@ -8,6 +8,7 @@ + diff --git a/security-guide/section_secure-reference-architectures.xml b/security-guide/section_secure-reference-architectures.xml new file mode 100644 index 00000000..ff315a1f --- /dev/null +++ b/security-guide/section_secure-reference-architectures.xml @@ -0,0 +1,203 @@ + +
+ + Secure reference architectures + We recommend using SSL/TLS on both public networks and + management networks in + . + However, if actually deploying SSL/TLS everywhere is too + difficult, we recommend evaluating your OpenStack SSL/TLS needs and + following one of the architectures discussed here. + The first thing one should do when evaluating their OpenStack + SSL/TLS needs is to identify the threats. You can divide these + threats into external and internal attacker categories, but the + lines tend to get blurred since certain components of OpenStack + operate on both the public and management networks. + For publicly facing services, the threats are pretty + straightforward. Users will be authenticating against horizon and + keystone with their username and password. Users will also be + accessing the API endpoints for other services using their + keystone tokens. If this network traffic is unencrypted, passwords + and tokens can be intercepted by an attacker using a + man-in-the-middle attack. The attacker can then use these valid + credentials to perform malicious operations. All real deployments + should be using SSL/TLS to protect publicly facing services. + For services that are deployed on management networks, the + threats aren't so clear due to the bridging of security domains with + network security. There is always the chance that an administrator + with access to the management network decides to do something + malicious. SSL/TLS isn't going to help in this situation if the + attacker is allowed to access the private key. Not everyone on the + management network would be allowed to access the private key of + course, so there is still value in using SSL/TLS to protect yourself + from internal attackers. Even if everyone that is allowed to access + your management network is 100% trusted, there is still a threat + that an unauthorized user gains access to your internal network by + exploiting a misconfiguration or software vulnerability. One must + keep in mind that you have users running their own code on instances + in the OpenStack Compute nodes, which are deployed on the management + network. If a vulnerability allows them to break out of the + hypervisor, they will have access to your management network. Using + SSL/TLS on the management network can minimize the damage that an + attacker can cause. +
+ SSL/TLS proxy in front + It is generally accepted that it is best to encrypt + sensitive data as early as possible and decrypt it as late as + possible. Despite this best practice, it seems that it's common to + use a SSL/TLS proxy in front of the OpenStack services and use + clear communication afterwards as shown below: + + + + + + + + + + Some of the concerns with the use of SSL/TLS proxies as + pictured above: + + + Native SSL/TLS in OpenStack services does not perform/scale + as well as SSL proxies (particularly for Python + implementations like Eventlet). + + + + Native SSL/TLS in OpenStack services not as well scrutinized/ + audited as more proven solutions. + + + + Native SSL/TLS configuration is difficult (not well + documented, tested, or consistent across services). + + + + Privilege separation (OpenStack service processes should not + have direct access to private keys used for SSL/TLS). + + + + Traffic inspection needs for load balancing. + + + + All of the above are valid concerns, but none of them + prevent SSL/TLS from being used on the management network. Let's + consider the next deployment model. +
+
+ SSL/TLS on same physical hosts as API endpoints + + + + + + + + + + This is very similar to the + "SSL/TLS in front model" + but the SSL/TLS proxy is on the same physical system as + the API endpoint. The API endpoint would be configured to only + listen on the local network interface. All remote communication + with the API endpoint would go through the SSL/TLS proxy. With + this deployment model, we address a number of the bullet points in + "SSL/TLS in front model" + . A proven SSL implementation that performs well would be + used. The same SSL proxy software would be used for all services, + so SSL configuration for the API endpoints would be consistent. + The OpenStack service processes would not have direct access to + the private keys used for SSL/TLS, as you would run the SSL + proxies as a different user and restrict access using permissions + (and additionally mandatory access controls using something like + SELinux). We would ideally have the API endpoints listen on a Unix + socket such that we could restrict access to it using permissions + and mandatory access controls as well. Unfortunately, this does not + seem to work currently in Eventlet from our testing. It is a good + future development goal. +
+
+ SSL/TLS over load balancer + What about high availability or load balanced deployments + that need to inspect traffic? The previous deployment model + (SSL/TLS on same physical hosts as API endpoints) would not + allow for deep packet inspection since the traffic is encrypted. + If the traffic only needs to be inspected for basic routing + purposes, it might not be necessary for the load balancer to have + access to the unencrypted traffic. HAProxy has the ability to + extract the SSL/TLS session ID during the handshake, which can + then be used to achieve session affinity + (configuration details here). + HAProxy can also use the + TLS Server Name Indication (SNI) extension to determine where + traffic should be routed to + (configuration details here). These features likely cover + some of the most common load balancer needs. HAProxy would be able + to just pass the HTTPS traffic straight through to the API + endpoint systems in this case: + + + + + + + + + +
+
+ Cryptographic seperation of external and internal environments + What if you want cryptographic separation of your external and + internal environments? A public cloud provider would likely want + their public facing services (or proxies) to use certificates that + are issued by a CA that chains up to a trusted Root CA that is + distributed in popular web browser software for SSL/TLS. For the + internal services, one might want to instead use their own PKI to + issue certificates for SSL/TLS. This cryptographic separation can be + accomplished by terminating SSL at the network boundary, then + re-encrypting using the internally issued certificates. The traffic + will be unencrypted for a brief period on the public facing SSL/TLS + proxy, but it will never be transmitted over the network in the + clear. The same re-encryption approach that is used to achieve + cryptographic separation can also be used if deep packet inspection + is really needed on a load balancer. Here is what this deployment + model would look like: + + + + + + + + + + As with most things, there are trade-offs. The main + trade-off is going to be between security and performance. + Encryption has a cost, but so does being hacked. The security and + performance requirements are going to be different for every + deployment, so how SSL/TLS is used will ultimately be an + individual decision. +
+
diff --git a/security-guide/static/secure-arch-ref-1.png b/security-guide/static/secure-arch-ref-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9304bb0316527204533ebfcc3bfdfe71b3d89a14 GIT binary patch literal 26177 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 literal 0 HcmV?d00001 diff --git a/security-guide/static/secure-arch-ref-1.svg b/security-guide/static/secure-arch-ref-1.svg new file mode 100644 index 00000000..e70bf005 --- /dev/null +++ b/security-guide/static/secure-arch-ref-1.svg @@ -0,0 +1,495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SSL/TLSProxy + + + + + + + + + Proxy System + + + + + + + + + HTTPS + + + + + + + + + + + + APIEndpoint + + Service System + + + + + HTTP + + + + + diff --git a/security-guide/static/secure-arch-ref-2.png b/security-guide/static/secure-arch-ref-2.png new file mode 100644 index 0000000000000000000000000000000000000000..05b27ebbe0bfa5c8d9c74ffaec30dc96979be5fb GIT binary patch literal 22466 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 RN8ALXX(Dt~E0rx@{SR)MwKD(! literal 0 HcmV?d00001 diff --git a/security-guide/static/secure-arch-ref-2.svg b/security-guide/static/secure-arch-ref-2.svg new file mode 100644 index 00000000..77c51443 --- /dev/null +++ b/security-guide/static/secure-arch-ref-2.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + HTTPS + + + + + + + + + + SSL/TLSProxy + + + + + + + + + + + APIEndpoint + + + Service System + + + + + + + + + + + + + + HTTPS + + + + + diff --git a/security-guide/static/secure-arch-ref-3.png b/security-guide/static/secure-arch-ref-3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea661e06c582c31588a0f35440e6fbf3def4c35e GIT binary patch literal 33682 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 rw?)86DMb4J{{jF19sD2W!58!r^ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HAProxy(TCP Passthrough) + + Load Balancer System + + + + + + + + + SSL/TLSProxy + + + + + + + + + + + APIEndpoint + + + Service System + + + + + + + + + + + + + + HTTPS + + + + + + + + + + HTTPS + + + + + diff --git a/security-guide/static/secure-arch-ref-4.png b/security-guide/static/secure-arch-ref-4.png new file mode 100644 index 0000000000000000000000000000000000000000..481416c9a7b9b149e768c661a99265fc6a42bdfc GIT binary patch literal 32605 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + HTTPS + + + + + + + + + + + SSL/TLSProxy + + + + + + + + + + + SSL/TLSClient + + + + HAProxy + + + Load Balancer System + + + + + + + + + SSL/TLSProxy + + + + + + + + + + + APIEndpoint + + + Service System + + + + + + + + + + + + + + HTTPS + + + + + + + + + + HTTPS + + + + +