Memorizzazione di segreti arbitrari

È possibile utilizzare IBM Cloud® Secrets Manager per memorizzare segreti arbitrari che vengono utilizzati per accedere a sistemi protetti all'interno o all'esterno di IBM Cloud.

Un segreto arbitrario è un tipo di segreto dell'applicazione che può essere utilizzato per contenere dati strutturati o non strutturati, come una chiave, un file di configurazione o qualsiasi altra informazione sensibile. Dopo aver creato il segreto, puoi utilizzarlo per collegare la tua applicazione a una risorsa protetta, come un'applicazione o un database di terzi. Il tuo segreto viene memorizzato in modo sicuro nella tua istanza del servizio Secrets Manager dedicata, dove puoi gestirne centralmente il ciclo di vita.

Per ulteriori informazioni sui tipi di segreti che puoi gestire in Secrets Manager, vedi Cos' è un segreto?

Prima di iniziare

Prima di iniziare, assicurati di disporre del livello di accesso richiesto. Per creare o aggiungere segreti, hai bisogno del ruolo del servizio Writer o superiore.

Creazione di segreti arbitrari nell'interfaccia utente

Per aggiungere un segreto arbitrario utilizzando l'IU Secrets Manager, completa la seguente procedura.

  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. Nella tabella Segreti, fare clic su Aggiungi.

  4. Dall'elenco dei tipi di segreto, fai clic sul tile Other secret type.

  5. Fai clic su Next.

  6. Aggiungere un nome e una descrizione per identificare facilmente il segreto.

  7. Seleziona il gruppo di segretiL'ambiente e i vincoli che contengono segreti in un'istanza devono essere conformi. Un utente può essere associato a un gruppo segreto per consentire l'accesso e la collaborazione. che vuoi assegnare al segreto.

    Non hai un gruppo segreto? Nel campo Gruppo segreto, è possibile fare clic su Crea per fornire un nome e una descrizione per un nuovo gruppo. Il tuo segreto viene aggiunto automaticamente al nuovo gruppo. Per ulteriori informazioni sui gruppi di segreti, consulta Organizzazione dei tuoi segreti.

  8. Facoltativo: aggiungi le etichette per aiutarti a cercare segreti simili nella tua istanza.

  9. Facoltativo: aggiungi i metadati al tuo segreto o a una versione specifica del tuo segreto.

    1. Caricare un file o immettere i metadati e i metadati della versione in formato JSON.
  10. Fai clic su Next.

  11. Selezionare un file o immettere il valore del segreto che si desidera associare al segreto.

Secrets Manager supporta i payload basati sul testo solo per i segreti arbitrari. Se si seleziona un file da assegnare a un segreto arbitrario, il servizio utilizza la codifica base64 per memorizzare i dati nell'istanza. Per accedere a questo segreto in seguito, devi decodificarlo in base64. Considerate di assegnare un'etichetta al vostro segreto con dati codificati, come encode:base64, in modo da poter tenere traccia dei segreti che richiedono la decodifica di base64.

  1. Facoltativo: abilitare la scadenza per controllare la durata del segreto.
  2. Per impostare una data di scadenza per il segreto, passare all'opzione .
  3. Fai clic su Next.
  4. Esaminare i dettagli del proprio segreto.
  5. Fai clic su Aggiungi.

Creazione di segreti arbitrari dalla CLI

Prima di iniziare, seguire la documentazione della CLI per impostare l'endpoint API.

Per creare un segreto arbitrario utilizzando il plug-in della CLI Secrets Manager, esegui il comando ibmcloud secrets-manager secret-create. È possibile specificare il tipo di segreto utilizzando l'opzione --secret-type arbitrary. Ad esempio, il comando seguente crea un segreto arbitrario e memorizza secret-data come valore.

Secrets Manager supporta i payload basati sul testo solo per i segreti arbitrari. Se si deve caricare un file binario, è necessario codificare prima i dati in base64, in modo da poterli passare alla CLI di Secrets Manager in una stringa di una sola riga. Per accedere successivamente a questo segreto nella sua forma originale, è necessario decodificarlo su base64. Considerate di assegnare un'etichetta al vostro segreto con dati codificati, come encode:base64, in modo da poter tenere traccia dei segreti che richiedono la decodifica di base64.

