Segreti di blocco

Quando si lavora con IBM Cloud® Secrets Manager, è possibile creare dei blocchi sui segreti per impedire che vengano cancellati o modificati mentre sono utilizzati dalle applicazioni.

Per impostazione predefinita, un utente autorizzato o un'applicazione può modificare i segreti che gestisci in Secrets Manager in qualsiasi momento. A volte, ad esempio durante un controllo di sicurezza, potresti voler impedire a qualcuno del tuo team di eliminare accidentalmente un segreto. Oppure, se pianifichi di ruotare regolarmente i tuoi segreti, potresti cercare un modo per distribuire in modo sicuro la versione più recente di un segreto dopo che si è svolta una rotazione. Con i blocchi, è possibile creare flussi di lavoro automatizzati che consentono di:

  • Indica che un segreto è utilizzato da una o più applicazioni o servizi.
  • Impedisci l'eliminazione dei dati segreti anche dopo la scadenza di un segreto.
  • Elimina in modo sicuro le versioni precedenti dei segreti dopo che la nuova versione è stata completamente distribuita alle tue applicazioni.
  • Evitare tempi di inattività involontari nelle applicazioni.

Per informazioni sulle linee guida consigliate per l'utilizzo dei blocchi per evitare tempi di inattività dell'applicazione, consulta Procedure ottimali per la rotazione e il blocco dei segreti.

Prima di iniziare

Prima di iniziare, assicurarsi di disporre del livello di accesso richiesto. Per gestire i blocchi sui tuoi segreti, hai bisogno del ruolo del servizio Gestore.

Segreti di blocco

Il blocco di un segreto impedisce qualsiasi operazione che può comportare la modifica o l'eliminazione dei relativi dati segreti. Per bloccare un segreto, collegare uno o più blocchi alla versione corrente o precedente.

Quando si tenta di modificare o cancellare un segreto mentre è bloccato, Secrets Manager nega la richiesta con una risposta HTTP 412 Precondition Failed. Viene visualizzato un messaggio di errore simile a quello riportato nell'esempio seguente:

The requested action can't be completed because the secret version is locked.

Se stai utilizzando i segreti dinamiciUn valore univoco, come una password o una chiave API, creato in modo dinamico e assegnato a un'applicazione che richiede l'accesso a una risorsa protetta. Dopo che un segreto dinamico raggiunge la fine del suo lease, l'accesso alla risorsa protetta viene revocato e il segreto viene eliminato automaticamente., come le credenziali IAM, bloccare i tuoi segreti significa anche che, per impostazione predefinita, tali segreti non possono essere letti o a cui non è possibile accedere. Per ulteriori informazioni, vedi Perché non posso leggere un segreto delle credenziali IAM bloccato?

Una credenziale segreta personalizzata può essere bloccata solo una volta completati tutti i suoi compiti.

Se un segreto bloccato raggiunge la sua data di scadenza, rimane nello stato Attivo e i suoi dati restano accessibili alle tue applicazioni. Secrets Manager sposta il segreto nello stato Destroyed ed elimina definitivamente i dati segreti scaduti solo dopo la rimozione di tutti i blocchi sul segreto.

SSL / I certificati TLS raggiungono comunque le date di scadenza definite e passano allo stato Distrutto anche se sono bloccati. Per ulteriori informazioni, consultare Perché il certificato bloccato è stato spostato allo stato Destroyed?

  • Se si tenta di ruotare un segreto mentre la sua versione corrente è bloccata e la versione precedente è sbloccata (o se è pianificata una rotazione automatica), la richiesta di ruotare il segreto è consentita. La versione segreta corrente diventa la nuova versione precedente, mantenendo i blocchi esistenti. Viene creata una nuova versione corrente senza blocchi.
  • Se tenti di ruotare un segreto mentre la sua versione precedente è bloccata (o se è pianificata una rotazione automatica), la richiesta di ruotare il segreto viene negata. La rotazione è consentita solo dopo la rimozione di tutti i blocchi sulla versione segreta precedente.

Creazione di blocchi nell'interfaccia utente

Puoi creare fino a 1000 blocchi su un segreto utilizzando l'IU Secrets Manager. Ogni blocco può essere utilizzato per rappresentare una singola applicazione o servizio che utilizza il tuo segreto.

Un segreto viene considerato bloccato dopo il collegamento di uno o più blocchi. Un blocco può essere applicato solo su una versione segreta che contiene payload attivo o dati segreti.

Per facilitare la creazione di un nuovo blocco e rimuovere i blocchi più vecchi in una singola operazione, è anche possibile specificare una modalità facoltativa durante la creazione del blocco.

Modalità di blocco opzionali e relative descrizioni
Modalità Descrizione
Rimuovi blocchi precedenti Rimuove tutti gli altri blocchi che corrispondono al nome specificato. Se vengono trovati dei blocchi corrispondenti nella versione precedente del segreto, tali blocchi vengono eliminati quando viene creato il nuovo blocco.

Ad esempio, supponiamo che la versione precedente del tuo segreto contenga un blocco lock-x. La creazione di un blocco sulla versione corrente del segreto e l'abilitazione dell'opzione Elimina blocchi corrispondenti comporta la rimozione di lock-x dalla versione precedente.

Rimuovere i blocchi precedenti ed eliminare i dati della versione precedente Come l'opzione precedente, ma elimina definitivamente anche i dati della versione precedente del segreto, qualora non vi siano blocchi ad essa associati.

Supponiamo che la versione precedente del tuo segreto contenga un blocco lock-z. La creazione di un blocco sulla versione corrente del tuo segreto con le opzioni Delete matching locks e Delete previous version data comporta la rimozione di lock-z dalla versione precedente. Inoltre, poiché la versione precedente non ha altri blocchi ad essa collegati, vengono eliminati anche i dati segreti associati alla versione precedente.

Creazione di un blocco sulla versione segreta corrente

Puoi bloccare la versione corrente di un segreto utilizzando l'IU Secrets Manager. Una richiesta riuscita allega un nuovo blocco alla versione corrente del segreto selezionato o sostituisce un blocco con lo stesso nome se esiste già.

  1. Nella console, fare clic sull'icona Menu icona Menu > Elenco risorse.
  2. Dall'elenco di servizi, seleziona la tua istanza di Secrets Manager.
  3. Nell'IU Secrets Manager, vai all'elenco Secrets.
  4. Nella riga del segreto che vuoi bloccare, fai clic sul menu Azioni Icona Azioni > Blocchi> Crea blocco.
  5. Aggiungi un nome e una descrizione per identificare facilmente il lucchetto.
  6. Dall'elenco delle versioni da bloccare, seleziona Current.
  7. Facoltativo: allegare gli attributi JSON al blocco. Puoi includere un oggetto JSON con ogni blocco per conservare tutte le informazioni di cui potresti aver bisogno per un flusso automatizzato. Ad esempio, una coppia chiave - valore che identifica la risorsa che si desidera associare a questo blocco.
  8. Facoltativo: rendere il blocco esclusivo. Scegliere questa opzione per rimuovere tutti gli altri blocchi che corrispondono al nome fornito. Se vengono trovati dei blocchi corrispondenti nella versione precedente del segreto, tali blocchi vengono eliminati quando viene creato il nuovo blocco.
  9. Facoltativo: eliminare i dati della versione precedente. Scegliere questa opzione per eliminare in modo permanente anche i dati della versione segreta precedente se non dispone di blocchi associati.
  10. Fai clic su Crea. Viene creato un nuovo blocco per la versione segreta selezionata.

Creazione di un blocco sulla versione segreta precedente

Puoi bloccare la versione precedente di un segreto utilizzando l'IU Secrets Manager. Una richiesta riuscita allega un nuovo blocco alla versione precedente del segreto selezionato oppure sostituisce un blocco con lo stesso nome se esiste già.

  1. Nell'IU Secrets Manager, vai all'elenco Secrets.
  2. Nella riga del segreto che vuoi bloccare, fai clic sul menu Azioni Icona Azioni > Blocchi> Crea blocco.
  3. Aggiungi un nome e una descrizione per identificare facilmente il lucchetto.
  4. Dall'elenco delle versioni da bloccare, selezionare Precedente.
  5. Facoltativo: allegare gli attributi JSON al blocco. Puoi includere un oggetto JSON con ogni blocco per conservare tutte le informazioni di cui potresti aver bisogno per un flusso automatizzato. Ad esempio, una coppia chiave - valore che identifica la risorsa che si desidera associare a questo blocco.
  6. Fai clic su Crea. Viene creato un nuovo blocco per la versione segreta selezionata.

Creazione di blocchi dalla CLI

Puoi creare fino a 1000 blocchi su un segreto utilizzando la CLI Secrets Manager. Ogni blocco può essere utilizzato per rappresentare una singola applicazione o servizio che utilizza il tuo segreto.

