El valor es un extremo separado
Describir un secreto y leerlo son operaciones diferentes con permisos diferentes.GET /v1/secrets/{id}
Nombre, descripción, etiquetas, número de versión actual, clave KMS a la que está vinculada, estado de eliminación. Nunca el valor. Protegido por
secrets:DescribeSecret.GET /v1/secrets/{id}/value
El texto descifrado, codificado en base64. Protegido por el separado, más estrecho
secrets:GetSecretValue.secrets:DescribeSecret en todo y aún así no ser capaces de leer un solo valor.
Cada lectura de texto sin formato se registra, con éxito o no. Una lectura denegada, una prueba para un id que el llamador no posee, y un descifrado que falló, todos se escriben en el rastro de auditoría con el código de error que los detuvo — ese conjunto es exactamente lo que una revisión está buscando, y sería invisible si solo se registraran los éxitos.
?version=N para leer una versión específica en lugar de la actual.
El botón Reveal de la consola, en cada fila de la pestaña Versions de un secreto, llama a este extremo. Es la misma operación con el mismo permiso y el mismo registro de auditoría: abrir un secreto en un navegador no es una forma más silenciosa de leerlo.
Versiones
- Console
- API
- CLI
- Go
Abra el secreto de Secrets y elija Put New Value. El diálogo Put
new value toma el New value; Store new version lo escribe y se convierte en actual.Cada versión permanece en la lista de la pestaña Versions, con la más reciente marcada como Current.
?version= explícito. Eso es lo que hace que la rotación sea segura: publicas el nuevo valor, dejas que los consumidores lo recojan y aún tienes el antiguo para volver a usar.
GET /v1/secrets/{secret_id}/versions muestra los metadatos de la versión, la más alta primero. Cada entrada lleva created_by, identificando al autor que la escribió. Los usuarios se registran como crn:iam:::user/<id>, las cuentas de servicio por su UUID, y las sesiones de rol asumido como crn:iam:::assumed-role/<id>.
Los metadatos de versión nunca incluyen texto cifrado.
GET .../value es la única ruta que produce texto plano, y es la única que necesita secrets:GetSecretValue.
