היתרונות הבולטים בשימוש ב-AZURE KEY VAULT

היתרונות הבולטים בשימוש ב-AZURE KEY VAULT

כאשר אנחנו עובדים בסביבה מורכבת , הכוללת גם רכיבי PaaS ו-IaaS ניתן ורצוי להשתמש Key שממנו ניתן להפיק תעודה אחת ולהתנהל בכל הסביבה (במידה ומדובר באותו דומיין)

כאשר החידוש מבוצע בצורה אוטומטית  Azure Key Vault.



Azure App Services – WebWpps

1. כאשר מתבצע חידוש Certificate  ה-Key Vault  מבצע עבורנו את רוב העבודה

בהוספת WebApps חדש התעודה חלה באופן אוטומטי ללא צורך בהתקנה ובסוף התקופה החידוש נעשה באופן אוטומטי , ולכן בזמן החידוש עלינו רק לוודא שהתעודה התחדשה ברכיבים הנוספים מול האתר כגון WAF\Azure AD Application Proxy ועוד.

במקרה זה אין צורך ב-Export  של Certificate  או צורך בשמירה של המפתח , הכל מאובטח ב-Vault.



2. IAAS - IIS Server \ WAF  

במקרים בהם יש צורך PFX  של התעודה והנפקת מפתח לצורך התקנה , אנו יכולים באמצאות PowerShell Script לבצע Export ולהנפיק מפתח Key ולצורך שימוש ידניים באמצעות ה-Script

$appServiceCertificateName = ""

$resourceGroupName = ""

$azureLoginEmailId = ""

$subscriptionId = ""

 

Login-AzureRmAccount

Set-AzureRmContext -SubscriptionId $subscriptionId

 

$ascResource = Get-AzureRmResource -ResourceName $appServiceCertificateName -ResourceGroupName $resourceGroupName -ResourceType "Microsoft.CertificateRegistration/certificateOrders" -ApiVersion "2015-08-01"

$keyVaultId = ""

$keyVaultSecretName = ""

 

$certificateProperties=Get-Member -InputObject $ascResource.Properties.certificates[0] -MemberType NoteProperty

$certificateName = $certificateProperties[0].Name

$keyVaultId = $ascResource.Properties.certificates[0].$certificateName.KeyVaultId

$keyVaultSecretName = $ascResource.Properties.certificates[0].$certificateName.KeyVaultSecretName

 

$keyVaultIdParts = $keyVaultId.Split("/")

$keyVaultName = $keyVaultIdParts[$keyVaultIdParts.Length - 1]

$keyVaultResourceGroupName = $keyVaultIdParts[$keyVaultIdParts.Length - 5]

Set-AzureRmKeyVaultAccessPolicy -ResourceGroupName $keyVaultResourceGroupName -VaultName $keyVaultName -UserPrincipalName $azureLoginEmailId -PermissionsToSecrets get

$secret = Get-AzureKeyVaultSecret -VaultName $keyVaultName -Name $keyVaultSecretName

$pfxCertObject=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @([Convert]::FromBase64String($secret.SecretValueText),"", [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

$pfxPassword = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 50 | % {[char]$_})

$currentDirectory = (Get-Location -PSProvider FileSystem).ProviderPath

[Environment]::CurrentDirectory = (Get-Location -PSProvider FileSystem).ProviderPath

[io.file]::WriteAllBytes(".\appservicecertificate.pfx", $pfxCertObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $pfxPassword))

Write-Host "Created an App Service Certificate copy at: $currentDirectory\appservicecertificate.pfx"

Write-Warning "For security reasons, do not store the PFX password. Use it directly from the console as required."

 

לאחר מכן אפשר להשתמש ולהתקין את PFX באמצעות ה-Key Password היכן שנזדקק כגון IIS או WAF.