index.html 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301
  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <link rel="icon" href="../assets/images/favicon.png">
  7. <meta name="generator" content="mkdocs-1.1, mkdocs-material-7.1.8">
  8. <title>Secrets Manager - External Secrets Operator</title>
  9. <link rel="stylesheet" href="../assets/stylesheets/main.ca7ac06f.min.css">
  10. <link rel="stylesheet" href="../assets/stylesheets/palette.f1a3b89f.min.css">
  11. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  12. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
  13. <style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
  14. <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-QP38TD8K7V"),document.addEventListener("DOMContentLoaded",function(){"undefined"!=typeof location$&&location$.subscribe(function(t){gtag("config","G-QP38TD8K7V",{page_path:t.pathname})})})</script>
  15. <script async src="https://www.googletagmanager.com/gtag/js?id=G-QP38TD8K7V"></script>
  16. </head>
  17. <body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
  18. <script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
  19. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  20. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  21. <label class="md-overlay" for="__drawer"></label>
  22. <div data-md-component="skip">
  23. <a href="#google-cloud-secret-manager" class="md-skip">
  24. Skip to content
  25. </a>
  26. </div>
  27. <div data-md-component="announce">
  28. </div>
  29. <header class="md-header" data-md-component="header">
  30. <nav class="md-header__inner md-grid" aria-label="Header">
  31. <a href=".." title="External Secrets Operator" class="md-header__button md-logo" aria-label="External Secrets Operator" data-md-component="logo">
  32. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
  33. </a>
  34. <label class="md-header__button md-icon" for="__drawer">
  35. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  36. </label>
  37. <div class="md-header__title" data-md-component="header-title">
  38. <div class="md-header__ellipsis">
  39. <div class="md-header__topic">
  40. <span class="md-ellipsis">
  41. External Secrets Operator
  42. </span>
  43. </div>
  44. <div class="md-header__topic" data-md-component="header-topic">
  45. <span class="md-ellipsis">
  46. Secrets Manager
  47. </span>
  48. </div>
  49. </div>
  50. </div>
  51. <label class="md-header__button md-icon" for="__search">
  52. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  53. </label>
  54. <div class="md-search" data-md-component="search" role="dialog">
  55. <label class="md-search__overlay" for="__search"></label>
  56. <div class="md-search__inner" role="search">
  57. <form class="md-search__form" name="search">
  58. <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
  59. <label class="md-search__icon md-icon" for="__search">
  60. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
  61. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  62. </label>
  63. <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
  64. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
  65. </button>
  66. </form>
  67. <div class="md-search__output">
  68. <div class="md-search__scrollwrap" data-md-scrollfix>
  69. <div class="md-search-result" data-md-component="search-result">
  70. <div class="md-search-result__meta">
  71. Initializing search
  72. </div>
  73. <ol class="md-search-result__list"></ol>
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="md-header__source">
  80. <a href="https://github.com/external-secrets/external-secrets/" title="Go to repository" class="md-source" data-md-component="source">
  81. <div class="md-source__icon md-icon">
  82. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  83. </div>
  84. <div class="md-source__repository">
  85. External Secrets Operator
  86. </div>
  87. </a>
  88. </div>
  89. </nav>
  90. </header>
  91. <div class="md-container" data-md-component="container">
  92. <main class="md-main" data-md-component="main">
  93. <div class="md-main__inner md-grid">
  94. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  95. <div class="md-sidebar__scrollwrap">
  96. <div class="md-sidebar__inner">
  97. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  98. <label class="md-nav__title" for="__drawer">
  99. <a href=".." title="External Secrets Operator" class="md-nav__button md-logo" aria-label="External Secrets Operator" data-md-component="logo">
  100. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
  101. </a>
  102. External Secrets Operator
  103. </label>
  104. <div class="md-nav__source">
  105. <a href="https://github.com/external-secrets/external-secrets/" title="Go to repository" class="md-source" data-md-component="source">
  106. <div class="md-source__icon md-icon">
  107. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  108. </div>
  109. <div class="md-source__repository">
  110. External Secrets Operator
  111. </div>
  112. </a>
  113. </div>
  114. <ul class="md-nav__list" data-md-scrollfix>
  115. <li class="md-nav__item">
  116. <a href=".." class="md-nav__link">
  117. Introduction
  118. </a>
  119. </li>
  120. <li class="md-nav__item">
  121. <a href="../api-overview/" class="md-nav__link">
  122. Overview
  123. </a>
  124. </li>
  125. <li class="md-nav__item md-nav__item--nested">
  126. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
  127. <label class="md-nav__link" for="__nav_3">
  128. API Types
  129. <span class="md-nav__icon md-icon"></span>
  130. </label>
  131. <nav class="md-nav" aria-label="API Types" data-md-level="1">
  132. <label class="md-nav__title" for="__nav_3">
  133. <span class="md-nav__icon md-icon"></span>
  134. API Types
  135. </label>
  136. <ul class="md-nav__list" data-md-scrollfix>
  137. <li class="md-nav__item">
  138. <a href="../api-externalsecret/" class="md-nav__link">
  139. ExternalSecret
  140. </a>
  141. </li>
  142. <li class="md-nav__item">
  143. <a href="../api-secretstore/" class="md-nav__link">
  144. SecretStore
  145. </a>
  146. </li>
  147. <li class="md-nav__item">
  148. <a href="../api-clustersecretstore/" class="md-nav__link">
  149. ClusterSecretStore
  150. </a>
  151. </li>
  152. </ul>
  153. </nav>
  154. </li>
  155. <li class="md-nav__item md-nav__item--nested">
  156. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
  157. <label class="md-nav__link" for="__nav_4">
  158. Guides
  159. <span class="md-nav__icon md-icon"></span>
  160. </label>
  161. <nav class="md-nav" aria-label="Guides" data-md-level="1">
  162. <label class="md-nav__title" for="__nav_4">
  163. <span class="md-nav__icon md-icon"></span>
  164. Guides
  165. </label>
  166. <ul class="md-nav__list" data-md-scrollfix>
  167. <li class="md-nav__item">
  168. <a href="../guides-introduction/" class="md-nav__link">
  169. Introduction
  170. </a>
  171. </li>
  172. <li class="md-nav__item">
  173. <a href="../guides-getting-started/" class="md-nav__link">
  174. Getting started
  175. </a>
  176. </li>
  177. <li class="md-nav__item">
  178. <a href="../guides-templating/" class="md-nav__link">
  179. Advanced Templating
  180. </a>
  181. </li>
  182. <li class="md-nav__item">
  183. <a href="../guides-all-keys-one-secret/" class="md-nav__link">
  184. All keys, One secret
  185. </a>
  186. </li>
  187. <li class="md-nav__item">
  188. <a href="../guides-common-k8s-secret-types/" class="md-nav__link">
  189. Common K8S Secret Types
  190. </a>
  191. </li>
  192. <li class="md-nav__item">
  193. <a href="../guides-multi-tenancy/" class="md-nav__link">
  194. Multi Tenancy
  195. </a>
  196. </li>
  197. <li class="md-nav__item">
  198. <a href="../guides-metrics/" class="md-nav__link">
  199. Metrics
  200. </a>
  201. </li>
  202. </ul>
  203. </nav>
  204. </li>
  205. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  206. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked>
  207. <label class="md-nav__link" for="__nav_5">
  208. Provider
  209. <span class="md-nav__icon md-icon"></span>
  210. </label>
  211. <nav class="md-nav" aria-label="Provider" data-md-level="1">
  212. <label class="md-nav__title" for="__nav_5">
  213. <span class="md-nav__icon md-icon"></span>
  214. Provider
  215. </label>
  216. <ul class="md-nav__list" data-md-scrollfix>
  217. <li class="md-nav__item md-nav__item--nested">
  218. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_1" type="checkbox" id="__nav_5_1" >
  219. <label class="md-nav__link" for="__nav_5_1">
  220. AWS
  221. <span class="md-nav__icon md-icon"></span>
  222. </label>
  223. <nav class="md-nav" aria-label="AWS" data-md-level="2">
  224. <label class="md-nav__title" for="__nav_5_1">
  225. <span class="md-nav__icon md-icon"></span>
  226. AWS
  227. </label>
  228. <ul class="md-nav__list" data-md-scrollfix>
  229. <li class="md-nav__item">
  230. <a href="../provider-aws-secrets-manager/" class="md-nav__link">
  231. Secrets Manager
  232. </a>
  233. </li>
  234. <li class="md-nav__item">
  235. <a href="../provider-aws-parameter-store/" class="md-nav__link">
  236. Parameter Store
  237. </a>
  238. </li>
  239. </ul>
  240. </nav>
  241. </li>
  242. <li class="md-nav__item md-nav__item--nested">
  243. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
  244. <label class="md-nav__link" for="__nav_5_2">
  245. Azure
  246. <span class="md-nav__icon md-icon"></span>
  247. </label>
  248. <nav class="md-nav" aria-label="Azure" data-md-level="2">
  249. <label class="md-nav__title" for="__nav_5_2">
  250. <span class="md-nav__icon md-icon"></span>
  251. Azure
  252. </label>
  253. <ul class="md-nav__list" data-md-scrollfix>
  254. <li class="md-nav__item">
  255. <a href="../provider-azure-key-vault/" class="md-nav__link">
  256. Key Vault
  257. </a>
  258. </li>
  259. </ul>
  260. </nav>
  261. </li>
  262. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  263. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_3" type="checkbox" id="__nav_5_3" checked>
  264. <label class="md-nav__link" for="__nav_5_3">
  265. Google
  266. <span class="md-nav__icon md-icon"></span>
  267. </label>
  268. <nav class="md-nav" aria-label="Google" data-md-level="2">
  269. <label class="md-nav__title" for="__nav_5_3">
  270. <span class="md-nav__icon md-icon"></span>
  271. Google
  272. </label>
  273. <ul class="md-nav__list" data-md-scrollfix>
  274. <li class="md-nav__item md-nav__item--active">
  275. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  276. <label class="md-nav__link md-nav__link--active" for="__toc">
  277. Secrets Manager
  278. <span class="md-nav__icon md-icon"></span>
  279. </label>
  280. <a href="./" class="md-nav__link md-nav__link--active">
  281. Secrets Manager
  282. </a>
  283. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  284. <label class="md-nav__title" for="__toc">
  285. <span class="md-nav__icon md-icon"></span>
  286. Table of contents
  287. </label>
  288. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  289. <li class="md-nav__item">
  290. <a href="#google-cloud-secret-manager" class="md-nav__link">
  291. Google Cloud Secret Manager
  292. </a>
  293. <nav class="md-nav" aria-label="Google Cloud Secret Manager">
  294. <ul class="md-nav__list">
  295. <li class="md-nav__item">
  296. <a href="#service-account-key-authentication" class="md-nav__link">
  297. Service account key authentication
  298. </a>
  299. </li>
  300. <li class="md-nav__item">
  301. <a href="#update-secret-store" class="md-nav__link">
  302. Update secret store
  303. </a>
  304. </li>
  305. <li class="md-nav__item">
  306. <a href="#creating-external-secret" class="md-nav__link">
  307. Creating external secret
  308. </a>
  309. </li>
  310. </ul>
  311. </nav>
  312. </li>
  313. <li class="md-nav__item">
  314. <a href="#authentication-with-workload-identity" class="md-nav__link">
  315. Authentication with Workload Identity
  316. </a>
  317. <nav class="md-nav" aria-label="Authentication with Workload Identity">
  318. <ul class="md-nav__list">
  319. <li class="md-nav__item">
  320. <a href="#following-the-documentation" class="md-nav__link">
  321. Following the documentation
  322. </a>
  323. <nav class="md-nav" aria-label="Following the documentation">
  324. <ul class="md-nav__list">
  325. <li class="md-nav__item">
  326. <a href="#changing-values" class="md-nav__link">
  327. Changing Values
  328. </a>
  329. </li>
  330. <li class="md-nav__item">
  331. <a href="#following-through" class="md-nav__link">
  332. Following through
  333. </a>
  334. </li>
  335. <li class="md-nav__item">
  336. <a href="#secretstore-with-workloadidentity" class="md-nav__link">
  337. SecretStore with WorkloadIdentity
  338. </a>
  339. </li>
  340. </ul>
  341. </nav>
  342. </li>
  343. </ul>
  344. </nav>
  345. </li>
  346. </ul>
  347. </nav>
  348. </li>
  349. </ul>
  350. </nav>
  351. </li>
  352. <li class="md-nav__item md-nav__item--nested">
  353. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_4" type="checkbox" id="__nav_5_4" >
  354. <label class="md-nav__link" for="__nav_5_4">
  355. IBM
  356. <span class="md-nav__icon md-icon"></span>
  357. </label>
  358. <nav class="md-nav" aria-label="IBM" data-md-level="2">
  359. <label class="md-nav__title" for="__nav_5_4">
  360. <span class="md-nav__icon md-icon"></span>
  361. IBM
  362. </label>
  363. <ul class="md-nav__list" data-md-scrollfix>
  364. <li class="md-nav__item">
  365. <a href="../provider-ibm-secrets-manager/" class="md-nav__link">
  366. Secrets Manager
  367. </a>
  368. </li>
  369. </ul>
  370. </nav>
  371. </li>
  372. <li class="md-nav__item">
  373. <a href="../provider-akeyless/" class="md-nav__link">
  374. Akeyless
  375. </a>
  376. </li>
  377. <li class="md-nav__item">
  378. <a href="../provider-hashicorp-vault/" class="md-nav__link">
  379. HashiCorp Vault
  380. </a>
  381. </li>
  382. <li class="md-nav__item md-nav__item--nested">
  383. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_7" type="checkbox" id="__nav_5_7" >
  384. <label class="md-nav__link" for="__nav_5_7">
  385. Yandex
  386. <span class="md-nav__icon md-icon"></span>
  387. </label>
  388. <nav class="md-nav" aria-label="Yandex" data-md-level="2">
  389. <label class="md-nav__title" for="__nav_5_7">
  390. <span class="md-nav__icon md-icon"></span>
  391. Yandex
  392. </label>
  393. <ul class="md-nav__list" data-md-scrollfix>
  394. <li class="md-nav__item">
  395. <a href="../provider-yandex-lockbox/" class="md-nav__link">
  396. Lockbox
  397. </a>
  398. </li>
  399. </ul>
  400. </nav>
  401. </li>
  402. <li class="md-nav__item md-nav__item--nested">
  403. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_8" type="checkbox" id="__nav_5_8" >
  404. <label class="md-nav__link" for="__nav_5_8">
  405. Gitlab
  406. <span class="md-nav__icon md-icon"></span>
  407. </label>
  408. <nav class="md-nav" aria-label="Gitlab" data-md-level="2">
  409. <label class="md-nav__title" for="__nav_5_8">
  410. <span class="md-nav__icon md-icon"></span>
  411. Gitlab
  412. </label>
  413. <ul class="md-nav__list" data-md-scrollfix>
  414. <li class="md-nav__item">
  415. <a href="../provider-gitlab-project-variables/" class="md-nav__link">
  416. Gitlab Project Variables
  417. </a>
  418. </li>
  419. </ul>
  420. </nav>
  421. </li>
  422. <li class="md-nav__item md-nav__item--nested">
  423. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_9" type="checkbox" id="__nav_5_9" >
  424. <label class="md-nav__link" for="__nav_5_9">
  425. Oracle
  426. <span class="md-nav__icon md-icon"></span>
  427. </label>
  428. <nav class="md-nav" aria-label="Oracle" data-md-level="2">
  429. <label class="md-nav__title" for="__nav_5_9">
  430. <span class="md-nav__icon md-icon"></span>
  431. Oracle
  432. </label>
  433. <ul class="md-nav__list" data-md-scrollfix>
  434. <li class="md-nav__item">
  435. <a href="../provider-oracle-vault/" class="md-nav__link">
  436. Oracle Vault
  437. </a>
  438. </li>
  439. </ul>
  440. </nav>
  441. </li>
  442. </ul>
  443. </nav>
  444. </li>
  445. <li class="md-nav__item md-nav__item--nested">
  446. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
  447. <label class="md-nav__link" for="__nav_6">
  448. References
  449. <span class="md-nav__icon md-icon"></span>
  450. </label>
  451. <nav class="md-nav" aria-label="References" data-md-level="1">
  452. <label class="md-nav__title" for="__nav_6">
  453. <span class="md-nav__icon md-icon"></span>
  454. References
  455. </label>
  456. <ul class="md-nav__list" data-md-scrollfix>
  457. <li class="md-nav__item">
  458. <a href="../spec/" class="md-nav__link">
  459. API specification
  460. </a>
  461. </li>
  462. </ul>
  463. </nav>
  464. </li>
  465. <li class="md-nav__item md-nav__item--nested">
  466. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
  467. <label class="md-nav__link" for="__nav_7">
  468. Contributing
  469. <span class="md-nav__icon md-icon"></span>
  470. </label>
  471. <nav class="md-nav" aria-label="Contributing" data-md-level="1">
  472. <label class="md-nav__title" for="__nav_7">
  473. <span class="md-nav__icon md-icon"></span>
  474. Contributing
  475. </label>
  476. <ul class="md-nav__list" data-md-scrollfix>
  477. <li class="md-nav__item">
  478. <a href="../contributing-devguide/" class="md-nav__link">
  479. Developer guide
  480. </a>
  481. </li>
  482. <li class="md-nav__item">
  483. <a href="../contributing-process/" class="md-nav__link">
  484. Contributing Process
  485. </a>
  486. </li>
  487. <li class="md-nav__item">
  488. <a href="../contributing-coc/" class="md-nav__link">
  489. Code of Conduct
  490. </a>
  491. </li>
  492. </ul>
  493. </nav>
  494. </li>
  495. <li class="md-nav__item">
  496. <a href="../deprecation-policy/" class="md-nav__link">
  497. Deprecation Policy
  498. </a>
  499. </li>
  500. </ul>
  501. </nav>
  502. </div>
  503. </div>
  504. </div>
  505. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  506. <div class="md-sidebar__scrollwrap">
  507. <div class="md-sidebar__inner">
  508. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  509. <label class="md-nav__title" for="__toc">
  510. <span class="md-nav__icon md-icon"></span>
  511. Table of contents
  512. </label>
  513. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  514. <li class="md-nav__item">
  515. <a href="#google-cloud-secret-manager" class="md-nav__link">
  516. Google Cloud Secret Manager
  517. </a>
  518. <nav class="md-nav" aria-label="Google Cloud Secret Manager">
  519. <ul class="md-nav__list">
  520. <li class="md-nav__item">
  521. <a href="#service-account-key-authentication" class="md-nav__link">
  522. Service account key authentication
  523. </a>
  524. </li>
  525. <li class="md-nav__item">
  526. <a href="#update-secret-store" class="md-nav__link">
  527. Update secret store
  528. </a>
  529. </li>
  530. <li class="md-nav__item">
  531. <a href="#creating-external-secret" class="md-nav__link">
  532. Creating external secret
  533. </a>
  534. </li>
  535. </ul>
  536. </nav>
  537. </li>
  538. <li class="md-nav__item">
  539. <a href="#authentication-with-workload-identity" class="md-nav__link">
  540. Authentication with Workload Identity
  541. </a>
  542. <nav class="md-nav" aria-label="Authentication with Workload Identity">
  543. <ul class="md-nav__list">
  544. <li class="md-nav__item">
  545. <a href="#following-the-documentation" class="md-nav__link">
  546. Following the documentation
  547. </a>
  548. <nav class="md-nav" aria-label="Following the documentation">
  549. <ul class="md-nav__list">
  550. <li class="md-nav__item">
  551. <a href="#changing-values" class="md-nav__link">
  552. Changing Values
  553. </a>
  554. </li>
  555. <li class="md-nav__item">
  556. <a href="#following-through" class="md-nav__link">
  557. Following through
  558. </a>
  559. </li>
  560. <li class="md-nav__item">
  561. <a href="#secretstore-with-workloadidentity" class="md-nav__link">
  562. SecretStore with WorkloadIdentity
  563. </a>
  564. </li>
  565. </ul>
  566. </nav>
  567. </li>
  568. </ul>
  569. </nav>
  570. </li>
  571. </ul>
  572. </nav>
  573. </div>
  574. </div>
  575. </div>
  576. <div class="md-content" data-md-component="content">
  577. <article class="md-content__inner md-typeset">
  578. <a href="https://github.com/external-secrets/external-secrets/edit/master/docs/provider-google-secrets-manager.md" title="Edit this page" class="md-content__button md-icon">
  579. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
  580. </a>
  581. <h1>Secrets Manager</h1>
  582. <h2 id="google-cloud-secret-manager">Google Cloud Secret Manager</h2>
  583. <p>External Secrets Operator integrates with <a href="https://cloud.google.com/secret-manager">GCP Secret Manager</a> for secret management.</p>
  584. <h3 id="service-account-key-authentication">Service account key authentication</h3>
  585. <p>A service account key is created and the JSON keyfile is stored in a <code>Kind=Secret</code>. The <code>project_id</code> and <code>private_key</code> should be configured for the project.</p>
  586. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">v1</span>
  587. <span class="nt">kind</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Secret</span>
  588. <span class="nt">metadata</span><span class="p">:</span>
  589. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gcpsm-secret</span>
  590. <span class="nt">labels</span><span class="p">:</span>
  591. <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gcpsm</span>
  592. <span class="nt">type</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Opaque</span>
  593. <span class="nt">stringData</span><span class="p">:</span>
  594. <span class="nt">secret-access-credentials</span><span class="p">:</span> <span class="p p-Indicator">|-</span>
  595. <span class="no">{</span>
  596. <span class="no">&quot;type&quot;: &quot;service_account&quot;,</span>
  597. <span class="no">&quot;project_id&quot;: &quot;external-secrets-operator&quot;,</span>
  598. <span class="no">&quot;private_key_id&quot;: &quot;&quot;,</span>
  599. <span class="no">&quot;private_key&quot;: &quot;-----BEGIN PRIVATE KEY-----\nA key\n-----END PRIVATE KEY-----\n&quot;,</span>
  600. <span class="no">&quot;client_email&quot;: &quot;test-service-account@external-secrets-operator.iam.gserviceaccount.com&quot;,</span>
  601. <span class="no">&quot;client_id&quot;: &quot;client ID&quot;,</span>
  602. <span class="no">&quot;auth_uri&quot;: &quot;https://accounts.google.com/o/oauth2/auth&quot;,</span>
  603. <span class="no">&quot;token_uri&quot;: &quot;https://oauth2.googleapis.com/token&quot;,</span>
  604. <span class="no">&quot;auth_provider_x509_cert_url&quot;: &quot;https://www.googleapis.com/oauth2/v1/certs&quot;,</span>
  605. <span class="no">&quot;client_x509_cert_url&quot;: &quot;https://www.googleapis.com/robot/v1/metadata/x509/test-service-account%40external-secrets-operator.iam.gserviceaccount.com&quot;</span>
  606. <span class="no">}</span>
  607. </code></pre></div>
  608. <h3 id="update-secret-store">Update secret store</h3>
  609. <p>Be sure the <code>gcpsm</code> provider is listed in the <code>Kind=SecretStore</code></p>
  610. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1alpha1</span>
  611. <span class="nt">kind</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  612. <span class="nt">metadata</span><span class="p">:</span>
  613. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">example</span>
  614. <span class="nt">spec</span><span class="p">:</span>
  615. <span class="nt">provider</span><span class="p">:</span>
  616. <span class="nt">gcpsm</span><span class="p">:</span> <span class="c1"># gcpsm provider</span>
  617. <span class="nt">auth</span><span class="p">:</span>
  618. <span class="nt">secretRef</span><span class="p">:</span>
  619. <span class="nt">secretAccessKeySecretRef</span><span class="p">:</span>
  620. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">gcpsm-secret</span> <span class="c1"># secret name containing SA key</span>
  621. <span class="nt">key</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">secret-access-credentials</span> <span class="c1"># key name containing SA key</span>
  622. <span class="nt">projectID</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">myproject</span> <span class="c1"># name of Google Cloud project</span>
  623. </code></pre></div>
  624. <h3 id="creating-external-secret">Creating external secret</h3>
  625. <p>To create a kubernetes secret from the GCP Secret Manager secret a <code>Kind=ExternalSecret</code> is needed.</p>
  626. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1alpha1</span>
  627. <span class="nt">kind</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">ExternalSecret</span>
  628. <span class="nt">metadata</span><span class="p">:</span>
  629. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">example</span>
  630. <span class="nt">spec</span><span class="p">:</span>
  631. <span class="nt">refreshInterval</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">1h</span> <span class="c1"># rate SecretManager pulls GCPSM</span>
  632. <span class="nt">secretStoreRef</span><span class="p">:</span>
  633. <span class="nt">kind</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  634. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">example</span> <span class="c1"># name of the SecretStore (or kind specified)</span>
  635. <span class="nt">target</span><span class="p">:</span>
  636. <span class="nt">name</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">secret-to-be-created</span> <span class="c1"># name of the k8s Secret to be created</span>
  637. <span class="nt">creationPolicy</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">Owner</span>
  638. <span class="nt">data</span><span class="p">:</span>
  639. <span class="p p-Indicator">-</span> <span class="nt">secretKey</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">dev-secret-test</span> <span class="c1"># name of the GCPSM secret key</span>
  640. <span class="nt">remoteRef</span><span class="p">:</span>
  641. <span class="nt">key</span><span class="p">:</span> <span class="l l-Scalar l-Scalar-Plain">dev-secret-test</span>
  642. </code></pre></div>
  643. <p>The operator will fetch the GCP Secret Manager secret and inject it as a <code>Kind=Secret</code>
  644. <div class="highlight"><pre><span></span><code>kubectl get secret secret-to-be-created -n &lt;namespace&gt; | -o jsonpath=&#39;{.data.dev-secret-test}&#39; | base64 -d
  645. </code></pre></div></p>
  646. <h2 id="authentication-with-workload-identity">Authentication with Workload Identity</h2>
  647. <p>This makes it possible for your Google Kubernetes Engine (GKE) applications to consume services provided by Google APIs, namely Secrets Manager service in this case.</p>
  648. <p>Here we will assume that you installed ESO using helm and that you named the chart installation <code>external-secrets</code> and the namespace where it lives <code>es</code> like:</p>
  649. <div class="highlight"><pre><span></span><code>helm install external-secrets external-secrets/external-secrets --namespace es
  650. </code></pre></div>
  651. <p>Then most of the resources would have this name, the important one here being the k8s service account attached to the external-secrets operator deployment:</p>
  652. <div class="highlight"><pre><span></span><code># ...
  653. containers:
  654. - image: ghcr.io/external-secrets/external-secrets:vVERSION
  655. name: external-secrets
  656. ports:
  657. - containerPort: 8080
  658. protocol: TCP
  659. restartPolicy: Always
  660. schedulerName: default-scheduler
  661. serviceAccount: external-secrets
  662. serviceAccountName: external-secrets # &lt;--- here
  663. </code></pre></div>
  664. <h3 id="following-the-documentation">Following the documentation</h3>
  665. <p>You can find the documentation for Workload Identity under <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">this url</a>. We will walk you through how to navigate it here.</p>
  666. <h4 id="changing-values">Changing Values</h4>
  667. <p>Search <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">the documment</a> for this editable values and change them to your values:</p>
  668. <ul>
  669. <li>CLUSTER_NAME: The name of your cluster</li>
  670. <li>PROJECT_ID: Your project ID (not your Project number nor your Project name)</li>
  671. <li>K8S_NAMESPACE: For us folowing these steps here it will be <code>es</code>, but this will be the namespace where you deployed the external-secrets operator</li>
  672. <li>KSA_NAME: external-secrets (if you are not creating a new one to attach to the deployemnt)</li>
  673. <li>GSA_NAME: external-secrets for simplicity, or something else if you have to follow different naming convetions for cloud resources</li>
  674. <li>ROLE_NAME: roles/secretmanager.secretAccessor so you make the pod only be able to access secrets on Secret Manager</li>
  675. </ul>
  676. <h4 id="following-through">Following through</h4>
  677. <p>You can follow through the documentation and adapt it to your specific use case. If you want to just use the serviceaccount that we deployed with the helm chart, for example, you don't need to create a new service account on 2 of <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#authenticating_to">Authenticating to Google Cloud</a>.</p>
  678. <h4 id="secretstore-with-workloadidentity">SecretStore with WorkloadIdentity</h4>
  679. <p>To use workload identity you can just omit the auth field of the secret store and let the operator client fall back to defaults using the roles attached to your service account.</p>
  680. <div class="highlight"><pre><span></span><code>apiVersion: external-secrets.io/v1alpha1
  681. kind: SecretStore
  682. metadata:
  683. name: example
  684. spec:
  685. provider:
  686. gcpsm:
  687. projectID: pid
  688. </code></pre></div>
  689. </article>
  690. </div>
  691. </div>
  692. </main>
  693. <footer class="md-footer">
  694. <nav class="md-footer__inner md-grid" aria-label="Footer">
  695. <a href="../provider-azure-key-vault/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Key Vault" rel="prev">
  696. <div class="md-footer__button md-icon">
  697. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
  698. </div>
  699. <div class="md-footer__title">
  700. <div class="md-ellipsis">
  701. <span class="md-footer__direction">
  702. Previous
  703. </span>
  704. Key Vault
  705. </div>
  706. </div>
  707. </a>
  708. <a href="../provider-ibm-secrets-manager/" class="md-footer__link md-footer__link--next" aria-label="Next: Secrets Manager" rel="next">
  709. <div class="md-footer__title">
  710. <div class="md-ellipsis">
  711. <span class="md-footer__direction">
  712. Next
  713. </span>
  714. Secrets Manager
  715. </div>
  716. </div>
  717. <div class="md-footer__button md-icon">
  718. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
  719. </div>
  720. </a>
  721. </nav>
  722. <div class="md-footer-meta md-typeset">
  723. <div class="md-footer-meta__inner md-grid">
  724. <div class="md-footer-copyright">
  725. Made with
  726. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  727. Material for MkDocs
  728. </a>
  729. </div>
  730. </div>
  731. </div>
  732. </footer>
  733. </div>
  734. <div class="md-dialog" data-md-component="dialog">
  735. <div class="md-dialog__inner md-typeset"></div>
  736. </div>
  737. <script id="__config" type="application/json">{"base": "..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "../assets/javascripts/workers/search.b0710199.min.js", "version": null}</script>
  738. <script src="../assets/javascripts/bundle.76f349be.min.js"></script>
  739. </body>
  740. </html>