Compartir a través de


Administración de un almacén de SecretStore

El módulo SecretStore es un almacén de extensiones para el módulo SecretManagement de PowerShell. Almacena secretos, localmente, en archivos para el contexto de la cuenta de usuario actual y usa las API criptográficas de .NET para cifrar el contenido del archivo. El módulo SecretStore tiene varias opciones de configuración. En la configuración predeterminada, se requiere una contraseña para almacenar y acceder a secretos, y proporciona la protección más segura. SecretStore también admite el almacenamiento de metadatos sobre secretos.

Registro de un nuevo almacén

Para poder crear un nuevo secreto, debe registrar un almacén. El parámetro Name es un nombre descriptivo y puede ser cualquier cadena válida.

Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

Importante

El módulo SecretManagement permite registrar un almacén de extensiones varias veces, ya que es posible que un almacén de extensiones admita contextos diferentes a través de VaultParameters de registro. Sin embargo, el almacén de SecretStoreactualmente siempre funciona en el ámbito de usuario que ha iniciado sesión. El registro de varios almacenes de SecretStore con nombres diferentes solo da como resultado la duplicación del mismo almacén.

Use el siguiente comando para ver una lista de almacenes registrados:

Get-SecretVault

Name        ModuleName                       IsDefaultVault
----        ----------                       --------------
Edge        SecretManagement.Chromium        False
SecretStore Microsoft.PowerShell.SecretStore True

En este ejemplo hay dos almacenes registrados mediante módulos de extensión diferentes.

Configuración de un almacén

Use el cmdlet para ver la Get-SecretStoreConfiguration configuración de un almacén.

Get-SecretStoreConfiguration

      Scope Authentication PasswordTimeout Interaction
      ----- -------------- --------------- -----------
CurrentUser       Password             900      Prompt

Los almacenes de SecretStore tienen las siguientes opciones de configuración:

  • Autenticación - Password (valor predeterminado) o None
  • PasswordTimeout - 900 segundos (valor predeterminado)
  • Interacción - Prompt (valor predeterminado) o None

La configuración predeterminada requiere una contraseña, establece el tiempo de espera de la contraseña de sesión en 15 minutos y solicita al usuario una contraseña para desbloquear el almacén.

En el caso de escenarios de automatización no interactivos, la interacción se puede configurar para None suprimir la solicitud del usuario. Si se requiere una contraseña, los comandos del almacén devuelven la excepción Microsoft.PowerShell.SecretStore.PasswordRequiredException si no hay ninguna contraseña de sesión válida. El Unlock-SecretStore cmdlet se puede usar para proporcionar la contraseña de la sesión actual de PowerShell. El almacén permanece desbloqueado hasta que expire el tiempo de espera.

La configuración y los datos del almacén se almacenan en archivos independientes. La ubicación del archivo depende del sistema operativo de la plataforma.

  • Para las plataformas Windows, la ubicación es: $env:LOCALAPPDATA\Microsoft\PowerShell\secretmanagement\localstore\
  • Para las plataformas que no son de Windows, la ubicación es: $HOME/.secretmanagement/localstore/

Cambio de la configuración

Puede cambiar la configuración de un almacén mediante el Set-SecretStoreConfiguration cmdlet . El cmdlet proporciona los parámetros Authentication, PasswordTimeout y Interaction que se usan para cambiar las propiedades de configuración correspondientes. También hay un parámetro Default para restablecer la configuración a los valores predeterminados.

Hay dos maneras de establecer la contraseña en el almacén.

  1. El Set-SecretStoreConfiguration cmdlet tiene el parámetro Password que toma un valor SecureString .
  2. El Set-SecretStorePassword cmdlet cambia la contraseña del almacén. El cmdlet no toma parámetros y solo se puede usar de forma interactiva. Se le pedirán las contraseñas antiguas y nuevas.

Adición de metadatos

El módulo SecretStore permite agregar metadatos no confidenciales a los secretos. Los metadatos se pueden usar para documentar el propósito previsto de un secreto. Por ejemplo, para indicar que un secreto está pensado para una suscripción o un escenario de aplicación concretos. También puede agregar metadatos sobre la fecha de creación, la hora de expiración del secreto u otra información usada para administrar el ciclo de vida del secreto.

Los metadatos pueden ser cualquier par clave-valor arbitrario. El módulo SecretStore admite los siguientes tipos de valor para los metadatos:

  • string
  • int
  • DateTime

Para crear un nuevo secreto con metadatos:

$metadata = @{
    Purpose = 'Testing'
    Expires = (Get-Date).AddDays(30)
    Limit = 5
}
Set-Secret -Name TestSecret -Secret NewSecret -Metadata $metadata

Para ver los metadatos secretos, puede ejecutar el comando :

Get-SecretInfo -Name TestSecret | Format-List *

Name      : TestSecret
Type      : String
VaultName : SecretStore
Metadata  : {[Limit, 5], [Expires, 6/23/2022 1:45:09 PM], [Purpose, Testing]}

También puede establecer metadatos para un secreto existente mediante el Set-SecretInfo cmdlet :

Set-SecretInfo TestSecret -Metadata @{Purpose = "showing the new cmdlet"}
Get-SecretInfo -Name TestSecret | Select-Object Metadata

Metadata
--------
{[Purpose, showing the new cmdlet]}

Precaución

Esto sobrescribe los metadatos existentes con los nuevos valores.

Restablecer o quitar un almacén

El Reset-SecretStore cmdlet restablece el almacén de SecretStore eliminando todos los datos secretos y configurando el almacén con opciones predeterminadas. Está pensado para usarse solo cuando se pierde la contraseña necesaria o los archivos de datos se dañan. Las opciones de configuración predeterminadas se pueden invalidar especificando parámetros de opción de configuración de comandos individuales.