{"id":11446,"date":"2011-07-29T18:51:00","date_gmt":"2011-07-29T18:51:00","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=11446"},"modified":"2011-07-29T18:51:00","modified_gmt":"2011-07-29T18:51:00","slug":"vmm-2012-distributed-key-management-dkm","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=11446","title":{"rendered":"VMM 2012 Distributed Key Management (DKM)"},"content":{"rendered":"<p>Virtual Machine Manager 2012 (VMM\/SCVMM) 2012 adds something that was lacking in VMM 2007\/2008\/20008 R2: clustered VMM servers.&#160; VMM 2012 <em>is<\/em> the gateway to the private cloud and you want that gateway to be fault tolerant at the hardware, OS, and service level.&#160; If you want to have a clustered VMM server then you will need to get to grips with some new concepts.<\/p>\n<p>The VMM database contains a lot of information.&#160; Some of that information can be sensitive, such as product keys or administrator passwords.&#160; You don\u2019t want just anyone getting a copy of that database (from offsite stored backup tapes, for example [which should be encrypted anyway]) and figuring out a way into gaining administrative rights to your network.&#160; For this reason, VMM uses encryption to protect the contents of this database.&#160; <\/p>\n<p>By default the decryption keys for accessing the encrypted data are stored on the VMM server.&#160; Now imagine you have set up a clustered VMM server and those keys are stored locally, as seen below.<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image19.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image_thumb19.png\" width=\"304\" height=\"330\" \/><\/a><\/p>\n<p>The first node with the local keys would encrypt the SQL data and access it with no issue at all.&#160; But what would happen after a failover of the VMM service from Node 1 to Node 2?&#160; The decryption keys are unavailable, on Node 1, and Node 2 has no way to read the encrypted data in clear text.&#160; There goes the uptime of your cloud!<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image20.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image_thumb20.png\" width=\"304\" height=\"330\" \/><\/a><\/p>\n<p>That\u2019s why we have a new concept called Distributed Key Management (DKM) in VMM 2012.&#160; Instead of storing the decryption keys on the server, they\u2019re stored in a specially created container in Active Directory.&#160; This means that the decryption keys can be accessed by both of the VMM cluster nodes, and either node can read the encrypted data in clear text.<\/p>\n<p>You can configure the option to enable DKM when you install the first member of the VMM cluster.&#160; You can optionally do this even if you\u2019re setting up a non-clustered VMM server.&#160; It\u2019ll mean the keys are safe in AD, and it gives you the flexibility to easily set up a cluster without too much mucking around.<\/p>\n<p>When you enable the option to use DKM, you have two choices:<\/p>\n<ul>\n<li>Installing as a Domain Administrator: You can enter the LDAP path (e.g. <em>CN = VMMDKM, CN = System, DN = demo, DN = local<\/em>) and the installer will use your rights to create the VMM container inside of the default System container.<\/li>\n<li>Not Installing as a Domain Administrator: You can get a domain admin to create the container for you, ensuring that your new user account will have Read, Write, and Create all child objects permissions.&#160; You can enter the LDAP path (as above) that is provided by the domain administrator.<\/li>\n<\/ul>\n<p>I like SystemVMMDKM for two reasons:<\/p>\n<ol>\n<li>ConfigMgr uses SystemSystemsManagement for its advanced client objects<\/li>\n<li>VMMDKM is quite descriptive.&#160; <\/li>\n<\/ol>\n<p>Now Node 1 of the VMM server cluster will use the DKM\/AD-stored decryption keys and access the secured data in the SQL Server instead of storing them locally.<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image21.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image_thumb21.png\" width=\"304\" height=\"549\" \/><\/a><\/p>\n<p>After a failover, Node 2 can also read those DKM\/AD-stored decryption keys to access the encrypted data successfully:<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image22.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/image_thumb22.png\" width=\"304\" height=\"549\" \/><\/a><\/p>\n<p>Decryption keys; I bet your security officer is concerned about that!&#160; I haven\u2019t mentioned the protection of these keys yet.&#160; Note how we didn\u2019t do anything to lock down that container?&#160; Normally, Authenticated Users will have read permissions.&#160; We sure don\u2019t want them to read those decryption keys!&#160; Don\u2019t worry, the VMM group has you covered.<\/p>\n<p>In the new container, you will find an object called DC Manager &lt;unique GUID&gt;.&#160; This is a container that DKM has created and contains the protected keys for the VMM server\/cluster you just set up.<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/clip_image002.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"clip_image002\" border=\"0\" alt=\"clip_image002\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/clip_image002_thumb.jpg\" width=\"504\" height=\"335\" \/><\/a><\/p>\n<p>It is protected using traditional AD permissions.&#160; VMM is granted rights based on what account is running VMM.&#160; I prefer to install VMM using a domain user account, e.g. demoVMMSvc.&#160; That account was granted full control over the container object and all descendent (contained) objects:<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/clip_image001.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px\" title=\"clip_image001\" border=\"0\" alt=\"clip_image001\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2011\/07\/clip_image001_thumb.png\" width=\"304\" height=\"337\" \/><\/a><\/p>\n<p>Note that Authenticated Users is not present.&#160; In fact what you will find is:<\/p>\n<ul>\n<li>Self: Inherited with apparently no rights<\/li>\n<li>System: Full Control on the container object only<\/li>\n<li>Enterprise Domain Controllers: Read tokenGroups (Descendent User Objects), Read tokenGroups (Descendent Group Objects), Read tokenGroups (Descendent Computer Objects)<\/li>\n<li>Enterprise Admins: Full Control on this and descendent objects<\/li>\n<li>Domain Admins: Full Control on this and descendent objects<\/li>\n<li>Administrators: It\u2019s long but basically it\u2019s not Full Control and no delete rights on this and descendent objects<\/li>\n<li>Administrator: Full Control on this and descendent objects<\/li>\n<\/ul>\n<p>In other words, VMM 2012 DKM is a pretty sure way to:<\/p>\n<ul>\n<li>Enable a SQL database to securely store sensitive data for a highly available VMM cluster running across multiple servers<\/li>\n<li>Allow those nodes of a highly available VMM cluster to share a single set of decryption keys to access the encrypted data in the SQL database<\/li>\n<\/ul>\n<p>Now you have some very special data in your AD \u2013 like you didn\u2019t already!&#160; But if you\u2019re \u201cjust\u201d a virtualisation administrator\/engineer or a consultant, you better make sure that someone is backing up AD.&#160; Lose your AD (those DKM keys), and you lose that sensitive data in the SQL database.&#160; While you\u2019re verifying the existence of a working AD backup (System State Backup of a few DCs, maybe), make sure that the backup is secure in terms of access rights to data and encryption.&#160; You\u2019ve got sensitive encryption keys in there after all.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6ecb9c7e-002a-4f22-b5fd-da4179a8fe27\" class=\"wlWriterEditableSmartContent\">Technorati Tags: <a href=\"http:\/\/technorati.com\/tags\/VMM\" rel=\"tag\">VMM<\/a>,<a href=\"http:\/\/technorati.com\/tags\/System+Center\" rel=\"tag\">System Center<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Failover+Clustering\" rel=\"tag\">Failover Clustering<\/a>,<a href=\"http:\/\/technorati.com\/tags\/Security\" rel=\"tag\">Security<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Virtual Machine Manager 2012 (VMM\/SCVMM) 2012 adds something that was lacking in VMM 2007\/2008\/20008 R2: clustered VMM servers.&#160; VMM 2012 is the gateway to the private cloud and you want that gateway to be fault tolerant at the hardware, OS, and service level.&#160; If you want to have a clustered VMM server then you will &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=11446\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;VMM 2012 Distributed Key Management (DKM)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[20],"tags":[63,190,193,196],"class_list":["post-11446","post","type-post","status-publish","format-standard","hentry","category-hyper-v","tag-failover-clustering","tag-security","tag-system-center","tag-vmm"],"aioseo_notices":[],"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/11446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11446"}],"version-history":[{"count":0,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/11446\/revisions"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}