Author: jfthomps
Date: Fri May 26 18:56:19 2017
New Revision: 1796326
URL: http://svn.apache.org/viewvc?rev=1796326&view=rev
Log:
VCL-1045 - Method of encrypting sensitive database entries
vcl.sql:
-updated addomain: set username and password to not allow NULL; added secretid
and key for secretid
-added cryptkey
-added cryptsecret
-updated vmprofile: added secretid and key for secretid
-added constraints for addomain
-added constraints for cryptsecret
-added constraint for vmprofile.secretid
update-vcl.sql:
-updated addomain: set username and password to not allow NULL; added secretid
and key for secretid
-added cryptkey
-added cryptsecret
-added call to AddColumnIfNotExists to add vmprofile.secretid
-added call to AddIndexIfNotExists to add key for vmprofile.secretid
-added constraints for addomain
-added constraints for cryptsecret
-added constraint for vmprofile.secretid
Modified:
vcl/trunk/mysql/update-vcl.sql
vcl/trunk/mysql/vcl.sql
Modified: vcl/trunk/mysql/update-vcl.sql
URL:
http://svn.apache.org/viewvc/vcl/trunk/mysql/update-vcl.sql?rev=1796326&r1=1796325&r2=1796326&view=diff
==============================================================================
--- vcl/trunk/mysql/update-vcl.sql (original)
+++ vcl/trunk/mysql/update-vcl.sql Fri May 26 18:56:19 2017
@@ -874,10 +874,12 @@ CREATE TABLE IF NOT EXISTS `addomain` (
`name` varchar(30) NOT NULL default '',
`domainDNSName` varchar(70) NOT NULL default '',
`dnsServers` varchar(512) default NULL,
- `username` varchar(64) default NULL,
- `password` varchar(256) default NULL,
+ `username` varchar(64) NOT NULL default '',
+ `password` varchar(256) NOT NULL default '',
+ `secretid` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `domainDNSName` (`domainDNSName`)
+ UNIQUE KEY `domainDNSName` (`domainDNSName`),
+ KEY `secretid` (`secretid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
@@ -967,6 +969,37 @@ CALL AddIndexIfNotExists('continuations'
-- --------------------------------------------------------
--
+-- Table structure for table `cryptkey`
+--
+
+CREATE TABLE IF NOT EXISTS `cryptkey` (
+ `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
+ `hostid` smallint(6) unsigned NOT NULL,
+ `hosttype` enum('managementnode','web') NOT NULL DEFAULT 'managementnode',
+ `pubkey` varchar(1000) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `hostid` (`hostid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `cryptsecret`
+--
+
+CREATE TABLE IF NOT EXISTS `cryptsecret` (
+ `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
+ `cryptkeyid` smallint(5) unsigned NOT NULL,
+ `secretid` smallint(5) unsigned NOT NULL,
+ `cryptsecret` varchar(1000) NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `cryptkeyid` (`cryptkeyid`,`secretid`),
+ KEY `secretid` (`secretid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- --------------------------------------------------------
+
+--
-- Table structure for table `image`
--
@@ -1546,6 +1579,7 @@ CALL AddColumnIfNotExists('vmprofile', '
CALL AddColumnIfNotExists('vmprofile', 'rsakey', "varchar(256) NULL default
NULL AFTER `rsapub`");
CALL AddColumnIfNotExists('vmprofile', 'encryptedpasswd', "text NULL default
NULL AFTER `rsakey`");
CALL AddColumnIfNotExists('vmprofile', 'folderpath', "varchar(256) default
NULL AFTER resourcepath");
+CALL AddColumnIfNotExists('vmprofile', 'secretid', "smallint(5) unsigned NULL
default NULL AFTER password");
CALL AddOrRenameColumn('vmprofile', 'vmware_mac_eth0_generated',
'eth0generated', "tinyint(1) unsigned NOT NULL default '0'");
CALL AddOrRenameColumn('vmprofile', 'vmware_mac_eth1_generated',
'eth1generated', "tinyint(1) unsigned NOT NULL default '0'");
@@ -1555,6 +1589,7 @@ CALL AlterVMDiskValues();
CALL AddUniqueIndex('vmprofile', 'profilename');
CALL AddIndexIfNotExists('vmprofile', 'repositoryimagetypeid');
CALL AddIndexIfNotExists('vmprofile', 'datastoreimagetypeid');
+CALL AddIndexIfNotExists('vmprofile', 'secretid');
-- --------------------------------------------------------
@@ -2056,6 +2091,16 @@ UPDATE vmprofile SET vmprofile.datastore
-- --------------------------------------------------------
--
+-- Constraints for table `addomain`
+--
+
+CALL DropExistingConstraints('addomain', 'secretid');
+
+CALL AddConstraintIfNotExists('addomain', 'secretid', 'cryptsecret',
'secretid', 'none', '');
+
+-- --------------------------------------------------------
+
+--
-- Constraints for table `blockComputers`
--
@@ -2227,6 +2272,14 @@ CALL AddConstraintIfNotExists('continuat
-- --------------------------------------------------------
--
+-- Constraints for table `cryptsecret`
+--
+
+CALL AddConstraintIfNotExists('cryptsecret', 'cryptkeyid', 'cryptkey', 'id',
'delete', 'CASCADE');
+
+-- --------------------------------------------------------
+
+--
-- Constraints for table `image`
--
@@ -2644,6 +2697,7 @@ CALL DropExistingConstraints('vmprofile'
CALL AddConstraintIfNotExists('vmprofile', 'imageid', 'image', 'id', 'none',
'');
CALL AddConstraintIfNotExists('vmprofile', 'repositoryimagetypeid',
'imagetype', 'id', 'update', 'CASCADE');
CALL AddConstraintIfNotExists('vmprofile', 'datastoreimagetypeid',
'imagetype', 'id', 'update', 'CASCADE');
+CALL AddConstraintIfNotExists('vmprofile', 'secretid', 'cryptsecret',
'secretid', 'none', '');
-- --------------------------------------------------------
Modified: vcl/trunk/mysql/vcl.sql
URL:
http://svn.apache.org/viewvc/vcl/trunk/mysql/vcl.sql?rev=1796326&r1=1796325&r2=1796326&view=diff
==============================================================================
--- vcl/trunk/mysql/vcl.sql (original)
+++ vcl/trunk/mysql/vcl.sql Fri May 26 18:56:19 2017
@@ -35,10 +35,12 @@ CREATE TABLE IF NOT EXISTS `addomain` (
`name` varchar(30) NOT NULL default '',
`domainDNSName` varchar(70) NOT NULL default '',
`dnsServers` varchar(512) default NULL,
- `username` varchar(64) default NULL,
- `password` varchar(256) default NULL,
+ `username` varchar(64) NOT NULL default '',
+ `password` varchar(256) NOT NULL default '',
+ `secretid` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `domainDNSName` (`domainDNSName`)
+ UNIQUE KEY `domainDNSName` (`domainDNSName`),
+ KEY `secretid` (`secretid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
@@ -414,6 +416,36 @@ CREATE TABLE IF NOT EXISTS `continuation
KEY `deletefromid` (`deletefromid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `cryptkey`
+--
+
+CREATE TABLE IF NOT EXISTS `cryptkey` (
+ `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
+ `hostid` smallint(6) unsigned NOT NULL,
+ `hosttype` enum('managementnode','web') NOT NULL DEFAULT 'managementnode',
+ `pubkey` varchar(1000) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `hostid` (`hostid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `cryptsecret`
+--
+
+CREATE TABLE IF NOT EXISTS `cryptsecret` (
+ `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
+ `cryptkeyid` smallint(5) unsigned NOT NULL,
+ `secretid` smallint(5) unsigned NOT NULL,
+ `cryptsecret` varchar(1000) NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `cryptkeyid` (`cryptkeyid`,`secretid`),
+ KEY `secretid` (`secretid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
@@ -1488,6 +1520,7 @@ CREATE TABLE IF NOT EXISTS `vmprofile` (
`vmdisk` enum('dedicated','shared') NOT NULL default 'dedicated',
`username` varchar(80) NULL default NULL,
`password` varchar(256) NULL default NULL,
+ `secretid` smallint(5) unsigned NULL default NULL,
`eth0generated` tinyint(1) unsigned NOT NULL default '0',
`eth1generated` tinyint(1) unsigned NOT NULL default '0',
`rsapub` text NULL default NULL,
@@ -1497,7 +1530,8 @@ CREATE TABLE IF NOT EXISTS `vmprofile` (
UNIQUE KEY `profilename` (`profilename`),
KEY `imageid` (`imageid`),
KEY `repositoryimagetypeid` (`repositoryimagetypeid`),
- KEY `datastoreimagetypeid` (`datastoreimagetypeid`)
+ KEY `datastoreimagetypeid` (`datastoreimagetypeid`),
+ KEY `secretid` (`secretid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
@@ -2272,6 +2306,11 @@ INSERT IGNORE INTO `vmtype` (`id`, `name
--
--
+-- Constraints for table `addomain`
+--
+ALTER TABLE `addomain` ADD CONSTRAINT FOREIGN KEY (`secretid`) REFERENCES
`cryptsecret` (`secretid`);
+
+--
-- Constraints for table `blockComputers`
--
ALTER TABLE `blockComputers` ADD CONSTRAINT FOREIGN KEY (`blockTimeid`)
REFERENCES `blockTimes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -2371,6 +2410,11 @@ ALTER TABLE `continuations` ADD CONSTRAI
ALTER TABLE `continuations` ADD CONSTRAINT FOREIGN KEY (`parentid`) REFERENCES
`continuations` (`id`) ON DELETE CASCADE;
--
+-- Constraints for table `cryptsecret`
+--
+ALTER TABLE `cryptsecret` ADD CONSTRAINT FOREIGN KEY (`cryptkeyid`) REFERENCES
`cryptkey` (`id`) ON DELETE CASCADE;
+
+--
-- Constraints for table `image`
--
ALTER TABLE `image` ADD CONSTRAINT FOREIGN KEY (`ownerid`) REFERENCES `user`
(`id`) ON UPDATE CASCADE;
@@ -2651,6 +2695,7 @@ ALTER TABLE `vmhost` ADD CONSTRAINT FORE
ALTER TABLE `vmprofile` ADD CONSTRAINT FOREIGN KEY (`imageid`) REFERENCES
`image` (`id`);
ALTER TABLE `vmprofile` ADD CONSTRAINT FOREIGN KEY (`repositoryimagetypeid`)
REFERENCES `imagetype` (`id`) ON UPDATE CASCADE;
ALTER TABLE `vmprofile` ADD CONSTRAINT FOREIGN KEY (`datastoreimagetypeid`)
REFERENCES `imagetype` (`id`) ON UPDATE CASCADE;
+ALTER TABLE `vmprofile` ADD CONSTRAINT FOREIGN KEY (`secretid`) REFERENCES
`cryptsecret` (`secretid`);
--
-- Constraints for table `winKMS`