Secrets verwalten

Vault Secrets, Secrettags und Secret-Regeln erstellen und verwalten

Da die Verwendung von OCI-Cloud-Services wichtig ist, ist es wichtig, Secrets in seinem digitalen Tresor zu speichern, abzurufen und zu verwalten. Secrets können ein Kennwort, Zertifikate, SSH-Schlüssel oder Authentifizierungstoken sein, die Sie für die Verbindung zu OCI-Services und -Systemen verwenden. Das Speichern von Secrets in OCI Vault bietet mehr Sicherheit als das Speichern in einem Code oder in Konfigurationsdateien. Die Anwendung kommuniziert mit dem OCI Secret Management, um das Secret abzurufen und eine Verbindung zum Zielservice herzustellen.

Mit Oracle Cloud Infrastructure Secret Management können Sie sensible Daten wie API-Schlüssel, Kennwörter und Verschlüsselungsschlüssel mühelos mit Secrets schützen. Es bietet eine robuste Lösung zum sicheren Erstellen, Speichern, Verwalten und Zugreifen auf diese Geheimnisse. Der zentrale Speicher, den er bereitstellt, nutzt die Hardwaresicherheitsmodule (HSMs) und eine granulare Zugriffskontrolle, um die Sicherheit und Integrität kritischer Informationen zu gewährleisten. Verwenden Sie OCI Secret Management, um die Einbettung von Secrets direkt in Anwendungen zu eliminieren, die Angriffsfläche zu reduzieren und die Gesamtsicherheit einer Anwendung zu stärken.

Automatische Secret-Generierung und -Rotation

Wenn ein Secret generiert wird, wird es regelmäßig aktualisiert. Sie können ein Secret manuell aktualisieren oder automatisch festlegen. Die automatische Generierung und Rotation von Secrets entlastet das Festlegen von Secrets manuell und das Rotieren mit Skripten. Stattdessen bietet es eine effiziente Möglichkeit, Secrets von der Erstellung, Rotation und Löschung zu verwalten.

Das Feature zur automatischen Secret-Generierung unterstützt die Verwendung von Vorlagen für die Secret-Generierung. Mit automatischer Secret-Rotation können Sie ein Secret-Intervall von 1 bis 12 Monaten festlegen. Das Feature lässt sich in Autonomous Database- und Funktionsservices integrieren, sodass Sie ein Secret aktualisieren können, das in Autonomous Database- oder Functions-Code verwendet wird. In OCI Functions können Sie mit der automatischen Rotation von Secrets ganz einfach Zugangsdaten rotieren und Code als Teil des Rotationsprozesses ausführen. Das Feature "Automatisierungs-Secret-Rotation" ist auch für manuell erstellte Secrets verfügbar.

Regionsübergreifende Replikation von Secrets

Sie können ein Secret in bis zu drei Zielregionen replizieren. Die Replikate sind schreibgeschützt und übernehmen Änderungen, die am Quell-Secret vorgenommen wurden. Weitere Informationen finden Sie unter Secrets replizieren.

Vorteile der automatischen Secret Rotation

Im Folgenden sind die Vorteile der automatischen Secret-Rotation aufgeführt:
  • Verbesserte Sicherheit: Die regelmäßige Aktualisierung Ihrer Geheimnisse minimiert die Auswirkungen kompromittierter Zugangsdaten, die zu einer Datenverletzung führen.
  • Betriebseffizienz: Die Automatisierung manueller Aufgaben wie Erstellen, Drehen eines Geheimnisses spart Zeit und Effizienz.
  • Regulierte Compliance: Halten Sie sich an viele Standards, die Compliance für geheime Rotation und Automatisierung regeln.
  • Reduzierte menschliche Fehler: Die Automatisierung sich wiederholender Aufgaben reduziert die Möglichkeit menschlicher Fehler, um die Sicherheit zu erhöhen.

Secret-Generierung

Sie können ein Secret für Passphrases, SSH-Schlüssel und Byte generieren. Alle Secrets, die OCI Vault generiert, sind FIPS- und sicherheitskonform. Sie können ein Secret mit der OCI-Konsole, -API oder -CLI generieren. Wenn Sie ein Secret generieren, müssen Sie den Secret-Kontext angeben und die Secret-Vorlage definieren. Der Secret-Kontext definiert den Secret-Typ und die Secret-Struktur. Je nach ausgewähltem Secret-Typ unterstützt Vault verschiedene Secret-Generierungsvorlagen.

Sie können die folgenden Secret-Typen generieren:
  • PASSPHRASE: Generieren Sie Kennwörter mit einer Länge von bis zu 32 Zeichen. Bei Standardkennwörtern für den OCI Database-Service beträgt die maximale Zeichenlänge 30.
  • SSH_KEY: Generieren Sie RSA-Schlüsselpaare mit der Länge 2048, 3072 und 4096. Der Private Key wird im PKCS#8 PEM-Format gespeichert und der Public Key wird im X.509 PEM-Format gespeichert.
  • BYTES: Generieren Sie 512 und 1024 Byte, die ein Binär-Secret für FIPS-Beschwerde sind. Byte sind base64-Code.

Secret-Typen und Standardvorlagen

  • PASSPHRASE
    • Unterstützte Vorlagen: SECRETS_DEFAULT_PASSWORD und DBAAS_DEFAULT_PASSWORD
    • Platzhalter in Secret-Vorlage: %GENERATED_PASSPHRASE%
    • Beispiel: {"user": "abc", "pwd": "%GENERATED_PASSPHRASE%"}
  • SSH_KEY
    • Unterstützte Vorlagen: RSA_2048, RSA_3072, RSA_4096
    • Platzhalter in Secret-Vorlage: %GENERATED_PUBLIC_KEY%, %GENERATED_PRIVATE_KEY%
    • Beispiel: {"publicKey": "%GENERATED_PRIVATE_KEY%", "privateKey": "%GENERATED_PRIVATE_KEY%"} → {"publicKey": "-----BEGIN PUBLIC KEY-----\nBase64 encoded public key\n-----END PUBLIC KEY-----", "privateKey":"-----BEGIN PRIVATE KEY-----\nBase64 encoded private key\n-----END PRIVATE KEY-----"}
  • BYTES
    • Unterstützte Vorlagen: BYTES_512, BYTES_1024
    • Platzhalter in Secret-Vorlage: %GENERATED_BYTES%
    • Beispiel: {"host": "abc", "hostLuksKey": "%GENERATED_BYTES%"} → {"host": "abc", "hostLuksKey": "generatedbyteshere=="}

Secret-Versionen und Rotationsstatus

Erfahren Sie mehr über Vault Secret-Versionen, Rotationsstatus und die Auswirkungen der Secret-Versionsbeschränkung.

Mithilfe dieser Erläuterungen zu Vault Secret-Versionen und Rotationsstatus kann Sie Secret-Inhalte verfolgen und verwalten, um eventuelle Limits, Rotations- oder andere Regeln bzw. Vorschriften einzuhalten.

Eine allgemeine Definition der Secret-Konzepte, einschließlich Secret-Versionen und Rotationsstatus, finden Sie unter Konzepte der Schlüssel- und Secret-Verwaltung. Informationen zum Arbeiten mit Secret-Versionen finden Sie unter Secrets verwalten.

Rotationsfunktionen

Rotationsfunktionen sind für die Rotation der Secrets im Secret Service verantwortlich. Blenden Sie den folgenden Abschnitt ein, um mehr über die vier Schritte in einer Rotationsfunktion zu erfahren und Beispiel-Handler-Code anzuzeigen

Schritte und Details der Rotationsfunktion

Die Rotationsfunktionen umfassten die folgenden vier Schritte:

  1. VERIFY_CONNECTION: Prüft die Verbindung zum Zielsystem mit den vorhandenen Zugangsdaten, die im Secret gespeichert sind.
  2. CREATE_PENDING_VERSION: Erstellt eine neue ausstehende Secret-Version im Secret.
  3. UPDATE_TARGET_SYSTEM: Aktualisiert das Zielsystem mit den Zugangsdaten, die in der ausstehenden Secret-Version gespeichert sind, die im zweiten Schritt erstellt wurde.
  4. PROMOTE_PENDING_VERSION: Aktualisiert den Status des Secrets von "Ausstehend" in "Aktuell".

Funktions-Handler:

Der Funktions-Handler muss die Logik enthalten, um den entsprechenden Rotationsschritt basierend auf dem Schrittparameter aufzurufen. Dies kann entweder mit IF ELSE bedingten Anweisungen oder mit Switch Case erreicht werden. Der Funktions-Handler generiert einen Fehler, wenn ein ungültiger Schrittparameter angegeben ist.

