blob: a13ff60fc95f1f341a93823affd289b8fcf6034d [file] [log] [blame]
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<section id="about-password-encryption">
<title>About Password and Key Encryption</title>
<para>&PRODUCT; stores several sensitive passwords and secret keys that are used to provide
security. These values are always automatically encrypted:</para>
<itemizedlist>
<listitem>
<para>Database secret key</para>
</listitem>
<listitem>
<para>Database password</para>
</listitem>
<listitem>
<para>SSH keys</para>
</listitem>
<listitem>
<para>Compute node root password</para>
</listitem>
<listitem>
<para> VPN password</para>
</listitem>
<listitem>
<para>User API secret key</para>
</listitem>
<listitem>
<para>VNC password</para>
</listitem>
</itemizedlist>
<para>&PRODUCT; uses the Java Simplified Encryption (JASYPT) library. The data values are
encrypted and decrypted using a database secret key, which is stored in one of &PRODUCT;’s
internal properties files along with the database password. The other encrypted values listed
above, such as SSH keys, are in the &PRODUCT; internal database.</para>
<para>Of course, the database secret key itself can not be stored in the open – it must be
encrypted. How then does &PRODUCT; read it? A second secret key must be provided from an
external source during Management Server startup. This key can be provided in one of two ways:
loaded from a file or provided by the &PRODUCT; administrator. The &PRODUCT; database has a
configuration setting that lets it know which of these methods will be used. If the encryption
type is set to "file," the key must be in a file in a known location. If the encryption type is
set to "web," the administrator runs the utility
com.cloud.utils.crypt.EncryptionSecretKeySender, which relays the key to the Management Server
over a known port.</para>
<para>The encryption type, database secret key, and Management Server secret key are set during
&PRODUCT; installation. They are all parameters to the &PRODUCT; database setup script
(cloudstack-setup-databases). The default values are file, password, and password. It is, of course,
highly recommended that you change these to more secure keys.</para>
</section>