Bloqueo de secretos
Cuando trabaja con IBM Cloud® Secrets Manager, puede crear bloqueos sobre los secretos para evitar que se supriman o modifiquen mientras las aplicaciones los utilizan.
De forma predeterminada, un usuario o aplicación autorizado puede modificar los secretos que gestiona en Secrets Manager en cualquier momento. A veces, por ejemplo, durante una auditoría de seguridad, es posible que desee impedir que alguien del equipo suprima accidentalmente un secreto. O bien, si tiene previsto rotar los secretos con regularidad, es posible que esté buscando una forma de desplegar de forma segura la versión más reciente de un secreto después de que tenga lugar una rotación. Con los bloqueos, puede crear flujos de trabajo automatizados que le ayudarán a:
- Indica que una o más aplicaciones o servicios están utilizando un secreto.
- Impedir que los datos secretos se supriman incluso después de que caduque un secreto.
- Suprima de forma segura las versiones más antiguas de los secretos después de que la versión más reciente se haya desplegado completamente en las aplicaciones.
- Evite el tiempo de inactividad involuntario en las aplicaciones.
Para obtener más información sobre las directrices sugeridas para utilizar bloqueos para evitar el tiempo de inactividad de la aplicación, consulte Prácticas recomendadas para rotar y bloquear secretos.
Antes de empezar
Antes de empezar, asegúrese de que tiene el nivel de acceso necesario. Para gestionar bloqueos en los secretos, necesita el Rol de servicio de Director.
Bloqueo de secretos
El bloqueo de un secreto impide cualquier operación que pueda dar como resultado la modificación o supresión de sus datos secretos. Para bloquear un secreto, debe adjuntar uno o varios bloqueos a su versión actual o anterior.
-
Cuando intentas modificar o borrar un secreto mientras está bloqueado, Secrets Manager deniega la petición con una respuesta HTTP
412 Precondition Failed
. Aparece un mensaje de error similar al del ejemplo siguiente:The requested action can't be completed because the secret version is locked.
Si está trabajando con secretos dinámicosUn valor exclusivo, como una contraseña o una clave de API, que se crea dinámicamente y se cede a una aplicación que requiere acceso a un recurso protegido. Una vez que finaliza la cesión del secreto dinámico, el acceso al recurso protegido se revoca y el secreto se suprime automáticamente., como las credenciales de IAM, el bloqueo de los secretos también significa que, de forma predeterminada, no se puede leer o acceder a dichos secretos. Para obtener más información, consulte ¿Por qué no puedo leer un secreto de credenciales de IAM bloqueado?
Un secreto de credenciales personalizado sólo puede bloquearse una vez completadas todas sus tareas.
-
Si un secreto bloqueado alcanza su fecha de caducidad, permanece en el estado Activo y sus datos permanecen accesibles para las aplicaciones. Secrets Manager mueve el secreto al estado Destruido y suprime permanentemente los datos secretos caducados sólo después de que se hayan eliminado todos los bloqueos en el secreto.
Los certificados SSL/TLS siguen alcanzando sus fechas de caducidad definidas y pasan a un estado Destruido incluso si están bloqueados. Para obtener más información, consulte ¿Por qué mi certificado bloqueado se ha desplazado al estado Destruido?
-
Si intenta rotar un secreto mientras su versión actual está bloqueada y la versión anterior está desbloqueada (o si se ha planificado una rotación automática), se permite la solicitud de rotar el secreto. La versión secreta actual se convierte en la nueva versión anterior, conservando sus bloqueos existentes. Se crea una nueva versión actual sin ningún bloqueo.
-
Si intenta rotar un secreto mientras su versión anterior está bloqueada (o si se ha planificado una rotación automática), se deniega la solicitud de rotar el secreto. La rotación sólo se permite después de que se hayan eliminado todos los bloqueos de la versión secreta anterior.
Crear bloqueos en la interfaz de usuario
Puede crear hasta 1000 bloqueos en un secreto utilizando la interfaz de usuario de Secrets Manager. Cada bloqueo se puede utilizar para representar una única aplicación o servicio que utiliza el secreto.
Un secreto se considera bloqueado después de adjuntar uno o más bloqueos al mismo. Un bloqueo sólo se puede aplicar en una versión secreta que contenga datos de carga útil o secretos activos.
Para ayudarle a crear un nuevo bloqueo y eliminar los bloqueos más antiguos en una sola operación, también puede especificar una modalidad opcional al crear el bloqueo.
Modalidad | Descripción |
---|---|
Eliminar bloqueos anteriores | Elimina cualquier otro bloqueo que coincida con el nombre que especifique. Si se encuentran bloqueos coincidentes en la versión anterior del secreto, estos bloqueos se suprimen cuando se crea el nuevo bloqueo.
Por ejemplo, supongamos que la versión anterior del secreto contiene un bloqueo |
Eliminar bloqueos anteriores y suprimir datos de la versión anterior | Igual que la opción anterior, pero también suprime de forma permanente los datos de la versión secreta anterior si no tiene ningún bloqueo asociado.
Supongamos que la versión anterior del secreto contiene un bloqueo |
Crear un bloqueo en la versión secreta actual
Puede bloquear la versión actual de un secreto utilizando la interfaz de usuario de Secrets Manager. Una solicitud correcta adjunta un nuevo bloqueo a la versión actual del secreto seleccionado, o sustituye un bloqueo del mismo nombre si ya existe.
-
En la consola, pulse el icono Menú
> Lista de recursos.
-
En la lista de servicios, seleccione la instancia de Secrets Manager.
-
En la interfaz de usuario de Secrets Manager, vaya a la lista Secretos.
-
En la fila del secreto que desea bloquear, haga clic en el menú Acciones
> Bloqueos > Crear bloqueo.
-
Añada un nombre y una descripción para identificar fácilmente la cerradura.
-
En la lista de versiones a bloquear, seleccione Actual.
-
Opcional: adjunte atributos JSON al bloqueo.
Puede incluir un objeto JSON con cada bloqueo para contener cualquier información que pueda necesitar para un flujo automatizado. Por ejemplo, un par de clave-valor que identifica el recurso que desea asociar con este bloqueo.
-
Opcional: haga que el bloqueo sea exclusivo.
Elija esta opción para eliminar cualquier otro bloqueo que coincida con el nombre que ha proporcionado. Si se encuentran bloqueos coincidentes en la versión anterior del secreto, estos bloqueos se suprimen cuando se crea el nuevo bloqueo.
-
Opcional: Borrar los datos de la versión anterior.
Elija esta opción para suprimir también de forma permanente los datos de la versión secreta anterior si no tiene ningún bloqueo asociado.
-
Pulse Crear.
Se crea un nuevo bloqueo para la versión secreta seleccionada.
Creación de un bloqueo en la versión secreta anterior
Puede bloquear la versión anterior de un secreto utilizando la interfaz de usuario de Secrets Manager. Una solicitud satisfactoria adjunta un nuevo bloqueo a la versión anterior del secreto seleccionado o sustituye un bloqueo del mismo nombre si ya existe.
-
En la interfaz de usuario de Secrets Manager, vaya a la lista Secretos.
-
En la fila del secreto que desea bloquear, haga clic en el menú Acciones
> Bloqueos > Crear bloqueo.
-
Añada un nombre y una descripción para identificar fácilmente la cerradura.
-
En la lista de versiones a bloquear, seleccione Anterior.
-
Opcional: adjunte atributos JSON al bloqueo.
Puede incluir un objeto JSON con cada bloqueo para contener cualquier información que pueda necesitar para un flujo automatizado. Por ejemplo, un par de clave-valor que identifica el recurso que desea asociar con este bloqueo.
-
Pulse Crear.
Se crea un nuevo bloqueo para la versión secreta seleccionada.
Creación de bloqueos desde la CLI
Puede crear hasta 1000 bloqueos en un secreto utilizando la CLI de Secrets Manager. Cada bloqueo se puede utilizar para representar una única aplicación o servicio que utiliza el secreto.
Un secreto se considera bloqueado después de adjuntar uno o más bloqueos al mismo. Un bloqueo sólo se puede aplicar en una versión secreta que contenga datos de carga útil o secretos activos.
Para ayudarle a crear un nuevo bloqueo y eliminar los bloqueos más antiguos en una sola operación, también puede especificar una modalidad opcional al crear el bloqueo.
Modalidad | Descripción |
---|---|
Eliminar bloqueos anteriores | Elimina cualquier otro bloqueo que coincida con el nombre que especifique. Si se encuentran bloqueos coincidentes en la versión anterior del secreto, estos bloqueos se suprimen cuando se crea el nuevo bloqueo.
Por ejemplo, supongamos que la versión anterior del secreto contiene un bloqueo |
Eliminar bloqueos anteriores y suprimir datos de la versión anterior | Igual que la opción anterior, pero también suprime de forma permanente los datos de la versión secreta anterior si no tiene ningún bloqueo asociado.
Supongamos que la versión anterior del secreto contiene un bloqueo |
Crear un bloqueo en la versión secreta actual
Puede bloquear la versión actual de un secreto utilizando la CLI Secrets Manager. Una solicitud correcta adjunta un nuevo bloqueo a la versión actual del secreto seleccionado, o sustituye un bloqueo del mismo nombre si ya existe.
Para crear un bloqueo en la versión actual de un secreto utilizando el plugin de CLI Secrets Manager, ejecute el mandato ibmcloud secrets-manager secret-locks-bulk-create
.
Puede especificar el tipo de secreto, el ID de secreto y la modalidad.
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
Creación de bloqueos con la API
Puede crear hasta 1000 bloqueos en un secreto utilizando la API Secrets Manager. Cada bloqueo se puede utilizar para representar una única aplicación o consumidor que utiliza el secreto. Una solicitud correcta adjunta un nuevo bloqueo al secreto, o sustituye un bloqueo del mismo nombre si ya existe.
Un secreto se considera bloqueado después de adjuntar uno o más bloqueos al mismo. Un bloqueo sólo se puede aplicar en una versión secreta que contenga datos de carga útil o secretos activos.
Para ayudarle a crear un nuevo bloqueo y eliminar los bloqueos más antiguos en una sola operación, también puede especificar una modalidad opcional al crear el bloqueo.
Modalidad | Parámetro de consulta | Descripción |
---|---|---|
Eliminar bloqueos anteriores | mode=remove_previous |
Elimina cualquier otro bloqueo que coincida con el nombre que especifique. Si se encuentran bloqueos coincidentes en la versión anterior del secreto, estos bloqueos se suprimen cuando se crea el nuevo bloqueo.
Por ejemplo, supongamos que la versión anterior del secreto contiene un bloqueo |
Eliminar bloqueos anteriores | mode=remove_previous_and_delete |
Igual que la opción remove_previous , pero también suprime de forma permanente los datos de la versión secreta anterior si no tiene ningún bloqueo asociado.
Supongamos que la versión anterior del secreto contiene un bloqueo |
Creación de bloqueos en la versión secreta actual
La solicitud siguiente crea dos bloqueos en la versión actual de un secreto. 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.
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"
Si está creando un flujo automatizado, puede utilizar el objeto attributes
para especificar datos de valor de clave con cada bloqueo en el secreto. Por ejemplo, puede incluir un identificador de recurso, como un ID o un nombre
de recurso de nube (CRN).
Una respuesta satisfactoria devuelve detalles sobre los nuevos bloqueos, junto con otros metadatos.
{
"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
}
]
}
Para obtener más información sobre los parámetros de solicitud necesarios y opcionales, consulte el apartado Referencia de API.
Creación de bloqueos en la versión secreta anterior
La solicitud siguiente crea dos bloqueos en la versión anterior de un secreto. 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.
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 respuesta satisfactoria devuelve detalles sobre los nuevos bloqueos, junto con otros metadatos.
{
"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
}
]
}
Para obtener más información sobre los parámetros de solicitud necesarios y opcionales, consulte el apartado Referencia de API.
Desbloqueo de secretos
Un secreto se considera desbloqueado y solo se puede modificar o suprimir después de que se hayan eliminado todos sus bloqueos asociados. Puede utilizar la interfaz de usuario o las API de Secrets Manager para suprimir los bloqueos asociados a un secreto.
Eliminación de bloqueos en la interfaz de usuario
Puede suprimir un bloqueo adjunto a un secreto existente utilizando la interfaz de usuario de Secrets Manager.
-
En la consola, pulse el icono Menú
> Lista de recursos.
-
En la lista de servicios, seleccione la instancia de Secrets Manager.
-
En la interfaz de usuario de Secrets Manager, vaya a la lista Secretos.
-
En la fila del secreto que desea actualizar, haga clic en el menú Acciones
> Cerraduras.
-
En la fila del candado que desea eliminar, haga clic en el menú Acciones
> Eliminar.
-
Para confirmar la supresión, escriba el nombre del secreto. Pulse Suprimir.
Ahora se ha suprimido el bloqueo. Para desbloquear completamente el secreto, puede eliminar todos los bloqueos existentes.
Eliminación de bloqueos con la API
Puede utilizar la API Secrets Manager para suprimir uno o varios bloqueos asociados a la versión secreta específica.
Una solicitud satisfactoria suprime los bloqueos que especifique. Para eliminar todos los bloqueos, puede pasar {"locks": ["*"]}
en el cuerpo de la solicitud. De lo contrario, especifique los nombres de los
bloqueos que desea suprimir. Por ejemplo, {"locks": ["lock-1", "lock-2"]}
.
Para saber si un secreto contiene bloqueos, compruebe el campo locks_total
que se devuelve como parte de los metadatos del secreto.
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" ]"
Para obtener más información sobre los parámetros de solicitud necesarios y opcionales, consulte el apartado Referencia de API.