Freigeben über


Azure Key Vault Secret Store-Erweiterungskonfigurationsreferenz

Der SSE kann an drei Stellen konfiguriert werden: Konfigurationseinstellung für arc-Infrastruktur beim Erstellen oder Aktualisieren der Erweiterung, SecretSync Kubernetes-Ressourcen und SecretProviderClass kubernetes-Ressourcen.

Konfigurationseinstellungen für Arc-Erweiterungen

Konfigurationseinstellungen können festgelegt werden, wenn die SSE Arc-Erweiterungsinstanz erstellt wird, oder sie können später aktualisiert werden. az k8s-extension create ... az k8s-extension update ... Verwenden Oder --configuration-settings <setting>=<value> zum Erstellen oder Aktualisieren einer SSE-Instanz.

SSE akzeptiert die folgenden Arc-Erweiterungskonfigurationsparameter:

Parametername BESCHREIBUNG Standardwert
rotationPollIntervalInSeconds Gibt an, wie schnell die SSE das von ihr verwaltete Geheimnis überprüft oder aktualisiert. 3600 (1 Stunde)
enablePartialSecretSync Wenn dieser Wert auf false einen geheimen Schlüssel festgelegt ist, wird nur aktualisiert, wenn jedes enthaltene Element erfolgreich aus Azure Key Vault (AKV) abgerufen werden konnte. Wenn true jedes Element in einem geheimen Schlüssel aktualisiert wird, wenn es erfolgreich abgerufen wurde, ohne den Erfolg anderer Elemente im Geheimen zu berücksichtigen. true

SecretSync-Ressourcen

SecretSync-Ressourcen konfigurieren, wie geheime Schlüssel und Zertifikate von SSE im Kubernetes-Geheimspeicher gespeichert werden. Jede SecretSync-Ressource definiert einen Kubernetes-Schlüssel, obwohl er möglicherweise mehr als einen geheimen Schlüssel enthält.

Beispiel

apiVersion: secret-sync.x-k8s.io/v1alpha1
kind: SecretSync
metadata:
  name: secret-sync-name
  namespace: workload-namespace
spec:
  serviceAccountName: workload-serviceaccountname
  secretProviderClassName: secret-provider-class-name
  secretObject:
    type: Opaque
    data:
    - sourcePath: aSecret/0
      targetKey: aSecret-data-key0
    - sourcePath: aSecret/1
      targetKey: aSecret-data-key1
    labels:
      - fromExample: absolutelyYes
    annotations:
      - exampleAnnotation: annotationValue 
  forceSynchronization: ArbitraryValue12354

Werte

  • metadata.name(erforderlich): Der Name dieser SecretSync-Ressource. Hinweis: Die automatisch erstellte geheime Ressource hat denselben Namen wie diese Ressource.

