Zum Hauptinhalt springen
Version: Weekly Build

Vorbereitende Schritte

hinweis

Nicht jede Codesphere-Instanz bietet Confidential Compute an. Frage deinen Codesphere-Administrator, ob Confidential Compute auf deiner Instanz verfügbar ist. Siehe Voraussetzungen.

Jeder vertrauliche Dienst benötigt einen Trustee Service, der ihn beim Start verifiziert und seine Geheimnisse freigibt. Der Trustee Service läuft außerhalb von Codesphere und wird von deinem Trustee-Provider betrieben. Führe die folgenden Schritte aus, bevor du einen vertraulichen Workspace oder Managed Service bereitstellst.

Einen vertraulichen Workload anfordern​

Vertrauliche Dienste, die zusammenarbeiten, laufen unter einem gemeinsamen Workload. Der Trustee-Provider richtet den Workload ein, daher muss er zuerst dort angefragt werden.

  1. Kontaktiere deinen Trustee-Provider und beschreibe, was du ausführen möchtest, zum Beispiel:
    • Die Dienste, die zum Workload gehören, etwa eine Anwendung und ihre Datenbank
    • Die Images, die diese Dienste ausführen, referenziert über Digest oder Signierschlüssel
    • Die Codesphere-Instanz, auf der die Dienste laufen
  2. Der Trustee-Provider erstellt eine Policy für den Workload. Die Policy entscheidet, welche Images unter dem Workload laufen dürfen und welche Geheimnisse sie erhalten.
  3. Du erhältst:
    • Die Workload-ID
    • Die Adresse des Trustee Service
    • Zugriff auf einen Vault im Trustee Service für die Anwendungsgeheimnisse dieses Workloads

Die Trustee-Service-Adresse und die Workload-ID gibst du ein, wenn du einen vertraulichen Workspace oder einen vertraulichen Managed Service erstellst. Verwende dieselbe Workload-ID für jeden Dienst des Workloads.

Geheimnisse im Vault des Trustee Service verwalten​

In einem regulären Workspace referenzierst du Geheimnisse in deiner ci.yml mit der Syntax ${{ vault.KEY }}, und Codesphere speichert ihre Werte in einem von Codesphere verwalteten Vault. Jeder Workspace verfügt entweder über einen eigenen Vault oder kann einen gemeinsamen Vault seiner Resource Group nutzen. Siehe Geheimnisverwaltung.

Vertrauliche Dienste haben keinen Zugriff auf einen Codesphere-Vault, da dieser Teil der nicht vertrauenswürdigen Plattform ist. Ihre Anwendungsgeheimnisse werden stattdessen im Vault des Trustee Service gespeichert. Der Trustee Service gibt sie erst an einen Dienst frei, nachdem dieser die Attestation erfolgreich durchlaufen hat. Siehe Geheimnisverteilung.

Analog zum Konzept der gemeinsamen Vaults teilen sich alle vertraulichen Dienste desselben Workloads einen Namespace im Vault des Trustee Service. Wenn du mehrere Dienste für denselben Workload bereitstellst, achte auf unbeabsichtigte Namenskollisionen.

Falls ein Geheimnis noch nicht existiert, generiert der Trustee Service dafür einen zufälligen Wert. Dies funktioniert gut für Geheimnisse, die nur innerhalb des Workloads verwendet werden, etwa Datenbank-Zugangsdaten, die von einer Anwendung und ihrer Datenbank gemeinsam genutzt werden.

Schreibe ein Geheimnis selbst in den Vault, wenn es einem bestimmten Format folgen muss oder von einem Drittanbieter stammt. Speichere es unter diesem Pfad:

buckypaper/<workloadId>/app-secrets/<vaultPath>

Ein vertraulicher Dienst referenziert seine Geheimnisse auf die gleiche Weise wie ein regulärer Dienst. Codesphere ruft sie zum Zeitpunkt des Deployments nicht aus dem eigenen Vault ab. Der Trustee Service löst sie nach der Attestation auf.

run:
backend:
env:
DATABASE_PASSWORD: ${{ vault.DATABASE_PASSWORD }}

Mit dieser Konfiguration liest ein regulärer Workspace DATABASE_PASSWORD aus dem Codesphere-Vault. Ein vertraulicher Workspace liest es aus dem Vault des Trustee Service unter buckypaper/<workloadId>/app-secrets/DATABASE_PASSWORD. Die ci.yml muss dafür nicht geändert werden.

warnung

Setze keine sensiblen Werte in einfache Umgebungsvariablen in deiner ci.yml. Sie sind für die Plattform sichtbar.