generators.external-secrets.io_vaultdynamicsecrets.yaml 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. apiVersion: apiextensions.k8s.io/v1
  2. kind: CustomResourceDefinition
  3. metadata:
  4. annotations:
  5. controller-gen.kubebuilder.io/version: v0.14.0
  6. name: vaultdynamicsecrets.generators.external-secrets.io
  7. spec:
  8. group: generators.external-secrets.io
  9. names:
  10. categories:
  11. - vaultdynamicsecret
  12. kind: VaultDynamicSecret
  13. listKind: VaultDynamicSecretList
  14. plural: vaultdynamicsecrets
  15. shortNames:
  16. - vaultdynamicsecret
  17. singular: vaultdynamicsecret
  18. scope: Namespaced
  19. versions:
  20. - name: v1alpha1
  21. schema:
  22. openAPIV3Schema:
  23. properties:
  24. apiVersion:
  25. description: |-
  26. APIVersion defines the versioned schema of this representation of an object.
  27. Servers should convert recognized schemas to the latest internal value, and
  28. may reject unrecognized values.
  29. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  30. type: string
  31. kind:
  32. description: |-
  33. Kind is a string value representing the REST resource this object represents.
  34. Servers may infer this from the endpoint the client submits requests to.
  35. Cannot be updated.
  36. In CamelCase.
  37. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  38. type: string
  39. metadata:
  40. type: object
  41. spec:
  42. properties:
  43. controller:
  44. description: |-
  45. Used to select the correct ESO controller (think: ingress.ingressClassName)
  46. The ESO controller is instantiated with a specific controller name and filters VDS based on this property
  47. type: string
  48. method:
  49. description: Vault API method to use (GET/POST/other)
  50. type: string
  51. parameters:
  52. description: Parameters to pass to Vault write (for non-GET methods)
  53. x-kubernetes-preserve-unknown-fields: true
  54. path:
  55. description: Vault path to obtain the dynamic secret from
  56. type: string
  57. provider:
  58. description: Vault provider common spec
  59. properties:
  60. auth:
  61. description: Auth configures how secret-manager authenticates
  62. with the Vault server.
  63. properties:
  64. appRole:
  65. description: |-
  66. AppRole authenticates with Vault using the App Role auth mechanism,
  67. with the role and secret stored in a Kubernetes Secret resource.
  68. properties:
  69. path:
  70. default: approle
  71. description: |-
  72. Path where the App Role authentication backend is mounted
  73. in Vault, e.g: "approle"
  74. type: string
  75. roleId:
  76. description: |-
  77. RoleID configured in the App Role authentication backend when setting
  78. up the authentication backend in Vault.
  79. type: string
  80. roleRef:
  81. description: |-
  82. Reference to a key in a Secret that contains the App Role ID used
  83. to authenticate with Vault.
  84. The `key` field must be specified and denotes which entry within the Secret
  85. resource is used as the app role id.
  86. properties:
  87. key:
  88. description: |-
  89. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  90. defaulted, in others it may be required.
  91. type: string
  92. name:
  93. description: The name of the Secret resource being
  94. referred to.
  95. type: string
  96. namespace:
  97. description: |-
  98. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  99. to the namespace of the referent.
  100. type: string
  101. type: object
  102. secretRef:
  103. description: |-
  104. Reference to a key in a Secret that contains the App Role secret used
  105. to authenticate with Vault.
  106. The `key` field must be specified and denotes which entry within the Secret
  107. resource is used as the app role secret.
  108. properties:
  109. key:
  110. description: |-
  111. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  112. defaulted, in others it may be required.
  113. type: string
  114. name:
  115. description: The name of the Secret resource being
  116. referred to.
  117. type: string
  118. namespace:
  119. description: |-
  120. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  121. to the namespace of the referent.
  122. type: string
  123. type: object
  124. required:
  125. - path
  126. - secretRef
  127. type: object
  128. cert:
  129. description: |-
  130. Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate
  131. Cert authentication method
  132. properties:
  133. clientCert:
  134. description: |-
  135. ClientCert is a certificate to authenticate using the Cert Vault
  136. authentication method
  137. properties:
  138. key:
  139. description: |-
  140. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  141. defaulted, in others it may be required.
  142. type: string
  143. name:
  144. description: The name of the Secret resource being
  145. referred to.
  146. type: string
  147. namespace:
  148. description: |-
  149. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  150. to the namespace of the referent.
  151. type: string
  152. type: object
  153. secretRef:
  154. description: |-
  155. SecretRef to a key in a Secret resource containing client private key to
  156. authenticate with Vault using the Cert authentication method
  157. properties:
  158. key:
  159. description: |-
  160. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  161. defaulted, in others it may be required.
  162. type: string
  163. name:
  164. description: The name of the Secret resource being
  165. referred to.
  166. type: string
  167. namespace:
  168. description: |-
  169. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  170. to the namespace of the referent.
  171. type: string
  172. type: object
  173. type: object
  174. iam:
  175. description: |-
  176. Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials
  177. AWS IAM authentication method
  178. properties:
  179. externalID:
  180. description: AWS External ID set on assumed IAM roles
  181. type: string
  182. jwt:
  183. description: Specify a service account with IRSA enabled
  184. properties:
  185. serviceAccountRef:
  186. description: A reference to a ServiceAccount resource.
  187. properties:
  188. audiences:
  189. description: |-
  190. Audience specifies the `aud` claim for the service account token
  191. If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity
  192. then this audiences will be appended to the list
  193. items:
  194. type: string
  195. type: array
  196. name:
  197. description: The name of the ServiceAccount resource
  198. being referred to.
  199. type: string
  200. namespace:
  201. description: |-
  202. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  203. to the namespace of the referent.
  204. type: string
  205. required:
  206. - name
  207. type: object
  208. type: object
  209. path:
  210. description: 'Path where the AWS auth method is enabled
  211. in Vault, e.g: "aws"'
  212. type: string
  213. region:
  214. description: AWS region
  215. type: string
  216. role:
  217. description: This is the AWS role to be assumed before
  218. talking to vault
  219. type: string
  220. secretRef:
  221. description: Specify credentials in a Secret object
  222. properties:
  223. accessKeyIDSecretRef:
  224. description: The AccessKeyID is used for authentication
  225. properties:
  226. key:
  227. description: |-
  228. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  229. defaulted, in others it may be required.
  230. type: string
  231. name:
  232. description: The name of the Secret resource being
  233. referred to.
  234. type: string
  235. namespace:
  236. description: |-
  237. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  238. to the namespace of the referent.
  239. type: string
  240. type: object
  241. secretAccessKeySecretRef:
  242. description: The SecretAccessKey is used for authentication
  243. properties:
  244. key:
  245. description: |-
  246. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  247. defaulted, in others it may be required.
  248. type: string
  249. name:
  250. description: The name of the Secret resource being
  251. referred to.
  252. type: string
  253. namespace:
  254. description: |-
  255. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  256. to the namespace of the referent.
  257. type: string
  258. type: object
  259. sessionTokenSecretRef:
  260. description: |-
  261. The SessionToken used for authentication
  262. This must be defined if AccessKeyID and SecretAccessKey are temporary credentials
  263. see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html
  264. properties:
  265. key:
  266. description: |-
  267. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  268. defaulted, in others it may be required.
  269. type: string
  270. name:
  271. description: The name of the Secret resource being
  272. referred to.
  273. type: string
  274. namespace:
  275. description: |-
  276. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  277. to the namespace of the referent.
  278. type: string
  279. type: object
  280. type: object
  281. vaultAwsIamServerID:
  282. description: 'X-Vault-AWS-IAM-Server-ID is an additional
  283. header used by Vault IAM auth method to mitigate against
  284. different types of replay attacks. More details here:
  285. https://developer.hashicorp.com/vault/docs/auth/aws'
  286. type: string
  287. vaultRole:
  288. description: Vault Role. In vault, a role describes an
  289. identity with a set of permissions, groups, or policies
  290. you want to attach a user of the secrets engine
  291. type: string
  292. required:
  293. - vaultRole
  294. type: object
  295. jwt:
  296. description: |-
  297. Jwt authenticates with Vault by passing role and JWT token using the
  298. JWT/OIDC authentication method
  299. properties:
  300. kubernetesServiceAccountToken:
  301. description: |-
  302. Optional ServiceAccountToken specifies the Kubernetes service account for which to request
  303. a token for with the `TokenRequest` API.
  304. properties:
  305. audiences:
  306. description: |-
  307. Optional audiences field that will be used to request a temporary Kubernetes service
  308. account token for the service account referenced by `serviceAccountRef`.
  309. Defaults to a single audience `vault` it not specified.
  310. Deprecated: use serviceAccountRef.Audiences instead
  311. items:
  312. type: string
  313. type: array
  314. expirationSeconds:
  315. description: |-
  316. Optional expiration time in seconds that will be used to request a temporary
  317. Kubernetes service account token for the service account referenced by
  318. `serviceAccountRef`.
  319. Deprecated: this will be removed in the future.
  320. Defaults to 10 minutes.
  321. format: int64
  322. type: integer
  323. serviceAccountRef:
  324. description: Service account field containing the
  325. name of a kubernetes ServiceAccount.
  326. properties:
  327. audiences:
  328. description: |-
  329. Audience specifies the `aud` claim for the service account token
  330. If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity
  331. then this audiences will be appended to the list
  332. items:
  333. type: string
  334. type: array
  335. name:
  336. description: The name of the ServiceAccount resource
  337. being referred to.
  338. type: string
  339. namespace:
  340. description: |-
  341. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  342. to the namespace of the referent.
  343. type: string
  344. required:
  345. - name
  346. type: object
  347. required:
  348. - serviceAccountRef
  349. type: object
  350. path:
  351. default: jwt
  352. description: |-
  353. Path where the JWT authentication backend is mounted
  354. in Vault, e.g: "jwt"
  355. type: string
  356. role:
  357. description: |-
  358. Role is a JWT role to authenticate using the JWT/OIDC Vault
  359. authentication method
  360. type: string
  361. secretRef:
  362. description: |-
  363. Optional SecretRef that refers to a key in a Secret resource containing JWT token to
  364. authenticate with Vault using the JWT/OIDC authentication method.
  365. properties:
  366. key:
  367. description: |-
  368. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  369. defaulted, in others it may be required.
  370. type: string
  371. name:
  372. description: The name of the Secret resource being
  373. referred to.
  374. type: string
  375. namespace:
  376. description: |-
  377. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  378. to the namespace of the referent.
  379. type: string
  380. type: object
  381. required:
  382. - path
  383. type: object
  384. kubernetes:
  385. description: |-
  386. Kubernetes authenticates with Vault by passing the ServiceAccount
  387. token stored in the named Secret resource to the Vault server.
  388. properties:
  389. mountPath:
  390. default: kubernetes
  391. description: |-
  392. Path where the Kubernetes authentication backend is mounted in Vault, e.g:
  393. "kubernetes"
  394. type: string
  395. role:
  396. description: |-
  397. A required field containing the Vault Role to assume. A Role binds a
  398. Kubernetes ServiceAccount with a set of Vault policies.
  399. type: string
  400. secretRef:
  401. description: |-
  402. Optional secret field containing a Kubernetes ServiceAccount JWT used
  403. for authenticating with Vault. If a name is specified without a key,
  404. `token` is the default. If one is not specified, the one bound to
  405. the controller will be used.
  406. properties:
  407. key:
  408. description: |-
  409. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  410. defaulted, in others it may be required.
  411. type: string
  412. name:
  413. description: The name of the Secret resource being
  414. referred to.
  415. type: string
  416. namespace:
  417. description: |-
  418. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  419. to the namespace of the referent.
  420. type: string
  421. type: object
  422. serviceAccountRef:
  423. description: |-
  424. Optional service account field containing the name of a kubernetes ServiceAccount.
  425. If the service account is specified, the service account secret token JWT will be used
  426. for authenticating with Vault. If the service account selector is not supplied,
  427. the secretRef will be used instead.
  428. properties:
  429. audiences:
  430. description: |-
  431. Audience specifies the `aud` claim for the service account token
  432. If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity
  433. then this audiences will be appended to the list
  434. items:
  435. type: string
  436. type: array
  437. name:
  438. description: The name of the ServiceAccount resource
  439. being referred to.
  440. type: string
  441. namespace:
  442. description: |-
  443. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  444. to the namespace of the referent.
  445. type: string
  446. required:
  447. - name
  448. type: object
  449. required:
  450. - mountPath
  451. - role
  452. type: object
  453. ldap:
  454. description: |-
  455. Ldap authenticates with Vault by passing username/password pair using
  456. the LDAP authentication method
  457. properties:
  458. path:
  459. default: ldap
  460. description: |-
  461. Path where the LDAP authentication backend is mounted
  462. in Vault, e.g: "ldap"
  463. type: string
  464. secretRef:
  465. description: |-
  466. SecretRef to a key in a Secret resource containing password for the LDAP
  467. user used to authenticate with Vault using the LDAP authentication
  468. method
  469. properties:
  470. key:
  471. description: |-
  472. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  473. defaulted, in others it may be required.
  474. type: string
  475. name:
  476. description: The name of the Secret resource being
  477. referred to.
  478. type: string
  479. namespace:
  480. description: |-
  481. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  482. to the namespace of the referent.
  483. type: string
  484. type: object
  485. username:
  486. description: |-
  487. Username is a LDAP user name used to authenticate using the LDAP Vault
  488. authentication method
  489. type: string
  490. required:
  491. - path
  492. - username
  493. type: object
  494. tokenSecretRef:
  495. description: TokenSecretRef authenticates with Vault by presenting
  496. a token.
  497. properties:
  498. key:
  499. description: |-
  500. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  501. defaulted, in others it may be required.
  502. type: string
  503. name:
  504. description: The name of the Secret resource being referred
  505. to.
  506. type: string
  507. namespace:
  508. description: |-
  509. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  510. to the namespace of the referent.
  511. type: string
  512. type: object
  513. userPass:
  514. description: UserPass authenticates with Vault by passing
  515. username/password pair
  516. properties:
  517. path:
  518. default: user
  519. description: |-
  520. Path where the UserPassword authentication backend is mounted
  521. in Vault, e.g: "user"
  522. type: string
  523. secretRef:
  524. description: |-
  525. SecretRef to a key in a Secret resource containing password for the
  526. user used to authenticate with Vault using the UserPass authentication
  527. method
  528. properties:
  529. key:
  530. description: |-
  531. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  532. defaulted, in others it may be required.
  533. type: string
  534. name:
  535. description: The name of the Secret resource being
  536. referred to.
  537. type: string
  538. namespace:
  539. description: |-
  540. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  541. to the namespace of the referent.
  542. type: string
  543. type: object
  544. username:
  545. description: |-
  546. Username is a user name used to authenticate using the UserPass Vault
  547. authentication method
  548. type: string
  549. required:
  550. - path
  551. - username
  552. type: object
  553. type: object
  554. caBundle:
  555. description: |-
  556. PEM encoded CA bundle used to validate Vault server certificate. Only used
  557. if the Server URL is using HTTPS protocol. This parameter is ignored for
  558. plain HTTP protocol connection. If not set the system root certificates
  559. are used to validate the TLS connection.
  560. format: byte
  561. type: string
  562. caProvider:
  563. description: The provider for the CA bundle to use to validate
  564. Vault server certificate.
  565. properties:
  566. key:
  567. description: The key where the CA certificate can be found
  568. in the Secret or ConfigMap.
  569. type: string
  570. name:
  571. description: The name of the object located at the provider
  572. type.
  573. type: string
  574. namespace:
  575. description: |-
  576. The namespace the Provider type is in.
  577. Can only be defined when used in a ClusterSecretStore.
  578. type: string
  579. type:
  580. description: The type of provider to use such as "Secret",
  581. or "ConfigMap".
  582. enum:
  583. - Secret
  584. - ConfigMap
  585. type: string
  586. required:
  587. - name
  588. - type
  589. type: object
  590. forwardInconsistent:
  591. description: |-
  592. ForwardInconsistent tells Vault to forward read-after-write requests to the Vault
  593. leader instead of simply retrying within a loop. This can increase performance if
  594. the option is enabled serverside.
  595. https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header
  596. type: boolean
  597. namespace:
  598. description: |-
  599. Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows
  600. Vault environments to support Secure Multi-tenancy. e.g: "ns1".
  601. More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
  602. type: string
  603. path:
  604. description: |-
  605. Path is the mount path of the Vault KV backend endpoint, e.g:
  606. "secret". The v2 KV secret engine version specific "/data" path suffix
  607. for fetching secrets from Vault is optional and will be appended
  608. if not present in specified path.
  609. type: string
  610. readYourWrites:
  611. description: |-
  612. ReadYourWrites ensures isolated read-after-write semantics by
  613. providing discovered cluster replication states in each request.
  614. More information about eventual consistency in Vault can be found here
  615. https://www.vaultproject.io/docs/enterprise/consistency
  616. type: boolean
  617. server:
  618. description: 'Server is the connection address for the Vault server,
  619. e.g: "https://vault.example.com:8200".'
  620. type: string
  621. tls:
  622. description: |-
  623. The configuration used for client side related TLS communication, when the Vault server
  624. requires mutual authentication. Only used if the Server URL is using HTTPS protocol.
  625. This parameter is ignored for plain HTTP protocol connection.
  626. It's worth noting this configuration is different from the "TLS certificates auth method",
  627. which is available under the `auth.cert` section.
  628. properties:
  629. certSecretRef:
  630. description: |-
  631. CertSecretRef is a certificate added to the transport layer
  632. when communicating with the Vault server.
  633. If no key for the Secret is specified, external-secret will default to 'tls.crt'.
  634. properties:
  635. key:
  636. description: |-
  637. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  638. defaulted, in others it may be required.
  639. type: string
  640. name:
  641. description: The name of the Secret resource being referred
  642. to.
  643. type: string
  644. namespace:
  645. description: |-
  646. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  647. to the namespace of the referent.
  648. type: string
  649. type: object
  650. keySecretRef:
  651. description: |-
  652. KeySecretRef to a key in a Secret resource containing client private key
  653. added to the transport layer when communicating with the Vault server.
  654. If no key for the Secret is specified, external-secret will default to 'tls.key'.
  655. properties:
  656. key:
  657. description: |-
  658. The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be
  659. defaulted, in others it may be required.
  660. type: string
  661. name:
  662. description: The name of the Secret resource being referred
  663. to.
  664. type: string
  665. namespace:
  666. description: |-
  667. Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults
  668. to the namespace of the referent.
  669. type: string
  670. type: object
  671. type: object
  672. version:
  673. default: v2
  674. description: |-
  675. Version is the Vault KV secret engine version. This can be either "v1" or
  676. "v2". Version defaults to "v2".
  677. enum:
  678. - v1
  679. - v2
  680. type: string
  681. required:
  682. - auth
  683. - server
  684. type: object
  685. resultType:
  686. default: Data
  687. description: |-
  688. Result type defines which data is returned from the generator.
  689. By default it is the "data" section of the Vault API response.
  690. When using e.g. /auth/token/create the "data" section is empty but
  691. the "auth" section contains the generated token.
  692. Please refer to the vault docs regarding the result data structure.
  693. enum:
  694. - Data
  695. - Auth
  696. type: string
  697. required:
  698. - path
  699. - provider
  700. type: object
  701. type: object
  702. served: true
  703. storage: true
  704. subresources:
  705. status: {}