Innerhalb von .spec:

  • serviceAccountName(required): Das Kubernetes-Dienstkonto, das für den Zugriff auf den Kubernetes-Geheimspeicher verwendet wird. Dieses Dienstkonto sollte mit der verwalteten Identität mit dem Zugriff auf die geheimen Schlüssel in Azure Key Vault verbunden werden.
  • secretProviderClassName(required): Der Name der SecretProviderClass-Ressource, die definiert, welche geheimen Schlüssel aus Azure Key Vault abgerufen werden sollen.
  • secretObject(required): Definiert, wie die gespeicherte geheime Ressource strukturiert werden soll.
    • type(required): Der Typ des Kubernetes-Geheimobjekts. Legen Sie dieses Feld auf Opaque einen allgemeinen Geheimschlüssel ohne auferlegte Struktur fest. Unter "Typen von Kubernetes-Geheimnissen " finden Sie Anleitungen dazu, wie die speziellen geheimen Typen strukturiert werden müssen.
    • data(required): Eine Liste der Datenelemente innerhalb der geheimen Ressource. Es muss mindestens ein Element vorhanden sein. Jedes Datenelement muss diese beiden Felder enthalten:
      • sourcePath(required): Der Pfad zu einem Element, das von AKV abgerufen wurde. Wenn nur eine Version des benannten Geheimen von AKV abgerufen wird, ist der Pfad einfach <secret name>.
        Wenn mehr als eine Version des benannten geheimen Schlüssels von AKV abgerufen wird, lautet <secret name>/0der SourcePath der neuesten Version , der zweite neueste ist <secret name>/1usw.
        Wenn ein Zertifikat von AKV abgerufen wird, hängen die SourcePaths vom Wert objectType der SecretProviderClass ab. Wenn der objectType SPC "geheim" ist, sind sowohl ein Zertifikat als auch ein privater Schlüssel unter sourcePaths von <secret name>/tls.crt bzw <secret name>/tls.key . verfügbar.
      • targetKey(required): Der Schlüssel im Kubernetes-Geheimobjekt zum Speichern der Daten.
    • labels(optional): Eine Liste der Schlüsselwertpaare zusätzlicher Bezeichnungen, die auf das geheime Objekt angewendet werden sollen.
    • annotations(optional): Eine Liste der Schlüsselwertpaare mit zusätzlichen Anmerkungen, die auf das geheime Objekt angewendet werden sollen.
    • forceSynchronization(optional): Änderungen an diesem Feld lösen SSE aus, um AKV auf Änderungen erneut zu überprüfen. Kubernetes wird wie gewohnt aktualisiert, wenn SSE aktualisierte Daten findet. Der Wert dieses Felds wirkt sich nicht auf das Verhalten des SSE aus.

SecretProviderClass-Ressourcen

SecretProviderClass-Ressourcen konfigurieren, was und wie aus einem Azure Key Vault abgerufen werden kann. In dieser Referenz werden nur die Felder behandelt, die für die SSE-Anwendungsfälle der SecretProviderClass erforderlich sind.

Beispiel

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: secret-provider-class-name
  namespace: workload-namespace
spec:
  provider: azure
  parameters:
    clientID: "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
    tenantID: "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
    keyvaultName: exampleKeyvault
    objects: |
      array:
        - |
          objectName: aSecret
          objectType: secret
          objectVersionHistory: 2
        - |
          objectName: aCertificate
          objectType: secret

Werte

Innerhalb von .spec:

  • provider(required): Legen Sie dieses Feld bei Verwendung von SSE fest azure , um geheime Schlüssel aus Azure Key Vault abzurufen.
  • parameters(required): Definiert, wie und wo AKV-Schlüssel abgerufen werden sollen.
    • clientID(required): Die Client-ID für die verwaltete Identität mit Zugriff auf die erforderlichen geheimen Schlüssel. Diese verwaltete Identität muss über eine Verbundanmeldeinformation verfügen, die mit dem Dienstkonto verknüpft ist, das in der SecretSync-Ressource benannt ist, die diese SecretProviderClass verwendet.
    • tenantID(required): Die ID des Azure-Mandanten, der die AKV-Instanz enthält.
    • keyvaultName(required): Der Name des keyvault.
    • objects(required): Eine Zeichenfolge mit einem YAML-Fragment, das die elemente darstellt, die von diesem AKV abgerufen werden sollen. Achten Sie auf das Beispiel, um zu sehen, wie das Objektfeld erstellt wird. Weitere Beispiele für SecretProviderClass-Ressourcen für die Verwendung mit Azure Key Vault finden Sie in den AKV-Anbieterdokumenten. Objekte müssen mindestens ein Element innerhalb des Unterobjekts "array" enthalten.
      • objectName(required): Der Name des geheimen Schlüssels oder Zertifikats, das von AKV abgerufen werden soll.
      • objectType(required): Legen Sie dieses Feld secret beim Abrufen eines geheimen Schlüssels von AKV fest.
        Legen Sie beim Abrufen eines Zertifikats dieses Feld auf Folgendes fest:
        • cert um nur das Zertifikat abzurufen.
        • key um nur den öffentlichen Schlüssel des Zertifikats abzurufen.
        • secret um das Zertifikat und den privaten Schlüssel abzurufen.
      • objectVersionHistory(optional): Wenn vorhanden und größer als eins ist, werden diese vielen Versionen von AKV abgerufen, beginnend mit der neuesten Version.