index.html 81 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <!--
  3. | Generated by Apache Maven Doxia at 2025-07-22
  4. | Rendered using Apache Maven Stylus Skin 1.5
  5. -->
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>Hadoop KMS &#x2013; Hadoop Key Management Server (KMS) - Documentation Sets</title>
  9. <style type="text/css" media="all">
  10. @import url("./css/maven-base.css");
  11. @import url("./css/maven-theme.css");
  12. @import url("./css/site.css");
  13. </style>
  14. <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
  15. <meta name="Date-Revision-yyyymmdd" content="20250722" />
  16. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  17. </head>
  18. <body class="composite">
  19. <div id="banner">
  20. <a href="http://hadoop.apache.org/" id="bannerLeft">
  21. <img src="http://hadoop.apache.org/images/hadoop-logo.jpg" alt="" />
  22. </a>
  23. <a href="http://www.apache.org/" id="bannerRight">
  24. <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
  25. </a>
  26. <div class="clear">
  27. <hr/>
  28. </div>
  29. </div>
  30. <div id="breadcrumbs">
  31. <div class="xright"> <a href="http://wiki.apache.org/hadoop" class="externalLink">Wiki</a>
  32. |
  33. <a href="https://gitbox.apache.org/repos/asf/hadoop.git" class="externalLink">git</a>
  34. |
  35. <a href="http://hadoop.apache.org/" class="externalLink">Apache Hadoop</a>
  36. &nbsp;| Last Published: 2025-07-22
  37. &nbsp;| Version: 3.5.0-SNAPSHOT
  38. </div>
  39. <div class="clear">
  40. <hr/>
  41. </div>
  42. </div>
  43. <div id="leftColumn">
  44. <div id="navcolumn">
  45. <h5>General</h5>
  46. <ul>
  47. <li class="none">
  48. <a href="../index.html">Overview</a>
  49. </li>
  50. <li class="none">
  51. <a href="../hadoop-project-dist/hadoop-common/SingleCluster.html">Single Node Setup</a>
  52. </li>
  53. <li class="none">
  54. <a href="../hadoop-project-dist/hadoop-common/ClusterSetup.html">Cluster Setup</a>
  55. </li>
  56. <li class="none">
  57. <a href="../hadoop-project-dist/hadoop-common/CommandsManual.html">Commands Reference</a>
  58. </li>
  59. <li class="none">
  60. <a href="../hadoop-project-dist/hadoop-common/FileSystemShell.html">FileSystem Shell</a>
  61. </li>
  62. <li class="none">
  63. <a href="../hadoop-project-dist/hadoop-common/Compatibility.html">Compatibility Specification</a>
  64. </li>
  65. <li class="none">
  66. <a href="../hadoop-project-dist/hadoop-common/DownstreamDev.html">Downstream Developer's Guide</a>
  67. </li>
  68. <li class="none">
  69. <a href="../hadoop-project-dist/hadoop-common/AdminCompatibilityGuide.html">Admin Compatibility Guide</a>
  70. </li>
  71. <li class="none">
  72. <a href="../hadoop-project-dist/hadoop-common/InterfaceClassification.html">Interface Classification</a>
  73. </li>
  74. <li class="none">
  75. <a href="../hadoop-project-dist/hadoop-common/filesystem/index.html">FileSystem Specification</a>
  76. </li>
  77. </ul>
  78. <h5>Common</h5>
  79. <ul>
  80. <li class="none">
  81. <a href="../hadoop-project-dist/hadoop-common/CLIMiniCluster.html">CLI Mini Cluster</a>
  82. </li>
  83. <li class="none">
  84. <a href="../hadoop-project-dist/hadoop-common/FairCallQueue.html">Fair Call Queue</a>
  85. </li>
  86. <li class="none">
  87. <a href="../hadoop-project-dist/hadoop-common/NativeLibraries.html">Native Libraries</a>
  88. </li>
  89. <li class="none">
  90. <a href="../hadoop-project-dist/hadoop-common/Superusers.html">Proxy User</a>
  91. </li>
  92. <li class="none">
  93. <a href="../hadoop-project-dist/hadoop-common/RackAwareness.html">Rack Awareness</a>
  94. </li>
  95. <li class="none">
  96. <a href="../hadoop-project-dist/hadoop-common/SecureMode.html">Secure Mode</a>
  97. </li>
  98. <li class="none">
  99. <a href="../hadoop-project-dist/hadoop-common/ServiceLevelAuth.html">Service Level Authorization</a>
  100. </li>
  101. <li class="none">
  102. <a href="../hadoop-project-dist/hadoop-common/HttpAuthentication.html">HTTP Authentication</a>
  103. </li>
  104. <li class="none">
  105. <a href="../hadoop-project-dist/hadoop-common/CredentialProviderAPI.html">Credential Provider API</a>
  106. </li>
  107. <li class="none">
  108. <a href="../hadoop-kms/index.html">Hadoop KMS</a>
  109. </li>
  110. <li class="none">
  111. <a href="../hadoop-project-dist/hadoop-common/Tracing.html">Tracing</a>
  112. </li>
  113. <li class="none">
  114. <a href="../hadoop-project-dist/hadoop-common/UnixShellGuide.html">Unix Shell Guide</a>
  115. </li>
  116. <li class="none">
  117. <a href="../hadoop-project-dist/hadoop-common/registry/index.html">Registry</a>
  118. </li>
  119. <li class="none">
  120. <a href="../hadoop-project-dist/hadoop-common/AsyncProfilerServlet.html">Async Profiler</a>
  121. </li>
  122. </ul>
  123. <h5>HDFS</h5>
  124. <ul>
  125. <li class="none">
  126. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsDesign.html">Architecture</a>
  127. </li>
  128. <li class="none">
  129. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html">User Guide</a>
  130. </li>
  131. <li class="none">
  132. <a href="../hadoop-project-dist/hadoop-hdfs/HDFSCommands.html">Commands Reference</a>
  133. </li>
  134. <li class="none">
  135. <a href="../hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html">NameNode HA With QJM</a>
  136. </li>
  137. <li class="none">
  138. <a href="../hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html">NameNode HA With NFS</a>
  139. </li>
  140. <li class="none">
  141. <a href="../hadoop-project-dist/hadoop-hdfs/ObserverNameNode.html">Observer NameNode</a>
  142. </li>
  143. <li class="none">
  144. <a href="../hadoop-project-dist/hadoop-hdfs/Federation.html">Federation</a>
  145. </li>
  146. <li class="none">
  147. <a href="../hadoop-project-dist/hadoop-hdfs/ViewFs.html">ViewFs</a>
  148. </li>
  149. <li class="none">
  150. <a href="../hadoop-project-dist/hadoop-hdfs/ViewFsOverloadScheme.html">ViewFsOverloadScheme</a>
  151. </li>
  152. <li class="none">
  153. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html">Snapshots</a>
  154. </li>
  155. <li class="none">
  156. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsEditsViewer.html">Edits Viewer</a>
  157. </li>
  158. <li class="none">
  159. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html">Image Viewer</a>
  160. </li>
  161. <li class="none">
  162. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html">Permissions and HDFS</a>
  163. </li>
  164. <li class="none">
  165. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsQuotaAdminGuide.html">Quotas and HDFS</a>
  166. </li>
  167. <li class="none">
  168. <a href="../hadoop-project-dist/hadoop-hdfs/LibHdfs.html">libhdfs (C API)</a>
  169. </li>
  170. <li class="none">
  171. <a href="../hadoop-project-dist/hadoop-hdfs/WebHDFS.html">WebHDFS (REST API)</a>
  172. </li>
  173. <li class="none">
  174. <a href="../hadoop-hdfs-httpfs/index.html">HttpFS</a>
  175. </li>
  176. <li class="none">
  177. <a href="../hadoop-project-dist/hadoop-hdfs/ShortCircuitLocalReads.html">Short Circuit Local Reads</a>
  178. </li>
  179. <li class="none">
  180. <a href="../hadoop-project-dist/hadoop-hdfs/CentralizedCacheManagement.html">Centralized Cache Management</a>
  181. </li>
  182. <li class="none">
  183. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsNfsGateway.html">NFS Gateway</a>
  184. </li>
  185. <li class="none">
  186. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html">Rolling Upgrade</a>
  187. </li>
  188. <li class="none">
  189. <a href="../hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html">Extended Attributes</a>
  190. </li>
  191. <li class="none">
  192. <a href="../hadoop-project-dist/hadoop-hdfs/TransparentEncryption.html">Transparent Encryption</a>
  193. </li>
  194. <li class="none">
  195. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsMultihoming.html">Multihoming</a>
  196. </li>
  197. <li class="none">
  198. <a href="../hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html">Storage Policies</a>
  199. </li>
  200. <li class="none">
  201. <a href="../hadoop-project-dist/hadoop-hdfs/MemoryStorage.html">Memory Storage Support</a>
  202. </li>
  203. <li class="none">
  204. <a href="../hadoop-project-dist/hadoop-hdfs/SLGUserGuide.html">Synthetic Load Generator</a>
  205. </li>
  206. <li class="none">
  207. <a href="../hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html">Erasure Coding</a>
  208. </li>
  209. <li class="none">
  210. <a href="../hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html">Disk Balancer</a>
  211. </li>
  212. <li class="none">
  213. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsUpgradeDomain.html">Upgrade Domain</a>
  214. </li>
  215. <li class="none">
  216. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsDataNodeAdminGuide.html">DataNode Admin</a>
  217. </li>
  218. <li class="none">
  219. <a href="../hadoop-project-dist/hadoop-hdfs-rbf/HDFSRouterFederation.html">Router Federation</a>
  220. </li>
  221. <li class="none">
  222. <a href="../hadoop-project-dist/hadoop-hdfs/HdfsProvidedStorage.html">Provided Storage</a>
  223. </li>
  224. </ul>
  225. <h5>MapReduce</h5>
  226. <ul>
  227. <li class="none">
  228. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html">Tutorial</a>
  229. </li>
  230. <li class="none">
  231. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapredCommands.html">Commands Reference</a>
  232. </li>
  233. <li class="none">
  234. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduce_Compatibility_Hadoop1_Hadoop2.html">Compatibility with 1.x</a>
  235. </li>
  236. <li class="none">
  237. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/EncryptedShuffle.html">Encrypted Shuffle</a>
  238. </li>
  239. <li class="none">
  240. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/PluggableShuffleAndPluggableSort.html">Pluggable Shuffle/Sort</a>
  241. </li>
  242. <li class="none">
  243. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/DistributedCacheDeploy.html">Distributed Cache Deploy</a>
  244. </li>
  245. <li class="none">
  246. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/SharedCacheSupport.html">Support for YARN Shared Cache</a>
  247. </li>
  248. </ul>
  249. <h5>MapReduce REST APIs</h5>
  250. <ul>
  251. <li class="none">
  252. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapredAppMasterRest.html">MR Application Master</a>
  253. </li>
  254. <li class="none">
  255. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-hs/HistoryServerRest.html">MR History Server</a>
  256. </li>
  257. </ul>
  258. <h5>YARN</h5>
  259. <ul>
  260. <li class="none">
  261. <a href="../hadoop-yarn/hadoop-yarn-site/YARN.html">Architecture</a>
  262. </li>
  263. <li class="none">
  264. <a href="../hadoop-yarn/hadoop-yarn-site/YarnCommands.html">Commands Reference</a>
  265. </li>
  266. <li class="none">
  267. <a href="../hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html">Capacity Scheduler</a>
  268. </li>
  269. <li class="none">
  270. <a href="../hadoop-yarn/hadoop-yarn-site/FairScheduler.html">Fair Scheduler</a>
  271. </li>
  272. <li class="none">
  273. <a href="../hadoop-yarn/hadoop-yarn-site/ResourceManagerRestart.html">ResourceManager Restart</a>
  274. </li>
  275. <li class="none">
  276. <a href="../hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html">ResourceManager HA</a>
  277. </li>
  278. <li class="none">
  279. <a href="../hadoop-yarn/hadoop-yarn-site/ResourceModel.html">Resource Model</a>
  280. </li>
  281. <li class="none">
  282. <a href="../hadoop-yarn/hadoop-yarn-site/NodeLabel.html">Node Labels</a>
  283. </li>
  284. <li class="none">
  285. <a href="../hadoop-yarn/hadoop-yarn-site/NodeAttributes.html">Node Attributes</a>
  286. </li>
  287. <li class="none">
  288. <a href="../hadoop-yarn/hadoop-yarn-site/WebApplicationProxy.html">Web Application Proxy</a>
  289. </li>
  290. <li class="none">
  291. <a href="../hadoop-yarn/hadoop-yarn-site/TimelineServer.html">Timeline Server</a>
  292. </li>
  293. <li class="none">
  294. <a href="../hadoop-yarn/hadoop-yarn-site/TimelineServiceV2.html">Timeline Service V.2</a>
  295. </li>
  296. <li class="none">
  297. <a href="../hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html">Writing YARN Applications</a>
  298. </li>
  299. <li class="none">
  300. <a href="../hadoop-yarn/hadoop-yarn-site/YarnApplicationSecurity.html">YARN Application Security</a>
  301. </li>
  302. <li class="none">
  303. <a href="../hadoop-yarn/hadoop-yarn-site/NodeManager.html">NodeManager</a>
  304. </li>
  305. <li class="none">
  306. <a href="../hadoop-yarn/hadoop-yarn-site/DockerContainers.html">Running Applications in Docker Containers</a>
  307. </li>
  308. <li class="none">
  309. <a href="../hadoop-yarn/hadoop-yarn-site/RuncContainers.html">Running Applications in runC Containers</a>
  310. </li>
  311. <li class="none">
  312. <a href="../hadoop-yarn/hadoop-yarn-site/NodeManagerCgroups.html">Using CGroups</a>
  313. </li>
  314. <li class="none">
  315. <a href="../hadoop-yarn/hadoop-yarn-site/SecureContainer.html">Secure Containers</a>
  316. </li>
  317. <li class="none">
  318. <a href="../hadoop-yarn/hadoop-yarn-site/ReservationSystem.html">Reservation System</a>
  319. </li>
  320. <li class="none">
  321. <a href="../hadoop-yarn/hadoop-yarn-site/GracefulDecommission.html">Graceful Decommission</a>
  322. </li>
  323. <li class="none">
  324. <a href="../hadoop-yarn/hadoop-yarn-site/OpportunisticContainers.html">Opportunistic Containers</a>
  325. </li>
  326. <li class="none">
  327. <a href="../hadoop-yarn/hadoop-yarn-site/Federation.html">YARN Federation</a>
  328. </li>
  329. <li class="none">
  330. <a href="../hadoop-yarn/hadoop-yarn-site/SharedCache.html">Shared Cache</a>
  331. </li>
  332. <li class="none">
  333. <a href="../hadoop-yarn/hadoop-yarn-site/UsingGpus.html">Using GPU</a>
  334. </li>
  335. <li class="none">
  336. <a href="../hadoop-yarn/hadoop-yarn-site/UsingFPGA.html">Using FPGA</a>
  337. </li>
  338. <li class="none">
  339. <a href="../hadoop-yarn/hadoop-yarn-site/PlacementConstraints.html">Placement Constraints</a>
  340. </li>
  341. <li class="none">
  342. <a href="../hadoop-yarn/hadoop-yarn-site/YarnUI2.html">YARN UI2</a>
  343. </li>
  344. </ul>
  345. <h5>YARN REST APIs</h5>
  346. <ul>
  347. <li class="none">
  348. <a href="../hadoop-yarn/hadoop-yarn-site/WebServicesIntro.html">Introduction</a>
  349. </li>
  350. <li class="none">
  351. <a href="../hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html">Resource Manager</a>
  352. </li>
  353. <li class="none">
  354. <a href="../hadoop-yarn/hadoop-yarn-site/NodeManagerRest.html">Node Manager</a>
  355. </li>
  356. <li class="none">
  357. <a href="../hadoop-yarn/hadoop-yarn-site/TimelineServer.html#Timeline_Server_REST_API_v1">Timeline Server</a>
  358. </li>
  359. <li class="none">
  360. <a href="../hadoop-yarn/hadoop-yarn-site/TimelineServiceV2.html#Timeline_Service_v.2_REST_API">Timeline Service V.2</a>
  361. </li>
  362. </ul>
  363. <h5>YARN Service</h5>
  364. <ul>
  365. <li class="none">
  366. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html">Overview</a>
  367. </li>
  368. <li class="none">
  369. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/QuickStart.html">QuickStart</a>
  370. </li>
  371. <li class="none">
  372. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/Concepts.html">Concepts</a>
  373. </li>
  374. <li class="none">
  375. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/YarnServiceAPI.html">Yarn Service API</a>
  376. </li>
  377. <li class="none">
  378. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/ServiceDiscovery.html">Service Discovery</a>
  379. </li>
  380. <li class="none">
  381. <a href="../hadoop-yarn/hadoop-yarn-site/yarn-service/SystemServices.html">System Services</a>
  382. </li>
  383. </ul>
  384. <h5>Hadoop Compatible File Systems</h5>
  385. <ul>
  386. <li class="none">
  387. <a href="../hadoop-aliyun/tools/hadoop-aliyun/index.html">Aliyun OSS</a>
  388. </li>
  389. <li class="none">
  390. <a href="../hadoop-aws/tools/hadoop-aws/index.html">Amazon S3</a>
  391. </li>
  392. <li class="none">
  393. <a href="../hadoop-azure/index.html">Azure Blob Storage</a>
  394. </li>
  395. <li class="none">
  396. <a href="../hadoop-azure-datalake/index.html">Azure Data Lake Storage</a>
  397. </li>
  398. <li class="none">
  399. <a href="../hadoop-cos/cloud-storage/index.html">Tencent COS</a>
  400. </li>
  401. <li class="none">
  402. <a href="../hadoop-huaweicloud/index.html">Huaweicloud OBS</a>
  403. </li>
  404. <li class="none">
  405. <a href="../hadoop-tos/cloud-storage/index.html">VolcanoEngine TOS</a>
  406. </li>
  407. </ul>
  408. <h5>Auth</h5>
  409. <ul>
  410. <li class="none">
  411. <a href="../hadoop-auth/index.html">Overview</a>
  412. </li>
  413. <li class="none">
  414. <a href="../hadoop-auth/Examples.html">Examples</a>
  415. </li>
  416. <li class="none">
  417. <a href="../hadoop-auth/Configuration.html">Configuration</a>
  418. </li>
  419. <li class="none">
  420. <a href="../hadoop-auth/BuildingIt.html">Building</a>
  421. </li>
  422. </ul>
  423. <h5>Tools</h5>
  424. <ul>
  425. <li class="none">
  426. <a href="../hadoop-streaming/HadoopStreaming.html">Hadoop Streaming</a>
  427. </li>
  428. <li class="none">
  429. <a href="../hadoop-archives/HadoopArchives.html">Hadoop Archives</a>
  430. </li>
  431. <li class="none">
  432. <a href="../hadoop-archive-logs/HadoopArchiveLogs.html">Hadoop Archive Logs</a>
  433. </li>
  434. <li class="none">
  435. <a href="../hadoop-distcp/DistCp.html">DistCp</a>
  436. </li>
  437. <li class="none">
  438. <a href="../hadoop-federation-balance/HDFSFederationBalance.html">HDFS Federation Balance</a>
  439. </li>
  440. <li class="none">
  441. <a href="../hadoop-gridmix/GridMix.html">GridMix</a>
  442. </li>
  443. <li class="none">
  444. <a href="../hadoop-rumen/Rumen.html">Rumen</a>
  445. </li>
  446. <li class="none">
  447. <a href="../hadoop-resourceestimator/ResourceEstimator.html">Resource Estimator Service</a>
  448. </li>
  449. <li class="none">
  450. <a href="../hadoop-sls/SchedulerLoadSimulator.html">Scheduler Load Simulator</a>
  451. </li>
  452. <li class="none">
  453. <a href="../hadoop-project-dist/hadoop-common/Benchmarking.html">Hadoop Benchmarking</a>
  454. </li>
  455. <li class="none">
  456. <a href="../hadoop-dynamometer/Dynamometer.html">Dynamometer</a>
  457. </li>
  458. </ul>
  459. <h5>Reference</h5>
  460. <ul>
  461. <li class="none">
  462. <a href="../hadoop-project-dist/hadoop-common/release/">Changelog and Release Notes</a>
  463. </li>
  464. <li class="none">
  465. <a href="../api/index.html">Java API docs</a>
  466. </li>
  467. <li class="none">
  468. <a href="../hadoop-project-dist/hadoop-common/UnixShellAPI.html">Unix Shell API</a>
  469. </li>
  470. <li class="none">
  471. <a href="../hadoop-project-dist/hadoop-common/Metrics.html">Metrics</a>
  472. </li>
  473. </ul>
  474. <h5>Configuration</h5>
  475. <ul>
  476. <li class="none">
  477. <a href="../hadoop-project-dist/hadoop-common/core-default.xml">core-default.xml</a>
  478. </li>
  479. <li class="none">
  480. <a href="../hadoop-project-dist/hadoop-hdfs/hdfs-default.xml">hdfs-default.xml</a>
  481. </li>
  482. <li class="none">
  483. <a href="../hadoop-project-dist/hadoop-hdfs-rbf/hdfs-rbf-default.xml">hdfs-rbf-default.xml</a>
  484. </li>
  485. <li class="none">
  486. <a href="../hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml">mapred-default.xml</a>
  487. </li>
  488. <li class="none">
  489. <a href="../hadoop-yarn/hadoop-yarn-common/yarn-default.xml">yarn-default.xml</a>
  490. </li>
  491. <li class="none">
  492. <a href="../hadoop-kms/kms-default.html">kms-default.xml</a>
  493. </li>
  494. <li class="none">
  495. <a href="../hadoop-hdfs-httpfs/httpfs-default.html">httpfs-default.xml</a>
  496. </li>
  497. <li class="none">
  498. <a href="../hadoop-project-dist/hadoop-common/DeprecatedProperties.html">Deprecated Properties</a>
  499. </li>
  500. </ul>
  501. <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
  502. <img alt="Built by Maven" src="./images/logos/maven-feather.png"/>
  503. </a>
  504. </div>
  505. </div>
  506. <div id="bodyColumn">
  507. <div id="contentBox">
  508. <!---
  509. Licensed under the Apache License, Version 2.0 (the "License");
  510. you may not use this file except in compliance with the License.
  511. You may obtain a copy of the License at
  512. http://www.apache.org/licenses/LICENSE-2.0
  513. Unless required by applicable law or agreed to in writing, software
  514. distributed under the License is distributed on an "AS IS" BASIS,
  515. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  516. See the License for the specific language governing permissions and
  517. limitations under the License. See accompanying LICENSE file.
  518. -->
  519. <h1>Hadoop Key Management Server (KMS) - Documentation Sets</h1>
  520. <ul>
  521. <li><a href="#KMS_Client_Configuration">KMS Client Configuration</a></li>
  522. <li><a href="#KMS">KMS</a>
  523. <ul>
  524. <li><a href="#Start.2FStop_the_KMS">Start/Stop the KMS</a></li>
  525. <li><a href="#KMS_Configuration">KMS Configuration</a></li>
  526. <li><a href="#KMS_HTTP_Configuration">KMS HTTP Configuration</a></li>
  527. <li><a href="#KMS_Cache">KMS Cache</a>
  528. <ul>
  529. <li><a href="#CachingKeyProvider">CachingKeyProvider</a></li>
  530. <li><a href="#KeyProvider">KeyProvider</a></li></ul></li>
  531. <li><a href="#KMS_Aggregated_Audit_logs">KMS Aggregated Audit logs</a></li>
  532. <li><a href="#KMS_Security_Configuration">KMS Security Configuration</a>
  533. <ul>
  534. <li><a href="#Enabling_Kerberos_HTTP_SPNEGO_Authentication">Enabling Kerberos HTTP SPNEGO Authentication</a></li>
  535. <li><a href="#KMS_Proxyuser_Configuration">KMS Proxyuser Configuration</a></li>
  536. <li><a href="#KMS_over_HTTPS_.28SSL.29">KMS over HTTPS (SSL)</a></li>
  537. <li><a href="#ACLs_.28Access_Control_Lists.29">ACLs (Access Control Lists)</a></li></ul></li>
  538. <li><a href="#KMS_Delegation_Token_Configuration">KMS Delegation Token Configuration</a></li>
  539. <li><a href="#High_Availability">High Availability</a>
  540. <ul>
  541. <li><a href="#Behind_a_Load-Balancer_or_VIP">Behind a Load-Balancer or VIP</a></li>
  542. <li><a href="#Using_LoadBalancingKMSClientProvider">Using LoadBalancingKMSClientProvider</a></li>
  543. <li><a href="#HTTP_Kerberos_Principals_Configuration">HTTP Kerberos Principals Configuration</a></li>
  544. <li><a href="#HTTP_Authentication_Signature">HTTP Authentication Signature</a></li>
  545. <li><a href="#Delegation_Tokens">Delegation Tokens</a></li></ul></li>
  546. <li><a href="#KMS_HTTP_REST_API">KMS HTTP REST API</a>
  547. <ul>
  548. <li><a href="#Create_a_Key">Create a Key</a></li>
  549. <li><a href="#Rollover_Key">Rollover Key</a></li>
  550. <li><a href="#Invalidate_Cache_of_a_Key">Invalidate Cache of a Key</a></li>
  551. <li><a href="#Delete_Key">Delete Key</a></li>
  552. <li><a href="#Get_Key_Metadata">Get Key Metadata</a></li>
  553. <li><a href="#Get_Current_Key">Get Current Key</a></li>
  554. <li><a href="#Generate_Encrypted_Key_for_Current_KeyVersion">Generate Encrypted Key for Current KeyVersion</a></li>
  555. <li><a href="#Decrypt_Encrypted_Key">Decrypt Encrypted Key</a></li>
  556. <li><a href="#Re-encrypt_Encrypted_Key_With_The_Latest_KeyVersion">Re-encrypt Encrypted Key With The Latest KeyVersion</a></li>
  557. <li><a href="#Batch_Re-encrypt_Encrypted_Keys_With_The_Latest_KeyVersion">Batch Re-encrypt Encrypted Keys With The Latest KeyVersion</a></li>
  558. <li><a href="#Get_Key_Version">Get Key Version</a></li>
  559. <li><a href="#Get_Key_Versions">Get Key Versions</a></li>
  560. <li><a href="#Get_Key_Names">Get Key Names</a></li>
  561. <li><a href="#Get_Keys_Metadata">Get Keys Metadata</a></li></ul></li>
  562. <li><a href="#Deprecated_Environment_Variables">Deprecated Environment Variables</a></li>
  563. <li><a href="#Default_HTTP_Services">Default HTTP Services</a></li></ul></li></ul>
  564. <p>Hadoop KMS is a cryptographic key management server based on Hadoop&#x2019;s <b>KeyProvider</b> API.</p>
  565. <p>It provides a client and a server components which communicate over HTTP using a REST API.</p>
  566. <p>The client is a KeyProvider implementation interacts with the KMS using the KMS HTTP REST API.</p>
  567. <p>KMS and its client have built-in security and they support HTTP SPNEGO Kerberos authentication and HTTPS secure transport.</p>
  568. <p>KMS is a Java Jetty web-application.</p><section>
  569. <h2><a name="KMS_Client_Configuration"></a>KMS Client Configuration</h2>
  570. <p>The KMS client <code>KeyProvider</code> uses the <b>kms</b> scheme, and the embedded URL must be the URL of the KMS. For example, for a KMS running on <code>http://localhost:9600/kms</code>, the KeyProvider URI is <code>kms://http@localhost:9600/kms</code>. And, for a KMS running on <code>https://localhost:9600/kms</code>, the KeyProvider URI is <code>kms://https@localhost:9600/kms</code></p>
  571. <p>The following is an example to configure HDFS NameNode as a KMS client in <code>core-site.xml</code>:</p>
  572. <div class="source">
  573. <div class="source">
  574. <pre>&lt;property&gt;
  575. &lt;name&gt;hadoop.security.key.provider.path&lt;/name&gt;
  576. &lt;value&gt;kms://http@localhost:9600/kms&lt;/value&gt;
  577. &lt;description&gt;
  578. The KeyProvider to use when interacting with encryption keys used
  579. when reading and writing to an encryption zone.
  580. &lt;/description&gt;
  581. &lt;/property&gt;
  582. </pre></div></div>
  583. </section><section>
  584. <h2><a name="KMS"></a>KMS</h2><section>
  585. <h3><a name="Start.2FStop_the_KMS"></a>Start/Stop the KMS</h3>
  586. <p>To start/stop KMS, use <code>hadoop --daemon start|stop kms</code>. For example:</p>
  587. <div class="source">
  588. <div class="source">
  589. <pre>hadoop-3.5.0-SNAPSHOT $ hadoop --daemon start kms
  590. </pre></div></div>
  591. <p>NOTE: The script <code>kms.sh</code> is deprecated. It is now just a wrapper of <code>hadoop kms</code>.</p></section><section>
  592. <h3><a name="KMS_Configuration"></a>KMS Configuration</h3>
  593. <p>Configure the KMS backing KeyProvider properties in the <code>etc/hadoop/kms-site.xml</code> configuration file:</p>
  594. <div class="source">
  595. <div class="source">
  596. <pre> &lt;property&gt;
  597. &lt;name&gt;hadoop.kms.key.provider.uri&lt;/name&gt;
  598. &lt;value&gt;jceks://file@/${user.home}/kms.keystore&lt;/value&gt;
  599. &lt;/property&gt;
  600. &lt;property&gt;
  601. &lt;name&gt;hadoop.security.keystore.java-keystore-provider.password-file&lt;/name&gt;
  602. &lt;value&gt;kms.keystore.password&lt;/value&gt;
  603. &lt;/property&gt;
  604. </pre></div></div>
  605. <p>The password file is looked up in the Hadoop&#x2019;s configuration directory via the classpath.</p>
  606. <p>NOTE: You need to restart the KMS for the configuration changes to take effect.</p>
  607. <p>NOTE: The KMS server can choose any <code>KeyProvider</code> implementation as the backing provider. The example here uses a JavaKeyStoreProvider, which should only be used for experimental purposes and never be used in production. For detailed usage and caveats of JavaKeyStoreProvider, please see <a href="../hadoop-project-dist/hadoop-common/CredentialProviderAPI.html#Keystore_Passwords">Keystore Passwords section of the Credential Provider API</a>.</p></section><section>
  608. <h3><a name="KMS_HTTP_Configuration"></a>KMS HTTP Configuration</h3>
  609. <p>KMS pre-configures the HTTP port to 9600.</p>
  610. <p>KMS supports the following HTTP <a href="./kms-default.html">configuration properties</a> in <code>etc/hadoop/kms-site.xml</code>.</p>
  611. <p>NOTE: You need to restart the KMS for the configuration changes to take effect.</p></section><section>
  612. <h3><a name="KMS_Cache"></a>KMS Cache</h3>
  613. <p>KMS has two kinds of caching: a CachingKeyProvider for caching the encryption keys, and a KeyProvider for caching the EEKs.</p><section>
  614. <h4><a name="CachingKeyProvider"></a>CachingKeyProvider</h4>
  615. <p>KMS caches encryption keys for a short period of time to avoid excessive hits to the underlying KeyProvider.</p>
  616. <p>This Cache is enabled by default (can be disabled by setting the <code>hadoop.kms.cache.enable</code> boolean property to false)</p>
  617. <p>This cache is used with the following 3 methods only, <code>getCurrentKey()</code> and <code>getKeyVersion()</code> and <code>getMetadata()</code>.</p>
  618. <p>For the <code>getCurrentKey()</code> method, cached entries are kept for a maximum of 30000 milliseconds regardless the number of times the key is being accessed (to avoid stale keys to be considered current).</p>
  619. <p>For the <code>getKeyVersion()</code> and <code>getMetadata()</code> methods, cached entries are kept with a default inactivity timeout of 600000 milliseconds (10 mins).</p>
  620. <p>The cache is invalidated when the key is deleted by <code>deleteKey()</code>, or when <code>invalidateCache()</code> is called.</p>
  621. <p>These configurations can be changed via the following properties in the <code>etc/hadoop/kms-site.xml</code> configuration file:</p>
  622. <div class="source">
  623. <div class="source">
  624. <pre> &lt;property&gt;
  625. &lt;name&gt;hadoop.kms.cache.enable&lt;/name&gt;
  626. &lt;value&gt;true&lt;/value&gt;
  627. &lt;/property&gt;
  628. &lt;property&gt;
  629. &lt;name&gt;hadoop.kms.cache.timeout.ms&lt;/name&gt;
  630. &lt;value&gt;600000&lt;/value&gt;
  631. &lt;/property&gt;
  632. &lt;property&gt;
  633. &lt;name&gt;hadoop.kms.current.key.cache.timeout.ms&lt;/name&gt;
  634. &lt;value&gt;30000&lt;/value&gt;
  635. &lt;/property&gt;
  636. </pre></div></div>
  637. </section><section>
  638. <h4><a name="KeyProvider"></a>KeyProvider</h4>
  639. <p>Architecturally, both server-side (e.g. KMS) and client-side (e.g. NameNode) have a cache for EEKs. The following are configurable on the cache:</p>
  640. <ul>
  641. <li>The size of the cache. This is the maximum number of EEKs that can be cached under each key name.</li>
  642. <li>A low watermark on the cache. For each key name, if after a get call, the number of cached EEKs are less than (size * low watermark), then the cache under this key name will be filled asynchronously. For each key name, only 1 thread could be running for the asynchronous filling.</li>
  643. <li>The maximum number of asynchronous threads overall, across key names, allowed to fill the queue in a cache.</li>
  644. <li>The cache expiry time, in milliseconds. Internally Guava cache is used as the cache implementation. The expiry approach is <a class="externalLink" href="https://code.google.com/p/guava-libraries/wiki/CachesExplained">expireAfterAccess</a>.</li>
  645. </ul>
  646. <p>Note that due to the asynchronous filling mechanism, it is possible that after rollNewVersion(), the caller still gets the old EEKs. In the worst case, the caller may get up to (server-side cache size + client-side cache size) number of old EEKs, or until both caches expire. This behavior is a trade off to avoid locking on the cache, and is acceptable since the old version EEKs can still be used to decrypt.</p>
  647. <p>Below are the configurations and their default values:</p>
  648. <p>Server-side can be changed via the following properties in the <code>etc/hadoop/kms-site.xml</code> configuration file:</p>
  649. <div class="source">
  650. <div class="source">
  651. <pre> &lt;property&gt;
  652. &lt;name&gt;hadoop.security.kms.encrypted.key.cache.size&lt;/name&gt;
  653. &lt;value&gt;500&lt;/value&gt;
  654. &lt;/property&gt;
  655. &lt;property&gt;
  656. &lt;name&gt;hadoop.security.kms.encrypted.key.cache.low.watermark&lt;/name&gt;
  657. &lt;value&gt;0.3&lt;/value&gt;
  658. &lt;/property&gt;
  659. &lt;property&gt;
  660. &lt;name&gt;hadoop.security.kms.encrypted.key.cache.num.fill.threads&lt;/name&gt;
  661. &lt;value&gt;2&lt;/value&gt;
  662. &lt;/property&gt;
  663. &lt;property&gt;
  664. &lt;name&gt;hadoop.security.kms.encrypted.key.cache.expiry&lt;/name&gt;
  665. &lt;value&gt;43200000&lt;/value&gt;
  666. &lt;/property&gt;
  667. </pre></div></div>
  668. <p>Client-side can be changed via the following properties in the <code>etc/hadoop/core-site.xml</code> configuration file:</p>
  669. <div class="source">
  670. <div class="source">
  671. <pre> &lt;property&gt;
  672. &lt;name&gt;hadoop.security.kms.client.encrypted.key.cache.size&lt;/name&gt;
  673. &lt;value&gt;500&lt;/value&gt;
  674. &lt;/property&gt;
  675. &lt;property&gt;
  676. &lt;name&gt;hadoop.security.kms.client.encrypted.key.cache.low-watermark&lt;/name&gt;
  677. &lt;value&gt;0.3&lt;/value&gt;
  678. &lt;/property&gt;
  679. &lt;property&gt;
  680. &lt;name&gt;hadoop.security.kms.client.encrypted.key.cache.num.refill.threads&lt;/name&gt;
  681. &lt;value&gt;2&lt;/value&gt;
  682. &lt;/property&gt;
  683. &lt;property&gt;
  684. &lt;name&gt;hadoop.security.kms.client.encrypted.key.cache.expiry&lt;/name&gt;
  685. &lt;value&gt;43200000&lt;/value&gt;
  686. &lt;/property&gt;
  687. </pre></div></div>
  688. </section></section><section>
  689. <h3><a name="KMS_Aggregated_Audit_logs"></a>KMS Aggregated Audit logs</h3>
  690. <p>Audit logs are aggregated for API accesses to the GET_KEY_VERSION, GET_CURRENT_KEY, DECRYPT_EEK, GENERATE_EEK, REENCRYPT_EEK operations.</p>
  691. <p>Entries are grouped by the (user,key,operation) combined key for a configurable aggregation interval after which the number of accesses to the specified end-point by the user for a given key is flushed to the audit log.</p>
  692. <p>The Aggregation interval is configured via the property :</p>
  693. <div class="source">
  694. <div class="source">
  695. <pre> &lt;property&gt;
  696. &lt;name&gt;hadoop.kms.aggregation.delay.ms&lt;/name&gt;
  697. &lt;value&gt;10000&lt;/value&gt;
  698. &lt;/property&gt;
  699. </pre></div></div>
  700. </section><section>
  701. <h3><a name="KMS_Security_Configuration"></a>KMS Security Configuration</h3><section>
  702. <h4><a name="Enabling_Kerberos_HTTP_SPNEGO_Authentication"></a>Enabling Kerberos HTTP SPNEGO Authentication</h4>
  703. <p>Configure the Kerberos <code>etc/krb5.conf</code> file with the information of your KDC server.</p>
  704. <p>Create a service principal and its keytab for the KMS, it must be an <code>HTTP</code> service principal.</p>
  705. <p>Configure KMS <code>etc/hadoop/kms-site.xml</code> with the correct security values, for example:</p>
  706. <div class="source">
  707. <div class="source">
  708. <pre> &lt;property&gt;
  709. &lt;name&gt;hadoop.kms.authentication.type&lt;/name&gt;
  710. &lt;value&gt;kerberos&lt;/value&gt;
  711. &lt;/property&gt;
  712. &lt;property&gt;
  713. &lt;name&gt;hadoop.kms.authentication.kerberos.keytab&lt;/name&gt;
  714. &lt;value&gt;${user.home}/kms.keytab&lt;/value&gt;
  715. &lt;/property&gt;
  716. &lt;property&gt;
  717. &lt;name&gt;hadoop.kms.authentication.kerberos.principal&lt;/name&gt;
  718. &lt;value&gt;HTTP/localhost&lt;/value&gt;
  719. &lt;/property&gt;
  720. &lt;property&gt;
  721. &lt;name&gt;hadoop.kms.authentication.kerberos.name.rules&lt;/name&gt;
  722. &lt;value&gt;DEFAULT&lt;/value&gt;
  723. &lt;/property&gt;
  724. </pre></div></div>
  725. <p>NOTE: You need to restart the KMS for the configuration changes to take effect.</p></section><section>
  726. <h4><a name="KMS_Proxyuser_Configuration"></a>KMS Proxyuser Configuration</h4>
  727. <p>Each proxyuser must be configured in <code>etc/hadoop/kms-site.xml</code> using the following properties:</p>
  728. <div class="source">
  729. <div class="source">
  730. <pre> &lt;property&gt;
  731. &lt;name&gt;hadoop.kms.proxyuser.#USER#.users&lt;/name&gt;
  732. &lt;value&gt;*&lt;/value&gt;
  733. &lt;/property&gt;
  734. &lt;property&gt;
  735. &lt;name&gt;hadoop.kms.proxyuser.#USER#.groups&lt;/name&gt;
  736. &lt;value&gt;*&lt;/value&gt;
  737. &lt;/property&gt;
  738. &lt;property&gt;
  739. &lt;name&gt;hadoop.kms.proxyuser.#USER#.hosts&lt;/name&gt;
  740. &lt;value&gt;*&lt;/value&gt;
  741. &lt;/property&gt;
  742. </pre></div></div>
  743. <p><code>#USER#</code> is the username of the proxyuser to configure.</p>
  744. <p>The <code>users</code> property indicates the users that can be impersonated.</p>
  745. <p>The <code>groups</code> property indicates the groups users being impersonated must belong to.</p>
  746. <p>At least one of the <code>users</code> or <code>groups</code> properties must be defined. If both are specified, then the configured proxyuser will be able to impersonate and user in the <code>users</code> list and any user belonging to one of the groups in the <code>groups</code> list.</p>
  747. <p>The <code>hosts</code> property indicates from which host the proxyuser can make impersonation requests.</p>
  748. <p>If <code>users</code>, <code>groups</code> or <code>hosts</code> has a <code>*</code>, it means there are no restrictions for the proxyuser regarding users, groups or hosts.</p></section><section>
  749. <h4><a name="KMS_over_HTTPS_.28SSL.29"></a>KMS over HTTPS (SSL)</h4>
  750. <p>Enable SSL in <code>etc/hadoop/kms-site.xml</code>:</p>
  751. <div class="source">
  752. <div class="source">
  753. <pre> &lt;property&gt;
  754. &lt;name&gt;hadoop.kms.ssl.enabled&lt;/name&gt;
  755. &lt;value&gt;true&lt;/value&gt;
  756. &lt;description&gt;
  757. Whether SSL is enabled. Default is false, i.e. disabled.
  758. &lt;/description&gt;
  759. &lt;/property&gt;
  760. </pre></div></div>
  761. <p>Configure <code>etc/hadoop/ssl-server.xml</code> with proper values, for example:</p>
  762. <div class="source">
  763. <div class="source">
  764. <pre>&lt;property&gt;
  765. &lt;name&gt;ssl.server.keystore.location&lt;/name&gt;
  766. &lt;value&gt;${user.home}/.keystore&lt;/value&gt;
  767. &lt;description&gt;Keystore to be used. Must be specified.&lt;/description&gt;
  768. &lt;/property&gt;
  769. &lt;property&gt;
  770. &lt;name&gt;ssl.server.keystore.password&lt;/name&gt;
  771. &lt;value&gt;&lt;/value&gt;
  772. &lt;description&gt;Must be specified.&lt;/description&gt;
  773. &lt;/property&gt;
  774. &lt;property&gt;
  775. &lt;name&gt;ssl.server.keystore.keypassword&lt;/name&gt;
  776. &lt;value&gt;&lt;/value&gt;
  777. &lt;description&gt;Must be specified.&lt;/description&gt;
  778. &lt;/property&gt;
  779. </pre></div></div>
  780. <p>The SSL passwords can be secured by a credential provider. See <a href="../hadoop-project-dist/hadoop-common/CredentialProviderAPI.html">Credential Provider API</a>.</p>
  781. <p>You need to create an SSL certificate for the KMS. As the <code>kms</code> Unix user, using the Java <code>keytool</code> command to create the SSL certificate:</p>
  782. <div class="source">
  783. <div class="source">
  784. <pre>$ keytool -genkey -alias jetty -keyalg RSA
  785. </pre></div></div>
  786. <p>You will be asked a series of questions in an interactive prompt. It will create the keystore file, which will be named <b>.keystore</b> and located in the user&#x2019;s home directory.</p>
  787. <p>The password you enter for &#x201c;keystore password&#x201d; must match the value of the property <code>ssl.server.keystore.password</code> set in the <code>ssl-server.xml</code> in the configuration directory.</p>
  788. <p>The answer to &#x201c;What is your first and last name?&#x201d; (i.e. &#x201c;CN&#x201d;) must be the hostname of the machine where the KMS will be running.</p>
  789. <p>NOTE: You need to restart the KMS for the configuration changes to take effect.</p>
  790. <p>NOTE: Some old SSL clients may use weak ciphers that are not supported by the KMS server. It is recommended to upgrade the SSL client.</p></section><section>
  791. <h4><a name="ACLs_.28Access_Control_Lists.29"></a>ACLs (Access Control Lists)</h4>
  792. <p>KMS supports ACLs (Access Control Lists) for fine-grained permission control.</p>
  793. <p>Two levels of ACLs exist in KMS: KMS ACLs and Key ACLs. KMS ACLs control access at KMS operation level, and precede Key ACLs. In particular, only if permission is granted at KMS ACLs level, shall the permission check against Key ACLs be performed.</p>
  794. <p>The configuration and usage of KMS ACLs and Key ACLs are described in the sections below.</p><section>
  795. <h5><a name="KMS_ACLs"></a>KMS ACLs</h5>
  796. <p>KMS ACLs configuration are defined in the KMS <code>etc/hadoop/kms-acls.xml</code> configuration file. This file is hot-reloaded when it changes.</p>
  797. <p>KMS supports both fine grained access control as well as blacklist for kms operations via a set ACL configuration properties.</p>
  798. <p>A user accessing KMS is first checked for inclusion in the Access Control List for the requested operation and then checked for exclusion in the Black list for the operation before access is granted.</p>
  799. <div class="source">
  800. <div class="source">
  801. <pre>&lt;configuration&gt;
  802. &lt;property&gt;
  803. &lt;name&gt;hadoop.kms.acl.CREATE&lt;/name&gt;
  804. &lt;value&gt;*&lt;/value&gt;
  805. &lt;description&gt;
  806. ACL for create-key operations.
  807. If the user is not in the GET ACL, the key material is not returned
  808. as part of the response.
  809. &lt;/description&gt;
  810. &lt;/property&gt;
  811. &lt;property&gt;
  812. &lt;name&gt;hadoop.kms.blacklist.CREATE&lt;/name&gt;
  813. &lt;value&gt;hdfs,foo&lt;/value&gt;
  814. &lt;description&gt;
  815. Blacklist for create-key operations.
  816. If the user is in the Blacklist, the key material is not returned
  817. as part of the response.
  818. &lt;/description&gt;
  819. &lt;/property&gt;
  820. &lt;property&gt;
  821. &lt;name&gt;hadoop.kms.acl.DELETE&lt;/name&gt;
  822. &lt;value&gt;*&lt;/value&gt;
  823. &lt;description&gt;
  824. ACL for delete-key operations.
  825. &lt;/description&gt;
  826. &lt;/property&gt;
  827. &lt;property&gt;
  828. &lt;name&gt;hadoop.kms.blacklist.DELETE&lt;/name&gt;
  829. &lt;value&gt;hdfs,foo&lt;/value&gt;
  830. &lt;description&gt;
  831. Blacklist for delete-key operations.
  832. &lt;/description&gt;
  833. &lt;/property&gt;
  834. &lt;property&gt;
  835. &lt;name&gt;hadoop.kms.acl.ROLLOVER&lt;/name&gt;
  836. &lt;value&gt;*&lt;/value&gt;
  837. &lt;description&gt;
  838. ACL for rollover-key operations.
  839. If the user is not in the GET ACL, the key material is not returned
  840. as part of the response.
  841. &lt;/description&gt;
  842. &lt;/property&gt;
  843. &lt;property&gt;
  844. &lt;name&gt;hadoop.kms.blacklist.ROLLOVER&lt;/name&gt;
  845. &lt;value&gt;hdfs,foo&lt;/value&gt;
  846. &lt;description&gt;
  847. Blacklist for rollover-key operations.
  848. &lt;/description&gt;
  849. &lt;/property&gt;
  850. &lt;property&gt;
  851. &lt;name&gt;hadoop.kms.acl.GET&lt;/name&gt;
  852. &lt;value&gt;*&lt;/value&gt;
  853. &lt;description&gt;
  854. ACL for get-key-version and get-current-key operations.
  855. &lt;/description&gt;
  856. &lt;/property&gt;
  857. &lt;property&gt;
  858. &lt;name&gt;hadoop.kms.blacklist.GET&lt;/name&gt;
  859. &lt;value&gt;hdfs,foo&lt;/value&gt;
  860. &lt;description&gt;
  861. ACL for get-key-version and get-current-key operations.
  862. &lt;/description&gt;
  863. &lt;/property&gt;
  864. &lt;property&gt;
  865. &lt;name&gt;hadoop.kms.acl.GET_KEYS&lt;/name&gt;
  866. &lt;value&gt;*&lt;/value&gt;
  867. &lt;description&gt;
  868. ACL for get-keys operation.
  869. &lt;/description&gt;
  870. &lt;/property&gt;
  871. &lt;property&gt;
  872. &lt;name&gt;hadoop.kms.blacklist.GET_KEYS&lt;/name&gt;
  873. &lt;value&gt;hdfs,foo&lt;/value&gt;
  874. &lt;description&gt;
  875. Blacklist for get-keys operation.
  876. &lt;/description&gt;
  877. &lt;/property&gt;
  878. &lt;property&gt;
  879. &lt;name&gt;hadoop.kms.acl.GET_METADATA&lt;/name&gt;
  880. &lt;value&gt;*&lt;/value&gt;
  881. &lt;description&gt;
  882. ACL for get-key-metadata and get-keys-metadata operations.
  883. &lt;/description&gt;
  884. &lt;/property&gt;
  885. &lt;property&gt;
  886. &lt;name&gt;hadoop.kms.blacklist.GET_METADATA&lt;/name&gt;
  887. &lt;value&gt;hdfs,foo&lt;/value&gt;
  888. &lt;description&gt;
  889. Blacklist for get-key-metadata and get-keys-metadata operations.
  890. &lt;/description&gt;
  891. &lt;/property&gt;
  892. &lt;property&gt;
  893. &lt;name&gt;hadoop.kms.acl.SET_KEY_MATERIAL&lt;/name&gt;
  894. &lt;value&gt;*&lt;/value&gt;
  895. &lt;description&gt;
  896. Complimentary ACL for CREATE and ROLLOVER operation to allow the client
  897. to provide the key material when creating or rolling a key.
  898. &lt;/description&gt;
  899. &lt;/property&gt;
  900. &lt;property&gt;
  901. &lt;name&gt;hadoop.kms.blacklist.SET_KEY_MATERIAL&lt;/name&gt;
  902. &lt;value&gt;hdfs,foo&lt;/value&gt;
  903. &lt;description&gt;
  904. Complimentary Blacklist for CREATE and ROLLOVER operation to allow the client
  905. to provide the key material when creating or rolling a key.
  906. &lt;/description&gt;
  907. &lt;/property&gt;
  908. &lt;property&gt;
  909. &lt;name&gt;hadoop.kms.acl.GENERATE_EEK&lt;/name&gt;
  910. &lt;value&gt;*&lt;/value&gt;
  911. &lt;description&gt;
  912. ACL for generateEncryptedKey
  913. CryptoExtension operations
  914. &lt;/description&gt;
  915. &lt;/property&gt;
  916. &lt;property&gt;
  917. &lt;name&gt;hadoop.kms.blacklist.GENERATE_EEK&lt;/name&gt;
  918. &lt;value&gt;hdfs,foo&lt;/value&gt;
  919. &lt;description&gt;
  920. Blacklist for generateEncryptedKey
  921. CryptoExtension operations
  922. &lt;/description&gt;
  923. &lt;/property&gt;
  924. &lt;property&gt;
  925. &lt;name&gt;hadoop.kms.acl.DECRYPT_EEK&lt;/name&gt;
  926. &lt;value&gt;*&lt;/value&gt;
  927. &lt;description&gt;
  928. ACL for decrypt EncryptedKey
  929. CryptoExtension operations
  930. &lt;/description&gt;
  931. &lt;/property&gt;
  932. &lt;property&gt;
  933. &lt;name&gt;hadoop.kms.blacklist.DECRYPT_EEK&lt;/name&gt;
  934. &lt;value&gt;hdfs,foo&lt;/value&gt;
  935. &lt;description&gt;
  936. Blacklist for decrypt EncryptedKey
  937. CryptoExtension operations
  938. &lt;/description&gt;
  939. &lt;/property&gt;
  940. &lt;/configuration&gt;
  941. </pre></div></div>
  942. </section><section>
  943. <h5><a name="Key_ACLs"></a>Key ACLs</h5>
  944. <p>KMS supports access control for all non-read operations at the Key level. All Key Access operations are classified as :</p>
  945. <ul>
  946. <li>MANAGEMENT - createKey, deleteKey, rolloverNewVersion</li>
  947. <li>GENERATE_EEK - generateEncryptedKey, reencryptEncryptedKey, reencryptEncryptedKeys, warmUpEncryptedKeys</li>
  948. <li>DECRYPT_EEK - decryptEncryptedKey</li>
  949. <li>READ - getKeyVersion, getKeyVersions, getMetadata, getKeysMetadata, getCurrentKey</li>
  950. <li>ALL - all of the above</li>
  951. </ul>
  952. <p>These can be defined in the KMS <code>etc/hadoop/kms-acls.xml</code> as follows</p>
  953. <p>For all keys for which a key access has not been explicitly configured, It is possible to configure a default key access control for a subset of the operation types.</p>
  954. <p>It is also possible to configure a &#x201c;whitelist&#x201d; key ACL for a subset of the operation types. The whitelist key ACL grants access to the key, in addition to the explicit or default per-key ACL. That is, if no per-key ACL is explicitly set, a user will be granted access if they are present in the default per-key ACL or the whitelist key ACL. If a per-key ACL is explicitly set, a user will be granted access if they are present in the per-key ACL or the whitelist key ACL.</p>
  955. <p>If no ACL is configured for a specific key AND no default ACL is configured AND no whitelist key ACL is configured for the requested operation, then access will be DENIED.</p>
  956. <p><b>NOTE:</b> The default and whitelist key ACL does not support <code>ALL</code> operation qualifier.</p>
  957. <div class="source">
  958. <div class="source">
  959. <pre> &lt;property&gt;
  960. &lt;name&gt;key.acl.testKey1.MANAGEMENT&lt;/name&gt;
  961. &lt;value&gt;*&lt;/value&gt;
  962. &lt;description&gt;
  963. ACL for create-key, deleteKey and rolloverNewVersion operations.
  964. &lt;/description&gt;
  965. &lt;/property&gt;
  966. &lt;property&gt;
  967. &lt;name&gt;key.acl.testKey2.GENERATE_EEK&lt;/name&gt;
  968. &lt;value&gt;*&lt;/value&gt;
  969. &lt;description&gt;
  970. ACL for generateEncryptedKey operations.
  971. &lt;/description&gt;
  972. &lt;/property&gt;
  973. &lt;property&gt;
  974. &lt;name&gt;key.acl.testKey3.DECRYPT_EEK&lt;/name&gt;
  975. &lt;value&gt;admink3&lt;/value&gt;
  976. &lt;description&gt;
  977. ACL for decryptEncryptedKey operations.
  978. &lt;/description&gt;
  979. &lt;/property&gt;
  980. &lt;property&gt;
  981. &lt;name&gt;key.acl.testKey4.READ&lt;/name&gt;
  982. &lt;value&gt;*&lt;/value&gt;
  983. &lt;description&gt;
  984. ACL for getKeyVersion, getKeyVersions, getMetadata, getKeysMetadata,
  985. getCurrentKey operations
  986. &lt;/description&gt;
  987. &lt;/property&gt;
  988. &lt;property&gt;
  989. &lt;name&gt;key.acl.testKey5.ALL&lt;/name&gt;
  990. &lt;value&gt;*&lt;/value&gt;
  991. &lt;description&gt;
  992. ACL for ALL operations.
  993. &lt;/description&gt;
  994. &lt;/property&gt;
  995. &lt;property&gt;
  996. &lt;name&gt;whitelist.key.acl.MANAGEMENT&lt;/name&gt;
  997. &lt;value&gt;admin1&lt;/value&gt;
  998. &lt;description&gt;
  999. whitelist ACL for MANAGEMENT operations for all keys.
  1000. &lt;/description&gt;
  1001. &lt;/property&gt;
  1002. &lt;!--
  1003. 'testKey3' key ACL is defined. Since a 'whitelist'
  1004. key is also defined for DECRYPT_EEK, in addition to
  1005. admink3, admin1 can also perform DECRYPT_EEK operations
  1006. on 'testKey3'
  1007. --&gt;
  1008. &lt;property&gt;
  1009. &lt;name&gt;whitelist.key.acl.DECRYPT_EEK&lt;/name&gt;
  1010. &lt;value&gt;admin1&lt;/value&gt;
  1011. &lt;description&gt;
  1012. whitelist ACL for DECRYPT_EEK operations for all keys.
  1013. &lt;/description&gt;
  1014. &lt;/property&gt;
  1015. &lt;property&gt;
  1016. &lt;name&gt;default.key.acl.MANAGEMENT&lt;/name&gt;
  1017. &lt;value&gt;user1,user2&lt;/value&gt;
  1018. &lt;description&gt;
  1019. default ACL for MANAGEMENT operations for all keys that are not
  1020. explicitly defined.
  1021. &lt;/description&gt;
  1022. &lt;/property&gt;
  1023. &lt;property&gt;
  1024. &lt;name&gt;default.key.acl.GENERATE_EEK&lt;/name&gt;
  1025. &lt;value&gt;user1,user2&lt;/value&gt;
  1026. &lt;description&gt;
  1027. default ACL for GENERATE_EEK operations for all keys that are not
  1028. explicitly defined.
  1029. &lt;/description&gt;
  1030. &lt;/property&gt;
  1031. &lt;property&gt;
  1032. &lt;name&gt;default.key.acl.DECRYPT_EEK&lt;/name&gt;
  1033. &lt;value&gt;user1,user2&lt;/value&gt;
  1034. &lt;description&gt;
  1035. default ACL for DECRYPT_EEK operations for all keys that are not
  1036. explicitly defined.
  1037. &lt;/description&gt;
  1038. &lt;/property&gt;
  1039. &lt;property&gt;
  1040. &lt;name&gt;default.key.acl.READ&lt;/name&gt;
  1041. &lt;value&gt;user1,user2&lt;/value&gt;
  1042. &lt;description&gt;
  1043. default ACL for READ operations for all keys that are not
  1044. explicitly defined.
  1045. &lt;/description&gt;
  1046. &lt;/property&gt;
  1047. </pre></div></div>
  1048. </section></section></section><section>
  1049. <h3><a name="KMS_Delegation_Token_Configuration"></a>KMS Delegation Token Configuration</h3>
  1050. <p>KMS supports delegation tokens to authenticate to the key providers from processes without Kerberos credentials.</p>
  1051. <p>KMS delegation token authentication extends the default Hadoop authentication. Same as Hadoop authentication, KMS delegation tokens must not be fetched or renewed using delegation token authentication. See <a href="../hadoop-auth/index.html">Hadoop Auth</a> page for more details.</p>
  1052. <p>Additionally, KMS delegation token secret manager can be configured with the following properties:</p>
  1053. <div class="source">
  1054. <div class="source">
  1055. <pre> &lt;property&gt;
  1056. &lt;name&gt;hadoop.kms.authentication.delegation-token.update-interval.sec&lt;/name&gt;
  1057. &lt;value&gt;86400&lt;/value&gt;
  1058. &lt;description&gt;
  1059. How often the master key is rotated, in seconds. Default value 1 day.
  1060. &lt;/description&gt;
  1061. &lt;/property&gt;
  1062. &lt;property&gt;
  1063. &lt;name&gt;hadoop.kms.authentication.delegation-token.max-lifetime.sec&lt;/name&gt;
  1064. &lt;value&gt;604800&lt;/value&gt;
  1065. &lt;description&gt;
  1066. Maximum lifetime of a delegation token, in seconds. Default value 7 days.
  1067. &lt;/description&gt;
  1068. &lt;/property&gt;
  1069. &lt;property&gt;
  1070. &lt;name&gt;hadoop.kms.authentication.delegation-token.renew-interval.sec&lt;/name&gt;
  1071. &lt;value&gt;86400&lt;/value&gt;
  1072. &lt;description&gt;
  1073. Renewal interval of a delegation token, in seconds. Default value 1 day.
  1074. &lt;/description&gt;
  1075. &lt;/property&gt;
  1076. &lt;property&gt;
  1077. &lt;name&gt;hadoop.kms.authentication.delegation-token.removal-scan-interval.sec&lt;/name&gt;
  1078. &lt;value&gt;3600&lt;/value&gt;
  1079. &lt;description&gt;
  1080. Scan interval to remove expired delegation tokens.
  1081. &lt;/description&gt;
  1082. &lt;/property&gt;
  1083. </pre></div></div>
  1084. </section><section>
  1085. <h3><a name="High_Availability"></a>High Availability</h3>
  1086. <p>Multiple KMS instances may be used to provide high availability and scalability. Currently there are two approaches to supporting multiple KMS instances: running KMS instances behind a load-balancer/VIP, or using LoadBalancingKMSClientProvider.</p>
  1087. <p>In both approaches, KMS instances must be specially configured to work properly as a single logical service, because requests from the same client may be handled by different KMS instances. In particular, Kerberos Principals Configuration, HTTP Authentication Signature and Delegation Tokens require special attention.</p><section>
  1088. <h4><a name="Behind_a_Load-Balancer_or_VIP"></a>Behind a Load-Balancer or VIP</h4>
  1089. <p>Because KMS clients and servers communicate via a REST API over HTTP, Load-balancer or VIP may be used to distribute incoming traffic to achieve scalability and HA. In this mode, clients are unaware of multiple KMS instances at the server-side.</p></section><section>
  1090. <h4><a name="Using_LoadBalancingKMSClientProvider"></a>Using LoadBalancingKMSClientProvider</h4>
  1091. <p>An alternative to running multiple KMS instances behind a load-balancer or VIP, is to use LoadBalancingKMSClientProvider. Using this approach, a KMS client (for example, a HDFS NameNode) is aware of multiple KMS instances, and it sends requests to them in a round-robin fashion. LoadBalancingKMSClientProvider is implicitly used when more than one URI is specified in <code>hadoop.security.key.provider.path</code>.</p>
  1092. <p>The following example in <code>core-site.xml</code> configures two KMS instances, <code>kms01.example.com</code> and <code>kms02.example.com</code>. The hostnames are separated by semi-colons, and all KMS instances must run on the same port.</p>
  1093. <div class="source">
  1094. <div class="source">
  1095. <pre>&lt;property&gt;
  1096. &lt;name&gt;hadoop.security.key.provider.path&lt;/name&gt;
  1097. &lt;value&gt;kms://https@kms01.example.com;kms02.example.com:9600/kms&lt;/value&gt;
  1098. &lt;description&gt;
  1099. The KeyProvider to use when interacting with encryption keys used
  1100. when reading and writing to an encryption zone.
  1101. &lt;/description&gt;
  1102. &lt;/property&gt;
  1103. </pre></div></div>
  1104. <p>If a request to a KMS instance fails, clients retry with the next instance. The request is returned as failure only if all instances fail.</p></section><section>
  1105. <h4><a name="HTTP_Kerberos_Principals_Configuration"></a>HTTP Kerberos Principals Configuration</h4>
  1106. <p>When KMS instances are behind a load-balancer or VIP, clients will use the hostname of the VIP. For Kerberos SPNEGO authentication, the hostname of the URL is used to construct the Kerberos service name of the server, <code>HTTP/#HOSTNAME#</code>. This means that all KMS instances must have a Kerberos service name with the load-balancer or VIP hostname.</p>
  1107. <p>In order to be able to access directly a specific KMS instance, the KMS instance must also have Kerberos service name with its own hostname. This is required for monitoring and admin purposes.</p>
  1108. <p>Both Kerberos service principal credentials (for the load-balancer/VIP hostname and for the actual KMS instance hostname) must be in the keytab file configured for authentication. And the principal name specified in the configuration must be &#x2018;*&#x2019;. For example:</p>
  1109. <div class="source">
  1110. <div class="source">
  1111. <pre> &lt;property&gt;
  1112. &lt;name&gt;hadoop.kms.authentication.kerberos.principal&lt;/name&gt;
  1113. &lt;value&gt;*&lt;/value&gt;
  1114. &lt;/property&gt;
  1115. </pre></div></div>
  1116. <p><b>NOTE:</b> If using HTTPS, the SSL certificate used by the KMS instance must be configured to support multiple hostnames (see Java 7 <code>keytool</code> SAN extension support for details on how to do this).</p></section><section>
  1117. <h4><a name="HTTP_Authentication_Signature"></a>HTTP Authentication Signature</h4>
  1118. <p>KMS uses Hadoop Authentication for HTTP authentication. Hadoop Authentication issues a signed HTTP Cookie once the client has authenticated successfully. This HTTP Cookie has an expiration time, after which it will trigger a new authentication sequence. This is done to avoid triggering the authentication on every HTTP request of a client.</p>
  1119. <p>A KMS instance must verify the HTTP Cookie signatures signed by other KMS instances. To do this, all KMS instances must share the signing secret. Please see <a href="../hadoop-auth/Configuration.html#SignerSecretProvider_Configuration">SignerSecretProvider Configuration</a> for detailed description and configuration examples. Note that KMS configurations need to be prefixed with <code>hadoop.kms.authentication</code>, as shown in the example below.</p>
  1120. <p>This secret sharing can be done using a Zookeeper service which is configured in KMS with the following properties in the <code>kms-site.xml</code>:</p>
  1121. <div class="source">
  1122. <div class="source">
  1123. <pre> &lt;property&gt;
  1124. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider&lt;/name&gt;
  1125. &lt;value&gt;zookeeper&lt;/value&gt;
  1126. &lt;description&gt;
  1127. Indicates how the secret to sign the authentication cookies will be
  1128. stored. Options are 'random' (default), 'file' and 'zookeeper'.
  1129. If using a setup with multiple KMS instances, 'zookeeper' should be used.
  1130. If using file, signature.secret.file should be configured and point to the secret file.
  1131. &lt;/description&gt;
  1132. &lt;/property&gt;
  1133. &lt;property&gt;
  1134. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider.zookeeper.path&lt;/name&gt;
  1135. &lt;value&gt;/hadoop-kms/hadoop-auth-signature-secret&lt;/value&gt;
  1136. &lt;description&gt;
  1137. The Zookeeper ZNode path where the KMS instances will store and retrieve
  1138. the secret from. All KMS instances that need to coordinate should point to the same path.
  1139. &lt;/description&gt;
  1140. &lt;/property&gt;
  1141. &lt;property&gt;
  1142. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider.zookeeper.connection.string&lt;/name&gt;
  1143. &lt;value&gt;#HOSTNAME#:#PORT#,...&lt;/value&gt;
  1144. &lt;description&gt;
  1145. The Zookeeper connection string, a list of hostnames and port comma
  1146. separated.
  1147. &lt;/description&gt;
  1148. &lt;/property&gt;
  1149. &lt;property&gt;
  1150. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider.zookeeper.auth.type&lt;/name&gt;
  1151. &lt;value&gt;sasl&lt;/value&gt;
  1152. &lt;description&gt;
  1153. The Zookeeper authentication type, 'none' (default) or 'sasl' (Kerberos).
  1154. &lt;/description&gt;
  1155. &lt;/property&gt;
  1156. &lt;property&gt;
  1157. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.keytab&lt;/name&gt;
  1158. &lt;value&gt;/etc/hadoop/conf/kms.keytab&lt;/value&gt;
  1159. &lt;description&gt;
  1160. The absolute path for the Kerberos keytab with the credentials to
  1161. connect to Zookeeper.
  1162. &lt;/description&gt;
  1163. &lt;/property&gt;
  1164. &lt;property&gt;
  1165. &lt;name&gt;hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal&lt;/name&gt;
  1166. &lt;value&gt;kms/#HOSTNAME#&lt;/value&gt;
  1167. &lt;description&gt;
  1168. The Kerberos service principal used to connect to Zookeeper.
  1169. &lt;/description&gt;
  1170. &lt;/property&gt;
  1171. </pre></div></div>
  1172. </section><section>
  1173. <h4><a name="Delegation_Tokens"></a>Delegation Tokens</h4>
  1174. <p>Similar to HTTP authentication, KMS uses Hadoop Authentication for delegation tokens too. Under HA, every KMS instance must verify the delegation token given by another KMS instance. To do this, all the KMS instances must use ZKDelegationTokenSecretManager to retrieve the TokenIdentifiers and DelegationKeys from ZooKeeper.</p>
  1175. <p>Sample configuration in <code>etc/hadoop/kms-site.xml</code>:</p>
  1176. <div class="source">
  1177. <div class="source">
  1178. <pre> &lt;property&gt;
  1179. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.enable&lt;/name&gt;
  1180. &lt;value&gt;true&lt;/value&gt;
  1181. &lt;description&gt;
  1182. If true, Hadoop KMS uses ZKDelegationTokenSecretManager to persist
  1183. TokenIdentifiers and DelegationKeys in ZooKeeper.
  1184. &lt;/description&gt;
  1185. &lt;/property&gt;
  1186. &lt;property&gt;
  1187. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.zkConnectionString&lt;/name&gt;
  1188. &lt;value&gt;#HOSTNAME#:#PORT#,...&lt;/value&gt;
  1189. &lt;description&gt;
  1190. The ZooKeeper connection string, a comma-separated list of hostnames and port.
  1191. &lt;/description&gt;
  1192. &lt;/property&gt;
  1193. &lt;property&gt;
  1194. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.znodeWorkingPath&lt;/name&gt;
  1195. &lt;value&gt;/hadoop-kms/zkdtsm&lt;/value&gt;
  1196. &lt;description&gt;
  1197. The ZooKeeper znode path where the KMS instances will store and retrieve
  1198. the secret from. All the KMS instances that need to coordinate should point to the same path.
  1199. &lt;/description&gt;
  1200. &lt;/property&gt;
  1201. &lt;property&gt;
  1202. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.zkAuthType&lt;/name&gt;
  1203. &lt;value&gt;sasl&lt;/value&gt;
  1204. &lt;description&gt;
  1205. The ZooKeeper authentication type, 'none' (default) or 'sasl' (Kerberos).
  1206. &lt;/description&gt;
  1207. &lt;/property&gt;
  1208. &lt;property&gt;
  1209. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.kerberos.keytab&lt;/name&gt;
  1210. &lt;value&gt;/etc/hadoop/conf/kms.keytab&lt;/value&gt;
  1211. &lt;description&gt;
  1212. The absolute path for the Kerberos keytab with the credentials to
  1213. connect to ZooKeeper. This parameter is effective only when
  1214. hadoop.kms.authentication.zk-dt-secret-manager.zkAuthType is set to 'sasl'.
  1215. &lt;/description&gt;
  1216. &lt;/property&gt;
  1217. &lt;property&gt;
  1218. &lt;name&gt;hadoop.kms.authentication.zk-dt-secret-manager.kerberos.principal&lt;/name&gt;
  1219. &lt;value&gt;kms/#HOSTNAME#&lt;/value&gt;
  1220. &lt;description&gt;
  1221. The Kerberos service principal used to connect to ZooKeeper.
  1222. This parameter is effective only when
  1223. hadoop.kms.authentication.zk-dt-secret-manager.zkAuthType is set to 'sasl'.
  1224. &lt;/description&gt;
  1225. &lt;/property&gt;
  1226. </pre></div></div>
  1227. </section></section><section>
  1228. <h3><a name="KMS_HTTP_REST_API"></a>KMS HTTP REST API</h3><section>
  1229. <h4><a name="Create_a_Key"></a>Create a Key</h4>
  1230. <p><i>REQUEST:</i></p>
  1231. <div class="source">
  1232. <div class="source">
  1233. <pre>POST http://HOST:PORT/kms/v1/keys
  1234. Content-Type: application/json
  1235. {
  1236. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1237. &quot;cipher&quot; : &quot;&lt;cipher&gt;&quot;,
  1238. &quot;length&quot; : &lt;length&gt;, //int
  1239. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1240. &quot;description&quot; : &quot;&lt;description&gt;&quot;
  1241. }
  1242. </pre></div></div>
  1243. <p><i>RESPONSE:</i></p>
  1244. <div class="source">
  1245. <div class="source">
  1246. <pre>201 CREATED
  1247. LOCATION: http://HOST:PORT/kms/v1/key/&lt;key-name&gt;
  1248. Content-Type: application/json
  1249. {
  1250. &quot;name&quot; : &quot;versionName&quot;,
  1251. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64, not present without GET ACL
  1252. }
  1253. </pre></div></div>
  1254. </section><section>
  1255. <h4><a name="Rollover_Key"></a>Rollover Key</h4>
  1256. <p><i>REQUEST:</i></p>
  1257. <div class="source">
  1258. <div class="source">
  1259. <pre>POST http://HOST:PORT/kms/v1/key/&lt;key-name&gt;
  1260. Content-Type: application/json
  1261. {
  1262. &quot;material&quot; : &quot;&lt;material&gt;&quot;,
  1263. }
  1264. </pre></div></div>
  1265. <p><i>RESPONSE:</i></p>
  1266. <div class="source">
  1267. <div class="source">
  1268. <pre>200 OK
  1269. Content-Type: application/json
  1270. {
  1271. &quot;name&quot; : &quot;versionName&quot;,
  1272. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64, not present without GET ACL
  1273. }
  1274. </pre></div></div>
  1275. </section><section>
  1276. <h4><a name="Invalidate_Cache_of_a_Key"></a>Invalidate Cache of a Key</h4>
  1277. <p><i>REQUEST:</i></p>
  1278. <div class="source">
  1279. <div class="source">
  1280. <pre>POST http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_invalidatecache
  1281. </pre></div></div>
  1282. <p><i>RESPONSE:</i></p>
  1283. <div class="source">
  1284. <div class="source">
  1285. <pre>200 OK
  1286. </pre></div></div>
  1287. </section><section>
  1288. <h4><a name="Delete_Key"></a>Delete Key</h4>
  1289. <p><i>REQUEST:</i></p>
  1290. <div class="source">
  1291. <div class="source">
  1292. <pre>DELETE http://HOST:PORT/kms/v1/key/&lt;key-name&gt;
  1293. </pre></div></div>
  1294. <p><i>RESPONSE:</i></p>
  1295. <div class="source">
  1296. <div class="source">
  1297. <pre>200 OK
  1298. </pre></div></div>
  1299. </section><section>
  1300. <h4><a name="Get_Key_Metadata"></a>Get Key Metadata</h4>
  1301. <p><i>REQUEST:</i></p>
  1302. <div class="source">
  1303. <div class="source">
  1304. <pre>GET http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_metadata
  1305. </pre></div></div>
  1306. <p><i>RESPONSE:</i></p>
  1307. <div class="source">
  1308. <div class="source">
  1309. <pre>200 OK
  1310. Content-Type: application/json
  1311. {
  1312. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1313. &quot;cipher&quot; : &quot;&lt;cipher&gt;&quot;,
  1314. &quot;length&quot; : &lt;length&gt;, //int
  1315. &quot;description&quot; : &quot;&lt;description&gt;&quot;,
  1316. &quot;created&quot; : &lt;millis-epoc&gt;, //long
  1317. &quot;versions&quot; : &lt;versions&gt; //int
  1318. }
  1319. </pre></div></div>
  1320. </section><section>
  1321. <h4><a name="Get_Current_Key"></a>Get Current Key</h4>
  1322. <p><i>REQUEST:</i></p>
  1323. <div class="source">
  1324. <div class="source">
  1325. <pre>GET http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_currentversion
  1326. </pre></div></div>
  1327. <p><i>RESPONSE:</i></p>
  1328. <div class="source">
  1329. <div class="source">
  1330. <pre>200 OK
  1331. Content-Type: application/json
  1332. {
  1333. &quot;name&quot; : &quot;versionName&quot;,
  1334. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1335. }
  1336. </pre></div></div>
  1337. </section><section>
  1338. <h4><a name="Generate_Encrypted_Key_for_Current_KeyVersion"></a>Generate Encrypted Key for Current KeyVersion</h4>
  1339. <p><i>REQUEST:</i></p>
  1340. <div class="source">
  1341. <div class="source">
  1342. <pre>GET http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_eek?eek_op=generate&amp;num_keys=&lt;number-of-keys-to-generate&gt;
  1343. </pre></div></div>
  1344. <p><i>RESPONSE:</i></p>
  1345. <div class="source">
  1346. <div class="source">
  1347. <pre>200 OK
  1348. Content-Type: application/json
  1349. [
  1350. {
  1351. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1352. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1353. &quot;encryptedKeyVersion&quot; : {
  1354. &quot;versionName&quot; : &quot;EEK&quot;,
  1355. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1356. }
  1357. },
  1358. {
  1359. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1360. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1361. &quot;encryptedKeyVersion&quot; : {
  1362. &quot;versionName&quot; : &quot;EEK&quot;,
  1363. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1364. }
  1365. },
  1366. ...
  1367. ]
  1368. </pre></div></div>
  1369. </section><section>
  1370. <h4><a name="Decrypt_Encrypted_Key"></a>Decrypt Encrypted Key</h4>
  1371. <p><i>REQUEST:</i></p>
  1372. <div class="source">
  1373. <div class="source">
  1374. <pre>POST http://HOST:PORT/kms/v1/keyversion/&lt;version-name&gt;/_eek?eek_op=decrypt
  1375. Content-Type: application/json
  1376. {
  1377. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1378. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1379. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1380. }
  1381. </pre></div></div>
  1382. <p><i>RESPONSE:</i></p>
  1383. <div class="source">
  1384. <div class="source">
  1385. <pre>200 OK
  1386. Content-Type: application/json
  1387. {
  1388. &quot;name&quot; : &quot;EK&quot;,
  1389. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1390. }
  1391. </pre></div></div>
  1392. </section><section>
  1393. <h4><a name="Re-encrypt_Encrypted_Key_With_The_Latest_KeyVersion"></a>Re-encrypt Encrypted Key With The Latest KeyVersion</h4>
  1394. <p>This command takes a previously generated encrypted key, and re-encrypts it using the latest KeyVersion encryption key in the KeyProvider. If the latest KeyVersion is the same as the one used to generate the encrypted key, the same encrypted key is returned.</p>
  1395. <p>This is usually useful after a <a href="#Rollover_Key">Rollover</a> of an encryption key. Re-encrypting the encrypted key will allow it to be encrypted using the latest version of the encryption key, but still with the same key material and initialization vector.</p>
  1396. <p><i>REQUEST:</i></p>
  1397. <div class="source">
  1398. <div class="source">
  1399. <pre>POST http://HOST:PORT/kms/v1/keyversion/&lt;version-name&gt;/_eek?eek_op=reencrypt
  1400. Content-Type: application/json
  1401. {
  1402. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1403. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1404. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1405. }
  1406. </pre></div></div>
  1407. <p><i>RESPONSE:</i></p>
  1408. <div class="source">
  1409. <div class="source">
  1410. <pre>200 OK
  1411. Content-Type: application/json
  1412. {
  1413. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1414. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1415. &quot;encryptedKeyVersion&quot; : {
  1416. &quot;versionName&quot; : &quot;EEK&quot;,
  1417. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1418. }
  1419. }
  1420. </pre></div></div>
  1421. </section><section>
  1422. <h4><a name="Batch_Re-encrypt_Encrypted_Keys_With_The_Latest_KeyVersion"></a>Batch Re-encrypt Encrypted Keys With The Latest KeyVersion</h4>
  1423. <p>Batched version of the above re-encrypt Encrypted Key. This command takes a list of previously generated encrypted key, and re-encrypts them using the latest KeyVersion encryption key in the KeyProvider, and return the re-encrypted encrypted keys in the same sequence. For each encrypted key, if the latest KeyVersion is the same as the one used to generate the encrypted key, no action is taken and the same encrypted key is returned.</p>
  1424. <p>This is usually useful after a <a href="#Rollover_Key">Rollover</a> of an encryption key. Re-encrypting the encrypted key will allow it to be encrypted using the latest version of the encryption key, but still with the same key material and initialization vector.</p>
  1425. <p>All Encrypted keys for a batch request must be under the same encryption key name, but could be potentially under different versions of the encryption key.</p>
  1426. <p><i>REQUEST:</i></p>
  1427. <div class="source">
  1428. <div class="source">
  1429. <pre>POST http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_reencryptbatch
  1430. Content-Type: application/json
  1431. [
  1432. {
  1433. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1434. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1435. &quot;encryptedKeyVersion&quot; : {
  1436. &quot;versionName&quot; : &quot;EEK&quot;,
  1437. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1438. }
  1439. },
  1440. {
  1441. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1442. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1443. &quot;encryptedKeyVersion&quot; : {
  1444. &quot;versionName&quot; : &quot;EEK&quot;,
  1445. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1446. }
  1447. },
  1448. ...
  1449. ]
  1450. </pre></div></div>
  1451. <p><i>RESPONSE:</i></p>
  1452. <div class="source">
  1453. <div class="source">
  1454. <pre>200 OK
  1455. Content-Type: application/json
  1456. [
  1457. {
  1458. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1459. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1460. &quot;encryptedKeyVersion&quot; : {
  1461. &quot;versionName&quot; : &quot;EEK&quot;,
  1462. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1463. }
  1464. },
  1465. {
  1466. &quot;versionName&quot; : &quot;&lt;encryptionVersionName&gt;&quot;,
  1467. &quot;iv&quot; : &quot;&lt;iv&gt;&quot;, //base64
  1468. &quot;encryptedKeyVersion&quot; : {
  1469. &quot;versionName&quot; : &quot;EEK&quot;,
  1470. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1471. }
  1472. },
  1473. ...
  1474. ]
  1475. </pre></div></div>
  1476. </section><section>
  1477. <h4><a name="Get_Key_Version"></a>Get Key Version</h4>
  1478. <p><i>REQUEST:</i></p>
  1479. <div class="source">
  1480. <div class="source">
  1481. <pre>GET http://HOST:PORT/kms/v1/keyversion/&lt;version-name&gt;
  1482. </pre></div></div>
  1483. <p><i>RESPONSE:</i></p>
  1484. <div class="source">
  1485. <div class="source">
  1486. <pre>200 OK
  1487. Content-Type: application/json
  1488. {
  1489. &quot;name&quot; : &quot;&lt;name&gt;&quot;,
  1490. &quot;versionName&quot; : &quot;&lt;version&gt;&quot;,
  1491. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1492. }
  1493. </pre></div></div>
  1494. </section><section>
  1495. <h4><a name="Get_Key_Versions"></a>Get Key Versions</h4>
  1496. <p><i>REQUEST:</i></p>
  1497. <div class="source">
  1498. <div class="source">
  1499. <pre>GET http://HOST:PORT/kms/v1/key/&lt;key-name&gt;/_versions
  1500. </pre></div></div>
  1501. <p><i>RESPONSE:</i></p>
  1502. <div class="source">
  1503. <div class="source">
  1504. <pre>200 OK
  1505. Content-Type: application/json
  1506. [
  1507. {
  1508. &quot;name&quot; : &quot;&lt;name&gt;&quot;,
  1509. &quot;versionName&quot; : &quot;&lt;version&gt;&quot;,
  1510. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1511. },
  1512. {
  1513. &quot;name&quot; : &quot;&lt;name&gt;&quot;,
  1514. &quot;versionName&quot; : &quot;&lt;version&gt;&quot;,
  1515. &quot;material&quot; : &quot;&lt;material&gt;&quot;, //base64
  1516. },
  1517. ...
  1518. ]
  1519. </pre></div></div>
  1520. </section><section>
  1521. <h4><a name="Get_Key_Names"></a>Get Key Names</h4>
  1522. <p><i>REQUEST:</i></p>
  1523. <div class="source">
  1524. <div class="source">
  1525. <pre>GET http://HOST:PORT/kms/v1/keys/names
  1526. </pre></div></div>
  1527. <p><i>RESPONSE:</i></p>
  1528. <div class="source">
  1529. <div class="source">
  1530. <pre>200 OK
  1531. Content-Type: application/json
  1532. [
  1533. &quot;&lt;key-name&gt;&quot;,
  1534. &quot;&lt;key-name&gt;&quot;,
  1535. ...
  1536. ]
  1537. </pre></div></div>
  1538. </section><section>
  1539. <h4><a name="Get_Keys_Metadata"></a>Get Keys Metadata</h4>
  1540. <div class="source">
  1541. <div class="source">
  1542. <pre>GET http://HOST:PORT/kms/v1/keys/metadata?key=&lt;key-name&gt;&amp;key=&lt;key-name&gt;,...
  1543. </pre></div></div>
  1544. <p><i>RESPONSE:</i></p>
  1545. <div class="source">
  1546. <div class="source">
  1547. <pre>200 OK
  1548. Content-Type: application/json
  1549. [
  1550. {
  1551. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1552. &quot;cipher&quot; : &quot;&lt;cipher&gt;&quot;,
  1553. &quot;length&quot; : &lt;length&gt;, //int
  1554. &quot;description&quot; : &quot;&lt;description&gt;&quot;,
  1555. &quot;created&quot; : &lt;millis-epoc&gt;, //long
  1556. &quot;versions&quot; : &lt;versions&gt; //int
  1557. },
  1558. {
  1559. &quot;name&quot; : &quot;&lt;key-name&gt;&quot;,
  1560. &quot;cipher&quot; : &quot;&lt;cipher&gt;&quot;,
  1561. &quot;length&quot; : &lt;length&gt;, //int
  1562. &quot;description&quot; : &quot;&lt;description&gt;&quot;,
  1563. &quot;created&quot; : &lt;millis-epoc&gt;, //long
  1564. &quot;versions&quot; : &lt;versions&gt; //int
  1565. },
  1566. ...
  1567. ]
  1568. </pre></div></div>
  1569. </section></section><section>
  1570. <h3><a name="Deprecated_Environment_Variables"></a>Deprecated Environment Variables</h3>
  1571. <p>The following environment variables are deprecated. Set the corresponding configuration properties instead.</p>
  1572. <table border="0" class="bodyTable">
  1573. <thead>
  1574. <tr class="a">
  1575. <th>Environment Variable </th>
  1576. <th> Configuration Property </th>
  1577. <th> Configuration File</th></tr>
  1578. </thead><tbody>
  1579. <tr class="b">
  1580. <td>KMS_TEMP </td>
  1581. <td> hadoop.http.temp.dir </td>
  1582. <td> kms-site.xml</td></tr>
  1583. <tr class="a">
  1584. <td>KMS_HTTP_PORT </td>
  1585. <td> hadoop.kms.http.port </td>
  1586. <td> kms-site.xml</td></tr>
  1587. <tr class="b">
  1588. <td>KMS_MAX_HTTP_HEADER_SIZE </td>
  1589. <td> hadoop.http.max.request.header.size and hadoop.http.max.response.header.size </td>
  1590. <td> kms-site.xml</td></tr>
  1591. <tr class="a">
  1592. <td>KMS_MAX_THREADS </td>
  1593. <td> hadoop.http.max.threads </td>
  1594. <td> kms-site.xml</td></tr>
  1595. <tr class="b">
  1596. <td>KMS_SSL_ENABLED </td>
  1597. <td> hadoop.kms.ssl.enabled </td>
  1598. <td> kms-site.xml</td></tr>
  1599. <tr class="a">
  1600. <td>KMS_SSL_KEYSTORE_FILE </td>
  1601. <td> ssl.server.keystore.location </td>
  1602. <td> ssl-server.xml</td></tr>
  1603. <tr class="b">
  1604. <td>KMS_SSL_KEYSTORE_PASS </td>
  1605. <td> ssl.server.keystore.password </td>
  1606. <td> ssl-server.xml</td></tr>
  1607. </tbody>
  1608. </table></section><section>
  1609. <h3><a name="Default_HTTP_Services"></a>Default HTTP Services</h3>
  1610. <table border="0" class="bodyTable">
  1611. <thead>
  1612. <tr class="a">
  1613. <th>Name </th>
  1614. <th> Description</th></tr>
  1615. </thead><tbody>
  1616. <tr class="b">
  1617. <td>/conf </td>
  1618. <td> Display configuration properties</td></tr>
  1619. <tr class="a">
  1620. <td>/jmx </td>
  1621. <td> Java JMX management interface</td></tr>
  1622. <tr class="b">
  1623. <td>/logLevel </td>
  1624. <td> Get or set log level per class</td></tr>
  1625. <tr class="a">
  1626. <td>/logs </td>
  1627. <td> Display log files</td></tr>
  1628. <tr class="b">
  1629. <td>/stacks </td>
  1630. <td> Display JVM stacks</td></tr>
  1631. <tr class="a">
  1632. <td>/static/index.html </td>
  1633. <td> The static home page</td></tr>
  1634. <tr class="b">
  1635. <td>/prof </td>
  1636. <td> Async Profiler endpoint</td></tr>
  1637. </tbody>
  1638. </table>
  1639. <p>To control the access to servlet <code>/conf</code>, <code>/jmx</code>, <code>/logLevel</code>, <code>/logs</code>, <code>/stacks</code> and <code>/prof</code>, configure the following properties in <code>kms-site.xml</code>:</p>
  1640. <div class="source">
  1641. <div class="source">
  1642. <pre> &lt;property&gt;
  1643. &lt;name&gt;hadoop.security.authorization&lt;/name&gt;
  1644. &lt;value&gt;true&lt;/value&gt;
  1645. &lt;description&gt;Is service-level authorization enabled?&lt;/description&gt;
  1646. &lt;/property&gt;
  1647. &lt;property&gt;
  1648. &lt;name&gt;hadoop.security.instrumentation.requires.admin&lt;/name&gt;
  1649. &lt;value&gt;true&lt;/value&gt;
  1650. &lt;description&gt;
  1651. Indicates if administrator ACLs are required to access
  1652. instrumentation servlets (JMX, METRICS, CONF, STACKS, PROF).
  1653. &lt;/description&gt;
  1654. &lt;/property&gt;
  1655. &lt;property&gt;
  1656. &lt;name&gt;hadoop.kms.http.administrators&lt;/name&gt;
  1657. &lt;value&gt;&lt;/value&gt;
  1658. &lt;description&gt;ACL for the admins, this configuration is used to control
  1659. who can access the default KMS servlets. The value should be a comma
  1660. separated list of users and groups. The user list comes first and is
  1661. separated by a space followed by the group list,
  1662. e.g. &quot;user1,user2 group1,group2&quot;. Both users and groups are optional,
  1663. so &quot;user1&quot;, &quot; group1&quot;, &quot;&quot;, &quot;user1 group1&quot;, &quot;user1,user2 group1,group2&quot;
  1664. are all valid (note the leading space in &quot; group1&quot;). '*' grants access
  1665. to all users and groups, e.g. '*', '* ' and ' *' are all valid.
  1666. &lt;/description&gt;
  1667. &lt;/property&gt;
  1668. </pre></div></div></section></section>
  1669. </div>
  1670. </div>
  1671. <div class="clear">
  1672. <hr/>
  1673. </div>
  1674. <div id="footer">
  1675. <div class="xright">
  1676. &#169; 2008-2025
  1677. Apache Software Foundation
  1678. - <a href="http://maven.apache.org/privacy-policy.html">Privacy Policy</a>.
  1679. Apache Maven, Maven, Apache, the Apache feather logo, and the Apache Maven project logos are trademarks of The Apache Software Foundation.
  1680. </div>
  1681. <div class="clear">
  1682. <hr/>
  1683. </div>
  1684. </div>
  1685. </body>
  1686. </html>