#AzureKeyVault
Explore tagged Tumblr posts
Text
1 note
·
View note
Text
7 Hashicorp Vault Alternatives in 2024
7 Hashicorp Vault Alternatives in 2024 #devops #hashicorpvault #secretsmanagement #security #cybersecurity #plaintextpasswords #cicdpipelines #cloudsecrets #azurekeyvault #awssecretsmanager #akeyless #cyberarkconjur #mozillasops #doppler #kubernetes
Hashicorp Vault is a popular solution for ones looking at secrets management with DevOps and other workflows. However, there are alternatives out there that have similar features and may offer a better solution for your use case. We will consider 7 Hashicorp Vault alternatives in 2024 to see which one might suit your needs best. Table of contentsBrief overview of Hashicorp VaultWhy choose a…
0 notes
Text
ASP.NET Core - Gestire le chiavi di sicurezza con AddDataProtection()
In questo articolo ci dedicheremo all'approfondimento di un aspetto molto importante che riguarda le impostazioni di sicurezza introdotte con ASP.NET Core: le Data Protection APIs, ovvero le interfacce che determinano il funzionamento delle chiavi di sicurezza utilizzate all'interno della nostra applicazione. Come probabilmente già molti sviluppatori sapranno, le applicazioni ASP.NET Core utilizzano infatti un set di chiavi di sicurezza per effettuare molteplici attività di encrypt, decrypt e convalida dei vari token che vengono rilasciate dai vari middleware di autorizzazione e autenticazione: bearer token, cookie di sessione, antiforgery, token che identificano le richieste di cambio password dell'utente, etc.; ciascuno di questi token viene generato automaticamente dall'applicazione utilizzando un set di chiavi di sicurezza univoco, così da minimizzare i rischi che un attacker possa dotarsi degli strumenti necessari per poter generare token "validi". Per impostazione predefinita, queste chiavi di sicurezza vengono generate in memoria nel momento in cui l'applicazione viene avviata. Si tratta di una strategia indubbiamente molto efficace per prevenire gli attacchi malevoli di cui sopra, ma è certamente poco pratico per la gestione ordinaria della maggior parte delle applicazioni: in questo modo, infatti, ogni volta che la app viene riavviata saranno generate delle nuove chiavi di sicurezza, rendendo impossibile effettuare il decrypt o l'identificazione dei contenuti crittografati precedentemente rilasciati: in termini pratici questo significa che, ad esempio, tutti i cookie crittografati rilasciati fino a quel momento (tra cui i cookie di sessione, i cookie "ricordati di me" etc) saranno considerati invalidi, costringendo gli utenti a inserire nuovamente le credenziali. Questo tipo di inconvenienti possono essere trascurabili quando la nostra web application viene lanciata nell'environment di sviluppo (Development) o in un ambiente di Staging, ma potrebbero risultare molto fastidiosi per la nostra user base quando la nostra app viene pubblicata su un server di Produzione. Per ovviare a questo problema, è possibile configurare un behavior diverso da quello predefinito utilizzando l'apposito metodo services.AddDataProtection() all'interno del file Startup.cs. (o Program.cs, per le app sviluppate a partire da .NET 6). Nell'esempio seguente, ad esempio, viene chiesto all'applicazione di generare le chiavi su un'apposita cartella /App_Keys/ (presente su FileSystem) e rigenerate ogni 90 giorni: services.AddDataProtection() .SetApplicationName("myApp") .SetDefaultKeyLifetime(TimeSpan.FromDays(90)) .PersistKeysToFileSystem(new DirectoryInfo("/App_Keys/")); } Affinché il codice di cui sopra funzioni, è necessario svolgere le seguenti operazioni sulla macchina server: - Creare la cartella /App_Keys/ all'interno del folder di pubblicazione. - Impostare i permessi di scrittura per l'utente IIS_IUSRS (o dell' utente relativo all'Application Pool utilizzata). In assenza di questa cartella o dei permessi di scrittura l'applicazione in produzione darà errore, in quanto non riuscirà a memorizzare le chiavi di sicurezza su disco. Ovviamente l'ipotesi di persistere le chiavi di sicurezza su FileSystem è solo una delle possibili alternative: le Data Protection APIs consentono di implementare soluzioni di memorizzazione anche più sicure ed efficaci, come ad esempio mediante l'utilizzo di Azure Key Vault o altri Key Storage Providers, ovvero servizi che consentono la memorizzazione sicura delle credenziali. Per maggiori informazioni, consigliamo di consultare la guida alla configurazione dei Key Storage Providers su Microsoft Docs.
Riferimenti utili
- Get Started with the Data Protection APIs in ASP.NET Core - Configure ASP.NET Core Data Protection - Key Storage Providers in ASP.NET Core Read the full article
0 notes
Link
Read to know how to securely share secrets by integrating AWS & Azure for the best of both.
0 notes
Text
[AzureScript][T1:E4] ¡Enmascarando contraseñas!
¡Hola! Ésta será la última parte de esta serie, por si no recordas bien o queres repasar las anteriores, acá están los links:
T1:E1 - Introducción
T1:E2 - Usos Básicos
T1:E3 - Login Automático
Haciendo un breve repaso de la serie, básicamente hemos visto las librerías básicas para interactuar con Azure utilizando PowerShell. Vimos ejemplos de éstas interacciones y la forma de automatizar 100% nuestros scripts para que no requieran interacción alguna con el usuario.
En esta última parte de la serie, vamos a abordar un tema que quedó pendiente en la anterior: no exponer nuestras credenciales a simple vista en el Script. Imagínense lo poco seguro que sería tener la contraseña a simple vista en nuestro script, algo como $password = "martin123" probablemente nos llevaría (con suerte) a un reto en una inspección de auditoria. Incluso si somos cuidadosos con el script, nos restringe la posibilidad de compartirlo para mostrar la lógica, o subirlo a un repositorio público de github para compartir conocimiento. Por esta razón, el broche de oro de esta serie tendrá foco en formas comunes de evitar exponer nuestras credenciales. Para esto veremos 2 formas, cada una con sus ventajas y desventajas.
Una particularidad de esta entrada en el blog, es que finalmente me mude definitivamente a Linux. Por lo que verán que las rutas a los archivos no comienzan con C:/ como en windows, pero a los fines prácticos es lo mismo. También mencionaré que para esta oportunidad estaré usando el módulo Az para comunicarme con Azure, en lugar de AzureRM como venia haciéndolo en entregas anteriores (ya expliqué sus diferencias, y como llevar los comandos de uno a otro de forma simple).
Primera forma
Ésta es la mas obvia quizás, la primera que se nos ocurriría: guardar la contraseña en un archivo separado y encriptado. Por suerte, esto es sencillo de hacer con PowerShell. Primero deberíamos abrir una nueva consola y crear este archivo, para luego llamarlo desde nuestro script. Abrimos PowerShell y tipeamos:
$mypass = "martin123" | ConvertTo-SecureString -AsPlainText -Force $mypass = Read-Host -AsSecureString $mypass | ConvertFrom-SecureString | Set-Content "/home/martin/python/Investigacion/Powershell/creds.txt"
¿Que hemos hecho acá? En la primera linea simplemente creamos un objeto de powershell conocido como SecureString, que básicamente almacena una variable tipo string encriptada y no puede ser leída fácilmente. En la segunda linea simplemente almacenamos el contenido de esta variable en el archivo creds.txt. Esto lo haríamos por única vez, y no estaría incluido en el script final. Es, simplemente, para generar el archivo. Si abrimos este archivo de texto, no veremos la contraseña sino una cadena de caracteres encriptados que no nos permitirán saber la contraseña original, en mi caso decía algo así:
6d0061007200740069006e00310032003300.
Luego, para tomar el contenido del archivo simplemente ejecutamos. Esto SI estaría en nuestro script final:
$mypass = Get-Content "/home/martin/python/Investigacion/Powershell/creds.txt" | ConvertTo-SecureString
De este modo, habremos tomado el contenido encriptado del archivo, y lo almacenamos en una variable de powershell en un objeto tipo SecureString que podemos utilizar como nuestra contraseña al crear el objeto PSCredential (explicado en la parte 3 de esta serie).
Podríamos llevar esto un paso mas avanzado en la seguridad, teniendo una clave propia para desencriptar la password en otro archivo separado, con la desventaja de que esto nos lleva a tener 2 archivos ademas del script, pero con la ventaja de que nosotros manejamos la clave de encriptacion con SHA-256. Veamos como hacerlo.
El primer paso sera crear el archivo con la llave de encriptacion (recuerden cambiar la ruta de archivo):
$Key = New-Object Byte[] 32 [Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key) $Key | out-file /home/martin/python/Investigacion/Powershell/key.key
De este modo habremos creado un archivo con la clave de encriptacion que usaremos para encriptar nuestra password en el archivo creds.txt. Ahora, volvamos a generar creds.txt:
$mypass = Read-Host -AsSecureString $mypass | ConvertFrom-SecureString -Key (Get-Content /home/martin/python/Investigacion/Powershell/key.key) | Set-Content "/home/martin/python/Investigacion/Powershell/creds.txt"
Así, creamos un archivo que tendrá nuestra password encriptada según la clave que creamos previamente. Para recuperar esta contraseña, usamos:
$password = Get-Content "/home/martin/python/Investigacion/Powershell/creds.txt" | ConvertTo-SecureString -Key (Get-Content "/home/martin/python/Investigacion/Powershell/key.key")
¡Listo! De este modo, no alcanza solo con tener el archivo con la contraseña encriptada, sino que también tendremos que utilizar el archivo .key para poder desencriptar el primer archivo, y crear satisfactoriamente el objeto SecureString (el cual tampoco nos mostrara la contraseña en texto plano).
Segunda forma
Otra manera de no exponer nuestras contraseñas, seria mediante el uso de un servicio de Azure llamado KeyVault. En este servicio podemos almacenar claves, y recuperarlas de un modo seguro, pudiendo acceder a ellas solo quienes estén autorizados en Azure para hacerlo. Para esto, primero logueamos en Azure y creamos un recurso KeyVault (cambia el nombre del grupo de recursos según lo que tengas creado en tu suscripción):
Login-AzAccount New-AzKeyVault -Name 'LaDataKeys' -ResourceGroupName 'Wasteland' -Location 'East US'
Después, generamos el objeto SecureString y lo agregamos como un secreto:
$mypass = Read-Host -AsSecureString Set-AzKeyVaultSecret -VaultName 'LaDataKeys' -Name 'TutorialPassword' -SecretValue $mypass
Para recuperar el objeto SecureString, usamos:
$password = (Get-AzKeyVaultSecret -vaultName "LaDataKeys" -name "TutorialPassword").SecretValue
¡Listo! Mucho más fácil ¿verdad? Es que ese es el objetivo y uno de los principales beneficios de los servicios cloud. Simplificarnos la vida. En este caso mediante la protección de nuestras claves en un llavero.
Por supuesto que necesitaremos darle permisos a nuestro Service Principal sobre el KeyVault que acabamos de crear, de otro modo ¡no podrá acceder al secreto! Para cualquier trabajo que tenga que quedar productivo, recomiendo mezclar ambos métodos y nunca mostrar en texto plano el SecretId, menos ahora que sabemos encriptarlo con SHA-256 ;)
Con esto cierro este ciclo de PowerShell con Azure, espero les haya sido de utilidad, ¡sigan leyendo y aprendiendo contenido en LaDataWeb!
Escrito por Martin Zurita
#Azure#Powershell#AzureArgentina#azureautomation#AzureKeyVault#KeyVault#AzurePowershell#AzureCLI#Encryption#azure cordoba#azure jujuy#azure argentina#azure tutorial#azure training#powershell tutorial#powershell training
0 notes
Video
youtube
Azure Tip: Mit der PowerShell in Azure die Storage Account Keys mit eine...
0 notes
Text
AzureR and AzureKeyVault
by Hong Ooi, senior data scientist, Microsoft Azure Just a couple of announcements regarding my family of packages for working with Azure from R. First, the packages have moved from the cloudyr org... ... http://bit.ly/2WaAoSd
0 notes
Link
Make things easier and much more #secure with #AzureDevops variable groups and #azurekeyvault for your #build and #release https://t.co/gZ31nSGcB3#Devops #Azure
— Alain Vezina (@Avezina) October 25, 2018
0 notes
Text
Favorite tweets
Using #Azure Key Vault as the Password Repository For You and Your Team #AzureKeyVault… https://t.co/DTcvC3LM9B http://pic.twitter.com/FxSNXBefbe
— Tao Yang (@MrTaoYang) March 3, 2017
from http://twitter.com/MrTaoYang via IFTTT
0 notes
Video
youtube
[English] Azure Tip: Send an Azure Security Center (ASC) Alert to the Mi...
0 notes
Video
youtube
[English] Azure Tip: Create a key vault in Azure using the Azure CLI
0 notes
Video
youtube
Azure Tip: Azure Key Vault - Access Policy versus Role-based Access Cont...
0 notes
Video
youtube
Azure Tip: Mit der Azure CLI (command-line interface) in Azure einen Key...
0 notes
Text
RT @MrTaoYang: Using #Azure Key Vault as the Password Repository For You and Your Team #AzureKeyVault… https://t.co/DTcvC3LM9B https://t.co/FxSNXBefbe
Using #Azure Key Vault as the Password Repository For You and Your Team #AzureKeyVault… https://t.co/DTcvC3LM9B http://pic.twitter.com/FxSNXBefbe
— Tao Yang (@MrTaoYang) March 3, 2017
from Twitter https://twitter.com/sstranger March 03, 2017 at 05:10PM via IFTTT
0 notes