¿Cómo guardar y obtener valor secreto de Azure Key Vault usando PowerShell? – TrucosInformaticos

Powershell

La codificación de secretos en scripts o configuraciones de aplicaciones está mal vista y presenta riesgos potenciales de seguridad para su organización. Pero almacenar secretos de forma segura y hacerlos compartibles y fácilmente recuperables siempre ha sido un desafío para los desarrolladores y administradores.

Ha habido desarrollos en este frente en los últimos años. En PowerShell, hay varias formas de cifrar secretos, como exportarlos a un XML, guardarlos en el Administrador de credenciales de Windows o usar el Almacén de secretos. Estas son opciones viables de gestión de secretos, pero no producen secretos portátiles o compartibles.

Una excelente alternativa es Azure Key Vault, que ofrece más accesibilidad y control sobre sus certificados y secretos almacenados. Esta publicación explorará cómo almacenar y obtener valor secreto de Azure Key Vault mediante PowerShell.

Requisitos

Preparar los recursos

Antes de que podamos almacenar y recuperar el secreto de Azure Key Vault, primero preparemos que los recursos necesarios estén disponibles.

Conéctese a Azure PowerShell

Para comenzar, puede abrir una sesión de Azure Cloud Shell.

O bien, inicie sesión en la sesión de Az PowerShell en su computadora.

# Connect to Az PowerShell 
$tenantId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' 
$subscriptionId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' 
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId

recuperar el secreto de la bóveda de claves azul

Crear un nuevo grupo de recursos

A continuación, creemos un nuevo grupo de recursos para esta demostración. En este ejemplo, estamos creando un grupo de recursos denominado demo-rg en la ubicación eastus.

# Create a New Resource Group 
$location = 'eastus' 
$resourceGroupName="demo-rg" 
New-AzResourceGroup -Name $resourceGroupName -Location $location

valor clave azul

Crear un nuevo almacén de claves

Dentro del nuevo grupo de recursos, vamos a crear el Azure Key Vault llamado bóveda0965.

Nota. El nombre del almacén de claves debe ser único a nivel mundial.

# Create a new key vault 
$keyVaultName="vault0965" 

New-AzKeyVault ` 
-Name $keyVaultName ` 
-ResourceGroupName $resourceGroupName ` 
-Location $location

valor secreto de actualización de Azure Key Vault

Después de crear Key Vault, puede verificarlo desde Azure Portal.

Azure Key Vault recuperar secreto

Almacene y recupere secretos de Azure Key Vault mediante PowerShell

Ahora está listo para almacenar nuevos secretos en Azure Key Vault. Para eso, usaremos el cmdlet Set-AzKeyVaultSecret.

Nota. El cmdlet Set-AzKeyVaultSecret crea una nueva entrada secreta en el almacén de claves. Si el almacén de claves específico ya existe, este cmdlet lo actualizará con una nueva versión.

Por ejemplo, almacenemos un valor de clave secreta de API en el almacén.

$keyVaultName="vault0965" 
$secretName="vault-demo" 
$secretValue = ('AYI8Q~fwAwcmxrJbiOfNMel2B.B0mxJwioXFTb51' | ` 
ConvertTo-SecureString -AsPlainText -Force) 
$tag = @{ 
AppId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' 
DirectoryId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' 
} 

Set-AzKeyVaultSecret ` 
-VaultName $keyVaultName ` 
-Name $secretName ` 
-SecretValue $secretValue ` 
-Tag $tag

El nuevo secreto se ha creado correctamente. Observe el valor de Versión: muestra la versión actual del secreto. Este valor cambia cada vez que actualiza el secreto.

recuperar el secreto de Azure Key Vault PowerShell

Nota. Aprenda a conectar Azure Virtual Networks con el emparejamiento de vNet.

Cuando necesite recuperar el secreto de Azure Key Vault y sus valores personalizados, puede ejecutar el cmdlet Get-AzKeyVaultSecret a continuación.