Un segreto viene considerato bloccato dopo il collegamento di uno o più blocchi. Un blocco può essere applicato solo su una versione segreta che contiene payload attivo o dati segreti.

Per facilitare la creazione di un nuovo blocco e rimuovere i blocchi più vecchi in una singola operazione, è anche possibile specificare una modalità facoltativa durante la creazione del blocco.

Modalità di blocco opzionali e relative descrizioni
Modalità Descrizione
Rimuovi blocchi precedenti Rimuove tutti gli altri blocchi che corrispondono al nome specificato. Se vengono trovati dei blocchi corrispondenti nella versione precedente del segreto, tali blocchi vengono eliminati quando viene creato il nuovo blocco.

Ad esempio, supponiamo che la versione precedente del tuo segreto contenga un blocco lock-x. La creazione di un blocco sulla versione corrente del segreto e l'abilitazione dell'opzione Elimina blocchi corrispondenti comporta la rimozione di lock-x dalla versione precedente.

Rimuovere i blocchi precedenti ed eliminare i dati della versione precedente Come l'opzione precedente, ma elimina definitivamente anche i dati della versione precedente del segreto, qualora non vi siano blocchi ad essa associati.

Supponiamo che la versione precedente del tuo segreto contenga un blocco lock-z. La creazione di un blocco sulla versione corrente del tuo segreto con le opzioni Delete matching locks e Delete previous version data comporta la rimozione di lock-z dalla versione precedente. Inoltre, poiché la versione precedente non ha altri blocchi ad essa collegati, vengono eliminati anche i dati segreti associati alla versione precedente.

Creazione di un blocco sulla versione segreta corrente

Puoi bloccare la versione corrente di un segreto utilizzando la CLI Secrets Manager. Una richiesta riuscita allega un nuovo blocco alla versione corrente del segreto selezionato o sostituisce un blocco con lo stesso nome se esiste già.

Per creare un blocco sulla versione corrente di un segreto utilizzando il plug-in CLI Secrets Manager, esegui il comando ibmcloud secrets-manager secret-locks-bulk-create. È possibile specificare il tipo di segreto, l'ID segreto e la modalità.

ibmcloud secrets-manager secret-locks-bulk-create \
    --id=exampleString \
    --locks='[{"name": "lock-example-1", "description": "lock for consumer 1", "attributes": {"anyKey": "anyValue"}}]' \
    --mode=remove_previous

Creazione di blocchi tramite l'API

Puoi creare fino a 1000 blocchi su un segreto utilizzando l'API Secrets Manager. Ogni blocco può essere utilizzato per rappresentare una singola applicazione o consumer che utilizza il segreto. Una richiesta riuscita allega un nuovo blocco al segreto o sostituisce un blocco con lo stesso nome se già esiste.

Un segreto viene considerato bloccato dopo il collegamento di uno o più blocchi. Un blocco può essere applicato solo su una versione segreta che contiene payload attivo o dati segreti.

Per facilitare la creazione di un nuovo blocco e rimuovere i blocchi più vecchi in una singola operazione, è anche possibile specificare una modalità facoltativa durante la creazione del blocco.

Modalità di blocco opzionali e relative descrizioni
Modalità Parametro di query Descrizione
Rimuovi blocchi precedenti mode=remove_previous Rimuove tutti gli altri blocchi che corrispondono al nome specificato. Se vengono trovati dei blocchi corrispondenti nella versione precedente del segreto, tali blocchi vengono eliminati quando viene creato il nuovo blocco.

Ad esempio, supponiamo che la versione precedente del tuo segreto contenga un blocco lock-x. La creazione di un blocco e l'abilitazione della modalità remove_previous sulla versione segreta corrente comporta la rimozione di lock-x dalla versione precedente.

Rimuovi blocchi precedenti mode=remove_previous_and_delete È identico all'opzione " remove_previous ", ma elimina definitivamente anche i dati della versione precedente del segreto, qualora non vi siano blocchi ad essa associati.

Supponiamo che la versione precedente del tuo segreto contenga un blocco lock-z. La creazione di un blocco e l'abilitazione della modalità remove_previous_and_delete sulla versione segreta corrente comporta la rimozione di lock-z dalla versione precedente. Inoltre, poiché la versione precedente non ha altri blocchi ad essa collegati, vengono eliminati anche i dati segreti associati alla versione precedente.

Creazione di blocchi sulla versione segreta corrente

La seguente richiesta crea due blocchi sulla versione corrente di un segreto. Quando richiami la API, sostituisci le variabili ID e il token IAM con i valori specifici della tua istanza Secrets Manager.

curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
      "locks": [
        {
          "name": "lock-1",
          "description": "Lock for consumer 1.",
          "attributes": {
            "key": "value"
          }
        },
        {
          "name": "lock-2",
          "description": "Lock for consumer 2.",
          "attributes": {
            "key": "value"
            }
          }
        ]
      }' \
    "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/locks_bulk"

Se stai creando un flusso automatizzato, puoi utilizzare l'oggetto attributes per specificare i dati chiave - valore con ogni blocco sul tuo segreto. Ad esempio, puoi includere un ID risorsa, come un ID o un CRN (Cloud Resource Name).

Una risposta con esito positivo restituisce i dettagli sui nuovi blocchi, insieme ad altri metadati.

{
  "secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
  "secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
  "versions": [
    {
      "version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
      "version_alias": "current",
      "locks": [
        "lock-3",
        "lock-4"
      ],
      "payload_available": true
    },
    {
      "version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
      "version_alias": "previous",
      "locks": [
        "lock-1",
        "lock-2"
      ],
      "payload_available": true
    }
  ]
}

Per ulteriori informazioni sui parametri di richiesta obbligatori e facoltativi, consulta la Guida di riferimento API.

Creazione di blocchi sulla versione segreta precedente

La seguente richiesta crea due blocchi sulla versione precedente di un segreto. Quando richiami la API, sostituisci le variabili ID e il token IAM con i valori specifici della tua istanza Secrets Manager.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "locks": [
        {
          "name": "lock-1",
          "description": "Lock for consumer 1.",
          "attributes": {
            "key": "value"
            }
          },
          {
            "name": "lock-2",
            "description": "Lock for consumer 2.",
            "attributes": {
              "key": "value"
              }
            }
          ]
        }' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/{version_id}/locks_bulk"

Una risposta con esito positivo restituisce i dettagli sui nuovi blocchi, insieme ad altri metadati.

{
  "secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
  "secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
  "versions": [
    {
      "version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
      "version_alias": "current",
      "locks": [
        "lock-3",
        "lock-4"
      ],
      "payload_available": true
    },
    {
      "version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
      "version_alias": "previous",
      "locks": [
        "lock-1",
        "lock-2"
      ],
      "payload_available": true
    }
  ]
}

Per ulteriori informazioni sui parametri di richiesta obbligatori e facoltativi, consulta la Guida di riferimento API.

Sblocco dei segreti

Un segreto è considerato sbloccato e può essere modificato o eliminato solo dopo che tutti i suoi blocchi associati sono stati rimossi. Puoi usare l'IU o le API Secrets Manager per eliminare i blocchi associati ad un segreto.

Eliminazione dei blocchi nell'interfaccia utente

Puoi eliminare un blocco collegato a un segreto esistente utilizzando l'IU Secrets Manager.

  1. Nella console, fare clic sull'icona Menu icona Menu > Elenco risorse.
  2. Dall'elenco di servizi, seleziona la tua istanza di Secrets Manager.
  3. Nell'IU Secrets Manager, vai all'elenco Secrets.
  4. Nella riga del segreto che vuoi aggiornare, fai clic sul menu Azioni Icona Azioni > Blocchi.
  5. Nella riga per il blocco che vuoi eliminare, fai clic sul menu Azioni Icona Azioni > Elimina.
  6. Per confermare l'eliminazione, immettere il nome del segreto. Fai clic su Delete.

Il blocco è stato eliminato. Per sbloccare completamente il segreto, è possibile rimuovere tutti i blocchi esistenti.

Eliminazione dei blocchi tramite l'API

Puoi utilizzare l'API Secrets Manager per eliminare uno o più blocchi associati alla specifica versione segreta.

Una richiesta riuscita elimina i blocchi specificati. Per rimuovere tutti i blocchi, è possibile inoltrare {"locks": ["*"]} nel corpo della richiesta. Altrimenti, specificare i nomi dei blocchi che si desidera eliminare. Ad esempio, {"locks": ["lock-1", "lock-2"]}.

Per capire se un segreto contiene dei blocchi, controlla il campo locks_total restituito come parte dei metadati del tuo segreto.

curl -X DELETE  
  -H "Authorization: Bearer {iam_token}" \
  -H "Accept: application/json" \
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_id}/versions/{id}/locks_bulk?name=[ "lock-example-1" ]"

Per ulteriori informazioni sui parametri di richiesta obbligatori e facoltativi, consulta la Guida di riferimento API.