Almacenamiento de secretos arbitrarios

Puede utilizar IBM Cloud® Secrets Manager para almacenar secretos arbitrarios que se utilizan para acceder a sistemas protegidos que están dentro o fuera de IBM Cloud.

Un secreto arbitrario es un tipo de secreto de aplicación que se puede utilizar para contener datos estructurados o no estructurados, como por ejemplo una clave, un archivo de configuración o cualquier otra información confidencial. Después de crear el secreto, puede utilizarlo para conectar la aplicación a un recurso protegido, como por ejemplo una app o una base de datos de terceros. Su secreto se almacena de forma segura en la instancia de servicio dedicada de Secrets Manager, donde puede gestionar de forma centralizada su ciclo de vida.

Para obtener más información sobre los tipos de secretos que puede gestionar en Secrets Manager, consulte ¿Qué es un secreto?

Antes de empezar

Antes de empezar, asegúrese de que tiene el nivel de acceso necesario. Para crear o añadir secretos, necesita el rol de servicio Escritor o superior.

Creación de secretos arbitrarios en la interfaz de usuario

Para añadir un secreto arbitrario utilizando la interfaz de usuario de Secrets Manager, realice los pasos siguientes.

  1. En la consola, pulse el icono Menú Icono de menú > Lista de recursos.

  2. En la lista de servicios, seleccione la instancia de Secrets Manager.

  3. En la tabla Secretos, pulse Añadir.

  4. En la lista de tipos de secretos, pulse el mosaico Otro tipo de secreto.

  5. Pulse Siguiente.

  6. Añada un nombre y una descripción para identificar fácilmente su secreto.

  7. Seleccione el grupoEl entorno y las restricciones a los que se deben ajustar los secretos contenidos en una instancia. Se puede asociar un usuario con un grupo de secretos para permitir el acceso y la colaboración. secreto que desea asignar al secreto.

    ¿No tiene ningún grupo de secretos? En el campo Grupo de secretos, puede pulsar Crear para proporcionar un nombre y una descripción para un grupo nuevo. Su secreto se añade automáticamente al nuevo grupo. Para obtener más información sobre grupos de secretos, consulte Organización de los secretos.

  8. Opcional: añada etiquetas para ayudarle a buscar secretos similares en la instancia.

  9. Opcional: añada metadatos a su secreto o a una versión específica de su secreto.

    1. Cargue un archivo o especifique los metadatos y los metadatos de versión en formato JSON.
  10. Pulse Siguiente.

  11. Seleccione un archivo o especifique el valor de secreto que desea asociar con el secreto.

Secrets Manager da soporte a cargas útiles basadas en texto sólo para secretos arbitrarios. Si selecciona un archivo para asignar a un secreto arbitrario, el servicio utiliza la codificación de base64 para almacenar los datos en su instancia. Para acceder a este secreto más tarde, necesita decodificarlo de base64. Considera la posibilidad de asignar una etiqueta a tu secreto con datos codificados, como encode:base64, para poder realizar un seguimiento de los secretos que requieran la descodificación de base64.

  1. Opcional: Activa la caducidad para controlar la vida útil del secreto.
  2. Para establecer una fecha de caducidad para el secreto, cambie el conmutador de caducidad por .
  3. Pulse Siguiente.
  4. Revise los detalles de su secreto.
  5. Pulse Añadir.

Creación de secretos arbitrarios desde la CLI

Antes de empezar, siga las instrucciones de la CLI para configurar el punto final de la API.

Para crear un secreto arbitrario mediante el plugin de CLI de Secrets Manager, ejecute el mandato ibmcloud secrets-manager secret-create. Puede especificar el tipo de secreto utilizando la opción --secret-type arbitrary. Por ejemplo, el siguiente mandato crea un secreto arbitrario y almacena secret-data como su valor.

Secrets Manager da soporte a cargas útiles basadas en texto sólo para secretos arbitrarios. Si necesita cargar un archivo binario, debe codificar base64 primero los datos para que pueda pasarlos a la CLI de Secrets Manager en una serie de una sola línea. Para acceder a este secreto más tarde en su forma original, necesita decodificarlo de base64. Considera la posibilidad de asignar una etiqueta a tu secreto con datos codificados, como encode:base64, para poder realizar un seguimiento de los secretos que requieran la descodificación de 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"}'

El mandato genera el valor de ID del secreto, junto con otros metadatos. Para obtener más información sobre las opciones de mandato, consulte ibmcloud secrets-manager secret-create.

Creación de secretos con la API

Puede crear credenciales de IAM mediante programación llamando a la API de Secrets Manager.

En el ejemplo siguiente se muestra una consulta que puede utilizar para crear y almacenar un secreto arbitrario. Cuando llame a la API, sustituya las variables de ID y la señal de IAM por los valores que son específicos de la instancia de Secrets Manager.

Puede almacenar metadatos que sean relevantes para las necesidades de su organización con los parámetros de solicitud custom_metadata y version_custom_metadata. Los valores de version_custom_metadata sólo se devuelven para las versiones de un secreto. Los metadatos personalizados del secreto se almacenan como todos los demás metadatos, para un máximo de 50 versiones, y no debe incluir datos confidenciales.

Secrets Manager da soporte a cargas útiles basadas en texto sólo para secretos arbitrarios. Si necesita cargar un archivo binario, debe codificar base64 primero los datos para que pueda pasarlos a la CLI de Secrets Manager en una serie de una sola línea. Para acceder a este secreto más tarde en su forma original, necesita decodificarlo de base64. Considera la posibilidad de asignar una etiqueta a tu secreto con datos codificados, como encode:base64, para poder realizar un seguimiento de los secretos que requieran la descodificación de 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 respuesta correcta devuelve el valor de ID del secreto, junto con otros metadatos. Para obtener más información sobre los parámetros de solicitud obligatorios y opcionales, consulte el apartado Referencia de API.

Creación de secretos arbitrarios con Terraform

Puede crear secretos arbitrarios mediante programación utilizando Terraform para Secrets Manager.

Siga las prácticas recomendadas de Terraform para proteger variables de entrada confidenciales como, por ejemplo, credenciales secretas. Para obtener más información, consulte Proteger variables de entrada sensibles.

El ejemplo siguiente muestra una configuración que puede utilizar para crear un secreto arbitrario estableciendo valores confidenciales en un archivo terraform.tfvars.

  1. Defina una variable de entrada para la carga útil de secreto arbitrario en un archivo variables.tf.

    		variable "arbitrary_secret_payload" {
    			description = "Arbitrary secret payload"
    			type        = string
    			sensitive   = true
    		}
    
  2. Asigne un valor a la variable arbitrary_secret_payload en un archivo terraform.tfvars.

    Al establecer valores con un archivo .tfvars, puede separar los valores confidenciales del resto de los valores de las variables y asegurarse de que los usuarios que trabajan con la configuración saben qué valores son confidenciales. Por motivos de seguridad, debe mantener y compartir el archivo .tfvars sólo con los usuarios que tengan el acceso adecuado. También debe tener cuidado de no almacenar los archivos .tfvars con valores confidenciales en el control de versiones como, por ejemplo, Github, en texto simple.

    	arbitrary_secret_payload = "my sensitive arbitrary payload"
    
  3. Cree el secreto arbitrario en el archivo 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
    	}
    

Como alternativa, puede utilizar los módulos Terraform IBM (TIM) preconstruidos, de código abierto y listos para la empresa para Secrets Manager Secret para crear secretos arbitrarios con Terraform. Más información sobre los módulos de Terraform IBM.