Eingabe:

Der Funktions-Handler erwartet einen einzelnen Parameter: SecretRotationInput. Die secretRotationInput ist ein POJO (Plain-old java-Objekt), das die für die Rotation erforderlichen Parameter enthält, einschließlich secretId(Zeichenfolge), Schritt(Zeichenfolge) und currentVersionNo(Lang).

  • secretId: Die Secret-ID oder OCID
  • Schritt: Der Rotationsschritt (muss einer von VERIFY_CONNECTION, CREATE_PENDING_VERSION, UPDATE_TARGET_SYSTEM oder PROMOTE_PENDING_VERSION sein)
  • currentVersionNo: Die Nummer der Secret-Version CURRENT

SecretRotationInput POJO


@Getter
@Setter
@ToString(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
@Builder(toBuilder = true)
public static class SecretRotationInput {
    private String step;
    private Long versionNo;
    private String secretId;
}                

Beispiel für Funktions-Handler-Code:

public static class SecretRotationOutput {
    int responseCode;
    Long currentVersionNo;
    String returnMessage;
}
 
 
public SecretRotationOutput handleRequest(SecretRotationInput input) {
    switch(input.getStep()) {
        case "VERIFY_CONNECTION":
            return verifyConnection(input.getSecretId());
        case "CREATE_PENDING_VERSION":
            return createNewPendingVersion(input.getSecretId());
        case "UPDATE_TARGET_SYSTEM":
            return updateTargetSystem(input.getSecretId(), input.getVersionNo());
        case "PROMOTE_PENDING_VERSION":
            return promotePendingVersion(input.getSecretId(), input.getVersionNo());
        default:
            log.error("Secret Rotation: invalid rotation step");
            return SecretRotationOutput.builder()
                    .responseCode(400)
                    .currentVersionNo(null)
                    .returnMessage("INVALID STEP")
                    .build();
    }
}

Schritt 1: VERIFY_CONNECTION

Dieser Schritt prüft die Verbindung zum Zielsystem.

  • Eingabe: Diese Methode erwartet nur den Parameter SecretId.
  • Ausgabe: Diese Methode gibt SecretRotationOutput aus.
  • Logik: Die Funktion versucht zunächst, die Version PENDING abzurufen und die Verbindung mit ihr zu prüfen. Dadurch wird das Fehlerszenario behandelt, bei dem die vorherige Wiederholung die Version PENDING nicht hochstufen konnte, die Version jedoch erfolgreich auf das System angewendet wurde. Wenn es erfolgreich ist, geben Sie die Erfolgsantwort zurück. Wenn der Fehler auftritt, rufen Sie die aktuelle Version ab, und prüfen Sie die Verbindung. Wenn dies erfolgreich ist, geben Sie den Erfolgsantwortcode zusammen mit der aktuellen Versionsnummer zurück. Wenn es nicht erfolgreich ist, geben Sie den Fehler zurück.

Pseudocode für VERIFY_CONNECTION

pseudo code for verifyConnection:
    Check if "PENDING" secret version exists
        If it exist, verify connection
            If succeeds, then return success.
    Fetch the "CURRENT" secret version
    Verify connection with "CURRENT" secret version
       If succeeds, return success and the current version number in the response.
        If not, return SecretRotationOutput with appropriate error code and message.

Schritt 2: CREATE_PENDING_VERSION

Generiert eine neue ausstehende Secret-Version.

  • Eingabe: Diese Methode akzeptiert auch den Parameter secretId.
  • Ausgabe: Diese Methode gibt SecretRotationOutput aus.
  • Logik: Diese Methode prüft zuerst, ob eine Secret-Version im Status PENDING vorhanden ist. Wenn keine Version vorhanden ist, wird eine neue PENDING-Secret-Version generiert. Wenn jedoch bereits einer vorhanden ist, gibt der Schritt die Erfolgsantwort zurück. Mit dem Secret-Metadatenfeld können Sie auch zusätzliche Details zur Secret-Struktur speichern und dieselbe Struktur beim Erstellen einer neuen Secret-Version verwenden. Sie können auch das Feature für die automatische Generierung des Secret-Service verwenden, um den Secret-Inhalt automatisch zu generieren. Mit der automatischen Generierung können Sie allgemeinere Funktionen schreiben.

Pseudocode für CREATE_PENDING_VERSION

pseudo code for createPendingVersion:
    Try to get the pending version
        If it succeeds, return success
        Else create a new secret version in "PENDING" state and then return success

Beispielcode:

// Constructor
public void constructorClass() {
     secretsDpClient = SecretsClient.builder()
                    .region(region)
                    .configuration(configuration)
                    .build(auth_provider);
     secretsCpClient = VaultsClient.builder()
                    .region(region)
                    .configuration(configuration)
                    .build(auth_provider);
}
 
private String createNewPassword() {
    // This method must contains the logic to generate the new secret content
}
  
private SecretRotationOutput createNewPendingVersion(SecretRotationInput input) {
    // Make sure the given secret exist
    Secret secret = secretsCpClient.getSecret(GetSecretRequest.builder()
                    .secretId(input.getSecretId())
            .build()).getSecret();
  
    // Now try to get the pending secret version, if that fails, create a new one
    try {
        GetSecretBundleRequest getSecretBundleRequest = GetSecretBundleRequest.builder()
                .secretId(input.getSecretId())
                .stage(GetSecretBundleRequest.Stage.Pending)
                .build();
        secretsDpClient.getSecretBundle(getSecretBundleRequest);
        return SecretRotationOutput.builder()
                .responseCode(200)
                .returnMessage("Successfully retrieved the pending secret version")
                .build();
    } catch (BmcException bmc) {
        // Create a new pending version
        UpdateSecretDetails updateSecretDetails = secret.getIsAutoGenerationEnabled() ? UpdateSecretDetails.builder()
                .secretContent(Base64SecretContentDetails.builder()
                        .stage(SecretContentDetails.Stage.Pending)
                        .build())
                .build() : UpdateSecretDetails.builder()
                .secretContent(Base64SecretContentDetails.builder()
                        .content(createNewPassword())
                        .stage(SecretContentDetails.Stage.Pending)
                        .build())
                .build();
        secretsCpClient.updateSecret(UpdateSecretRequest.builder()
                .secretId(input.getSecretId())
                .updateSecretDetails(updateSecretDetails)
                .build()).getSecret();
        log.info("Successfully added a new version with 'PENDING' stage for secretId {}", input.getSecretId());
        return SecretRotationOutput.builder()
                .responseCode(200)
                .returnMessage("Pending version created successfully")
                .currentVersionNo(input.getVersionNo())
                .build();
    }
}

Schritt 3: UPDATE_TARGET_SYSTEM

Legt das ausstehende Secret im Zielsystem fest.

  • Eingabe: Diese Methode akzeptiert die Werte currentVersionNo und secretId.
  • Ausgabe: Diese Methode gibt auch SecretRotationOutput aus.
  • Logik: Diese Methode versucht zunächst, sich mit der Secret-Version PENDING beim Zielsystem anzumelden und kehrt bei Erfolg zurück. Dadurch wird auch das Fehlerszenario behandelt, bei dem die vorherige Wiederholung die ausstehende Version nicht hochstufen konnte, die Version jedoch erfolgreich auf das System angewendet wurde. Wenn dies nicht erfolgreich ist, versucht er, sich mit der Secret-Version CURRENT anzumelden. Wenn die aktuelle Secret-Version erfolgreich ist, wird das Kennwort PENDING als Benutzerkennwort im Zielsystem festgelegt.

Pseudocode für UPDATE_TARGET_SYSTEM

Pseudo code for updateTargetSystem:
    Fetch the "PENDING" secret version
    Check the connection with Pending version
        It it works return success and the pending version number in the response
    Fetch the "CURRENT" secret version
    Check the connection with it
        If it works
            Update the target system with "PENDING" version
            Verify that target system is updated.
               if yes then return success and the pending version number in the response 
            else return the appropriate error code and the error message
        If not, return SecretRotationOutput with appropriate error code and message.

Beispielcode:

private SecretRotationOutput updateTargetSystem(String secretId, Long currentVersionNo) {
    // Get the pending secret version
    SecretBundle pendingSecretBundle = secretsDpClient.getSecretBundle(GetSecretBundleRequest.builder()
                    .secretId(secretId)
                    .stage(GetSecretBundleRequest.Stage.Pending)
            .build()).getSecretBundle();
  
    // First try to login with the pending secret, if it succeeds, return
    Connection conn = getConnection(pendingSecretBundle);
    if(conn) {
        log.info("Updated the target system with pending version");
        return SecretRotationOutput.builder()
                    .responseCode(200)
                    .returnMessage("Successfully update target service")
                    .currentVersionNo(pendingSecretBundle.getVersionNumber())
                    .build();
    }
  
    SecretBundle currentSecretBundle = secretsDpClient.getSecretBundle(GetSecretBundleRequest.builder()
                    .versionNumber(currentVersionNo)
                    .secretId(secretId)
            .build()).getSecretBundle();
  
    conn = getConnection(currentSecretBundle);
    if(conn) {
        // Write logic to update the target system and check the connection with the updated password
    } else {
        log.error("Unable to log into system using the current version");
        return SecretRotationOutput.builder()
                .returnMessage("Unable to log into system using the current version")
                .responseCode(400)
                .build();
    }
}

Schritt 4: PROMOTE_PENDING_VERSION

Beenden Sie die Rotation, indem Sie das ausstehende Secret als aktuell markieren.

  • Eingabe: Diese Methode akzeptiert die Werte currentVersionNo und secretId.
  • Ausgabe: Diese Methode gibt auch SecretRotationOutput aus.
  • Logik: Rufen Sie den Secret-Service auf, um die PENDING-Version auf CURRENT hochzustufen. UpdateRequest muss angeben, welche Version in CURRENT hochgestuft werden soll.

Pseudocode für PROMOTE_PENDING_VERSION

pseudo code for promotePendingVersion:
    Make updateSecret Api call to promote the specified version to "CURRENT"

Beispielcode:

private SecretRotationOutput promotePendingVersion(String secretId, Long versionNo) {
    try {
        Secret secret = secretsCpClient.updateSecret(UpdateSecretRequest.builder()
                .secretId(secretId)
                .updateSecretDetails(UpdateSecretDetails.builder()
                        .currentVersionNumber(versionNo)
                        .build())
                .opcRequestId(UUID.randomUUID().toString())
                .build()).getSecret();
        log.info("Successfully promoted the version number {} to 'CURRENT'", versionNo);
        return SecretRotationOutput.builder()
                .responseCode(200)
                .currentVersionNo(secret.getCurrentVersionNumber())
                .returnMessage("Successfully promoted the pending version")
                .build();
    } catch (BmcException bmc) {
        log.error("Fail to promote the pending version. SecretId: {}, pendingVersionNo: {}. {}", secretId, versionNo, bmc.getMessage());
        return SecretRotationOutput.builder()
                .returnMessage(bmc.getMessage())
                .responseCode(bmc.getStatusCode())
                .build();
    }
}

Rotationsstatus

Secret-Versionen können jeweils mehrere Rotationsstatus aufweisen. Wenn nur eine Secret-Version vorhanden ist, z.B. wenn Sie ein Secret das erste Mal erstellen, wird die Secret-Version automatisch als aktuelle und neueste Version markiert. Die neueste Version eines Secrets enthält die Secret-Inhalt, die zuletzt im Vault hochgeladen wurden. Wenn Sie herausfinden müssen, welche Secret-Version zuletzt Secret-Material hochgeladen hat, können Sie dazu den Status "Letzte" verwenden.

Wenn Sie neue Secret-Inhalte für die Secret-Rotation hochladen, können Sie die Secret-Version als Ausstehend markieren. Auf diese Weise können Sie das geheime Material in den Vault hochladen, ohne es sofort aktiv zu verwenden. Sie können die aktuellen Secret-Version so lange verwenden. Bis Sie bereit sind, eine ausstehende Secret-Version in den Status Aktuell hochzustufen. Das geschieht normalerweise, wenn Sie zuerst Zugangsdaten in die Zielressource oder im Zielservice rotiert hat. Beachten Sie, dass Sie die Auswirkungen der Secret-Rotation auf Anwendungen und Ressourcen berücksichtigen müssen, die auf dem Secret basieren. Wenn Sie eine Secret-Version ändern, die aktuell ist, kann die Anwendung, die sie benötigt, die erwartete Secret-Version aus dem Vault nicht mehr abrufen.

Secret-Versionen können auch als Zurück markiert werden. So können Sie ein Secret ganz einfach auf eine vorherige Version zurücksetzen. Möglicherweise müssen Sie dies tun, wenn ein Secret versehentlich rotiert wird oder wenn Sie ein Backup einer Ressource wiederherstellen, die mit einer älteren Secret-Version fortgesetzt werden muss. Eine als vorherige markierte Secret-Version ist die Version, die direkt vor der letzten Rotation als aktuell markiert wurde. Damit Sie zu einer vorherigen Version zurückkehren können, müssen Sie das Secret aktualisieren und die gewünschte Secret-Versionsnummer angeben.

Solange eine Secret-Version noch nicht gelöscht wurde, können Sie das Secret aktualisieren und die gewünschte frühere Secret-Version verwenden. Wenn Sie das Secret aktualisieren, wird die ausgewählte Secret-Versionsnummernnummer als Aktuell markiert. Das hat dieselben Auswirkungen wie das Hochstufen einer Secret-Version auf Aktuell.

Sie können nur Secret-Versionen löschen, die als Veraltet markiert wurden. Eine veraltete Secret-Version ist eine, die nicht als Aktuell, Ausstehend oder Vorherige markiert ist, Dadurch wird verhindert, dass unter Umständen eine Secret-Version gelöscht wird, die Sie später benötigen (z.B. beim Wiederherstellen einer Datenbank, die Sie vorher gesichert haben). Eine Secret-Version, die eine andere Markierung als Veraltet aufweist, kann als Aktuell markiert und so wieder aktiv verwendet werden.

Versionsbeschränkung

Die Limits für Secret-Versionen gelten sowohl für in Gebrauch befindliche als auch für veraltete Versionen eines Secrets, einschließlich der zur Löschung vorgesehenen Versionen. Informationen zu Limits bei der Anzahl von Versionen für ein bestimmtes Secret und für Secret-Versionen in einem Mandanten finden Sie unter Servicelimits.

Bevor Sie beginnen

Bevor Sie beginnen, sollten Sie zuerst Secret Rules und Secret Versionen und Rotationsstatus lesen, um die Auswirkungen der Arbeit mit Regeln, Secret-Versionen und Rotationsstatus der Secret-Version besser zu verstehen.

Erforderliche IAM-Policy

Um Oracle Cloud Infrastructure verwenden zu können, muss ein Administrator Mitglied einer Gruppe sein, der Sicherheitszugriff in einer Policy von einem Mandantenadministrator erteilt wurde. Dieser Zugriff ist unabhängig davon erforderlich, ob Sie die Konsole oder die REST-API mit einem SDK, einer CLI oder einem anderen Tool verwenden. Wenn Sie eine Meldung erhalten, dass Sie keine Berechtigung haben oder nicht autorisiert sind, fragen sie den Mandantenadministrator, welcher Zugriffstyp Ihnen zugewiesen wurde und In welchem Compartment Ihr Zugriff funktioniert.

Für Administratoren:

Wenn Sie mit Policys nicht vertraut sind, finden Sie weitere Informationen unter Identitätsdomains verwalten und Allgemeine Policys.

Secrets taggen

Wenden Sie Tags auf Ressourcen an, um diese entsprechend Ihren Geschäftsanforderungen zu organisieren. Sie können Tags beim Erstellen einer Ressource anwenden und eine Ressource später aktualisieren, um Tags hinzuzufügen, zu ändern oder zu entfernen. Allgemeine Informationen zum Anwenden von Tags finden Sie unter Ressourcentags.

Ressourcen überwachen

Mit Metriken, Alarmen und Benachrichtigungen können Sie den Zustand, die Kapazität und die Performance von Oracle Cloud Infrastructure-Ressourcen überwachen. Weitere Informationen finden Sie unter Monitoring und Notifications.

Ressourcen in ein anderes Compartment verschieben

Sie können Secrets von einem Compartment in ein anderes verschieben. Nachdem Sie ein Secret in ein neues Compartment verschoben haben, gelten die für das Compartment konfigurierten Policys sofort. Diese wirken sich auf den Zugriff auf die Secret- und Secret-Versionen aus. Das Verschieben eines Secrets wirkt sich nicht auf den Zugriff auf den Vault aus, mit dem ein Secret verknüpft ist. Ebenso können Sie einen Vault unabhängig von den damit verknüpften Secrets von einem Compartment in ein anderes verschieben. Weitere Informationen finden Sie unter Compartments verwalten.