You should also add this to the wiki.

________________________________________
From: Kelven Yang [[email protected]]
Sent: Friday, April 20, 2012 5:58 PM
To: [email protected]
Cc: Development discussions for CloudStack
Subject: Security aspects of CloudStack console access

>From time to time, we received a number of emails from security experts who 
>want to raise concerns about accessing the guest console. We've listened and 
>started to address these security concerns in upcoming releases. I'd like to 
>throw a brief introduction in this area and would like to gather feedbacks 
>from CloudStack development community.

1. Design principal of CloudStack console access service

   a) Separate control path and data path
        CloudStack Management server manages control traffic, console service 
VMs manage data (access) traffic. Which means that as soon as CloudStack 
management server has helped setup the access session, it will go out of the 
picture. A access session will be solely conducted within a console service VM 
from then on.

   b) Console service VM is stateless
        Console service VM works in stateless mode, this is to allow an easy 
scale-out solution. CloudStack management server will automatically launch 
necessary service VMs based on current system load. A stateless service VM 
leads to the design of having management server to help negotiate, authenticate 
and setup the access session.

2. How it works
To start a console access session, management server first generates an access 
token, assigns a service VM instance, and then redirects client browser (in a 
new window) to initiate the session to the target service VM with the access 
token.

When service VM receives the access request, it relays the authentication 
request to management server presenting the token passed from client browser. 
At this phase, if management service is running as a CloudStack management 
server cluster, the request may be relayed to a different management server 
instance other than where the original token was generated on.

If the request can be authenticated successfully, an access session will be 
open in the service VM. After this point, user will be able to access the guest 
VM via a AJAX viewer sent from the service VM to client browser.

3. Security aspects
        a) Passing access token.
        We originally rely on management server secured web session to protect 
the access info, the access info appears in clear text in browser url. A lot of 
people have raised concerns of this. To address the concern, we now wrap the 
access information into an DES encrypted access token, DES encryption key is 
randomly generated at per CloudStack installation basis. The DES encryption key 
will also be passed to console service VM via our SSL-enabled agent/management 
server channel so that service VM would be able to continue performing security 
validation after management server has gone out of the picture.

Access token is also time-stamped by management server. Session authentication 
should happen within the time period, otherwise, access will be declined. If 
management service is running as a management server cluster, all management 
server instances have to be time-synced.

        b) Securely access to hypervisor VNC sessions
        We recently added support to use XenServer secure access API to secure 
the traffic between console service VM and XenServer host. For KVM/VMware, a 
random generated hypervisor password will be included inside the access token, 
console service VM uses the information to setup the security within the VNC 
protocol framework.

I hope I have done a good explanation work, if you do have further security 
concerns, please feel free to drop your feedback on this to the list.

Kelven

Reply via email to