ibmcloud secrets-manager secret-create \
    --secret-name example-arbitrary-secret \
    --secret-description "Description of my arbitrary secret." \
    --secret-type arbitrary \
    --secret-group-id default \
    --secret-labels dev,us-south \
    --secret-expiration-date 2023-10-05T11:49:42Z \
    --arbitrary-payload secret-data \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}'

Il comando emette il valore di ID del segreto, insieme ad altri metadati. Per ulteriori informazioni relative alle opzioni del comando, consultare ibmcloud secrets-manager secret-create.

Creazione di segreti arbitrari con l'API

Puoi creare dei segreti arbitrari in modo programmatico chiamando l'API Secrets Manager.

Il seguente esempio mostra una query che puoi usare per creare e memorizzare un segreto arbitrario. Quando si chiama l'API, sostituire le variabili ID e il token IAM con i valori specifici dell'istanza Secrets Manager.

Puoi archiviare i metadati che sono pertinenti alle esigenze della tua organizzazione con i parametri di richiesta custom_metadata e version_custom_metadata. I valori di version_custom_metadata vengono restituiti solo per le versioni di un segreto. I metadati personalizzati del tuo segreto vengono memorizzati come tutti gli altri metadati, per un massimo di 50 versioni, e non devi includere dati riservati.

Secrets Manager supporta i payload basati sul testo solo per i segreti arbitrari. Se si deve caricare un file binario, è necessario codificare prima i dati in base64, in modo da poterli passare all'API Secrets Manager in una stringa di una sola riga. Per accedere successivamente a questo segreto nella sua forma originale, è necessario decodificarlo su base64. Considerate di assegnare un'etichetta al vostro segreto con dati codificati, come encode:base64, in modo da poter tenere traccia dei segreti che richiedono la decodifica di base64.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
          "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
          },
          "description": "Description of my arbitrary secret.",
          "expiration_date": "2023-10-05T11:49:42Z",
          "labels": [
            "dev",
            "us-south"
          ],
          "name": "example-arbitrary-secret",
          "payload": "secret-data",
          "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
          "secret_type": "arbitrary",
          "version_custom_metadata": {
          "custom_version_key": "custom_version_value"} }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Una risposta di successo restituisce il valore ID del segreto, insieme ad altri metadati. Per ulteriori informazioni sui parametri di richiesta obbligatori e facoltativi, consulta la Guida di riferimento API.

Creazione di segreti arbitrari con Terraform

Puoi creare dei segreti arbitrari in modo programmatico utilizzando Terraform per Secrets Manager.

Segui le best practice di Terraform per proteggere le variabili di input sensibili come le credenziali segrete. Per ulteriori informazioni, vedi Proteggi le variabili di input sensibili.

Il seguente esempio mostra una configurazione che è possibile utilizzare per creare un segreto arbitrario impostando valori sensibili in un file terraform.tfvars.

  1. Definire una variabile di input per il payload segreto arbitrario in un file variables.tf.

    		variable "arbitrary_secret_payload" {
    			description = "Arbitrary secret payload"
    			type        = string
    			sensitive   = true
    		}
    
  2. Assegnare un valore alla variabile arbitrary_secret_payload in un file terraform.tfvars.

    Impostando i valori con un file .tfvars, è possibile separare i valori sensibili dal resto dei valori delle proprie variabili e verificare che gli utenti che utilizzano la propria configurazione sappiano quali valori sono sensibili. Per motivi di sicurezza, è necessario conservare e condividere il file .tfvars solo con gli utenti che dispongono dell'accesso appropriato. È inoltre necessario fare attenzione a non memorizzare i file .tfvars con valori sensibili nel controllo della versione come Github, in testo chiaro.

    	arbitrary_secret_payload = "my sensitive arbitrary payload"
    
  3. Creare il segreto arbitrario nel file main.tf.

    	resource "ibm_sm_arbitrary_secret" "sm_arbitrary_secret" {
    		instance_id = local.instance_id
    		region = local.region
    		description = "Extended description for this arbitrary secret"
    		labels = [ "tf-resource"]
    		name = "test-arbitrary-secret"
    		secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
    		payload = var.arbitrary_secret_payload
    	}
    

In alternativa, è possibile utilizzare Terraform IBM Modules (TIM) pre-costruito, open-source e pronto per l'impresa, per Secrets Manager Secret per creare segreti arbitrari con Terraform. Per saperne di più su Terraform IBM Modules.