$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName 
$secret.SecretValue | ConvertFrom-SecureString -AsPlainText 
$secret.TagsTable

La siguiente captura de pantalla muestra el valor secreto recuperado y los atributos personalizados.

recuperar el secreto de Azure Key Vault PowerShell

Uso de Azure Key Vault con el módulo de administración de secretos de PowerShell

Puede registrar Azure Key Vault como proveedor de almacén si también trabaja con el Módulo de administración de secretos de PowerShell.

Para instalar el módulo de administración de secretos, ejecute este comando.

# Install Microsoft.PowerShell.SecretManagement module 
Install-Module Microsoft.PowerShell.SecretManagement -Repository PSGallery

A continuación, registre el módulo Azure Key Vault (Az.KeyVault) como proveedor del almacén.

# Register the Azure Key Vault 
Register-SecretVault ` 
-Name $keyVaultName ` 
-ModuleName Az.KeyVault ` 
-VaultParameters @{ AZKVaultName = $keyVaultName; SubscriptionId = $subscriptionId } 

# List the secret vault 
Get-SecretVault

Como puede ver a continuación, Azure Key Vault está registrado localmente en la computadora.

Azure Key Vault recuperar secreto usando PowerShell

En cuyo caso, ahora podemos recuperar el secreto usando el cmdlet Get-Secret de la siguiente manera:

Get-Secret -Vault $keyVaultName -Name $secretName -AsPlainText

asignar un valor secreto a la bóveda de claves de Azure

Asignación de acceso a Azure Key Vault

Solo el usuario que creó Azure Key Vault puede acceder a él de forma predeterminada. Pero, ¿qué sucede si está trabajando con un equipo y ellos también necesitan acceder a los secretos dentro de la bóveda de claves? Puede compartir el almacén de claves creando una política de acceso.

Si bien puede crear una política de acceso y asignarla a usuarios individuales, tiene más sentido crear una política de acceso para un grupo de seguridad. De esa forma, solo necesita crear una política para un grupo y los miembros del grupo tendrán los mismos permisos de acceso.

Nota. Lea nuestro artículo sobre cómo crear un atributo de usuario personalizado en Azure AD.

Primero, vamos a crear un grupo con seguridad habilitada llamado «Usuarios de Azure Key Vault».

New-AzADGroup -DisplayName 'Azure Key Vault Users' -MailNickname 'AzKeyVaultUsers' -SecurityEnabled

Asegúrese de copiar el valor de Id. Necesitarás esto para el siguiente paso.

obtener valor secreto de Azure Key Vault

Ahora, creemos una política de acceso que otorgue permisos secretos Obtener y Listar al grupo.

Set-AzKeyVaultAccessPolicy ` 
-VaultName $keyVaultName ` 
-ObjectId '3596af13-7918-43e3-9a1a-39d66883ff33' ` 
-PermissionsToSecrets get, list

Si algún usuario que no es miembro del grupo de seguridad recibe el siguiente error al intentar acceder al almacén de claves.

Azure Key Vault recupera el secreto a través de PowerShell

Por último, agregue nuevos miembros al grupo.

Add-AzADGroupMember ` 
-TargetGroupObjectId '3596af13-7918-43e3-9a1a-39d66883ff33' ` 
-MemberUserPrincipalName 'azkvuser1@<org>.onmicrosoft.com'

Todos los usuarios que son miembros del grupo pueden obtener valor secreto de Azure Key Vault mediante PowerShell o cualquier otro método.

PowerShell obtiene valor de Azure Key Vault

Conclusión

Azure Key Vault es una de las formas más excelentes de administrar secretos en la nube. Los secretos se pueden compartir con otros mediante políticas de acceso. Además de poder almacenar y recuperar secretos de Azure Key Vault, también puede almacenar y obtener certificados y llaves.

Continúe, explore más y descubra cómo Azure Key Vault puede cambiar la forma en que administra los secretos en sus proyectos.

5/5 - (100 votos)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *