Usar certificados para acessar com segurança o Azure Key Vault com o Lote
Aviso
Os certificados da conta do Lote detalhados neste artigo foram preteridos. Para acessar com segurança o Azure Key Vault, basta usar as Identidades gerenciadas do pool com as permissões de acesso apropriadas configuradas para a identidade gerenciada atribuída pelo usuário para acessar seu Key Vault. Se você precisar provisionar certificados em nós do Lote, utilize a extensão de VM do Azure Key Vault disponível em conjunto com a Identidade Gerenciada do pool para instalar e gerenciar certificados no pool do Lote. Para saber mais sobre como implantar certificados do Azure Key Vault com a Identidade Gerenciada em pools do Lote, consulte Habilitar a rotação automática de certificados em um pool do Lote.
Neste artigo, você aprenderá a configurar os nós do Lote com certificados para acessar com segurança as credenciais armazenadas no Azure Key Vault.
Para autenticar o Azure Key Vault em um nó de Lote, você precisará de:
- Uma credencial do Microsoft Entra
- Um certificado
- Uma conta do lote
- Um pool do lote com pelo menos um nó
Obter um certificado
Se você ainda não tiver um certificado, use o cmdlet New-SelfSignedCertificate
do PowerShell para criar um certificado autoassinado.
Criar uma entidade de serviço
O acesso a Key Vault é concedido a um usuário ou a uma entidade de serviço. Para acessar o Key Vault de modo programático, use uma entidade de serviço com o certificado que você criou na etapa anterior. A entidade de serviço deve estar no mesmo locatário do Microsoft Entra que o Key Vault.
$now = [System.DateTime]::Parse("2020-02-10")
# Set this to the expiration date of the certificate
$expirationDate = [System.DateTime]::Parse("2021-02-10")
# Point the script at the cer file you created $cerCertificateFilePath = 'c:\temp\batchcertificate.cer'
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import($cerCertificateFilePath)
# Load the certificate into memory
$credValue = [System.Convert]::ToBase64String($cer.GetRawCertData())
# Create a new AAD application that uses this certificate
$newADApplication = New-AzureRmADApplication -DisplayName "Batch Key Vault Access" -HomePage "https://batch.mydomain.com" -IdentifierUris "https://batch.mydomain.com" -certValue $credValue -StartDate $now -EndDate $expirationDate
# Create new AAD service principal that uses this application
$newAzureAdPrincipal = New-AzureRmADServicePrincipal -ApplicationId $newADApplication.ApplicationId
As URLs do aplicativo não são importantes, pois elas estão sendo usadas somente para acesso ao Key Vault.
Conceder direitos para Key Vault
A entidade de serviço criada na etapa anterior precisa de permissão para recuperar os segredos de Key Vault. A permissão pode ser concedida por meio do portal do Azure ou com o comando do PowerShell abaixo.
Set-AzureRmKeyVaultAccessPolicy -VaultName 'BatchVault' -ServicePrincipalName '"https://batch.mydomain.com' -PermissionsToSecrets 'Get'
Atribuir um certificado de uma conta de Lote
Crie um pool do Lote, vá para a guia certificado no pool e atribua o certificado que você criou. O certificado agora está em todos os nós do Lote.
Em seguida, atribua o certificado à conta do Lote. A atribuição do certificado à conta nos permite que o Lote o atribua aos pools e nós. A maneira mais fácil de fazer isso é acessar sua conta do Lote no portal, navegar até Certificados e selecionar Adicionar. Carregue o arquivo .pfx
gerado anteriormente e forneça a senha. Depois de concluído, o certificado é adicionado à lista e você pode verificar a impressão digital.
Agora, ao criar um pool do Lote, você poderá navegar até Certificados dentro do pool e atribuir a esse pool o certificado que você criou. Ao fazer isso, certifique-se de selecionar LocalMachine para o local de armazenamento. O certificado é carregado em todos os nós do Lote no pool.
Instalar o Azure PowerShell
Se você planeja acessar Key Vault usando scripts do PowerShell em seus nós, precisará da biblioteca Azure PowerShell instalada. Se os seus nós tiverem o WMF (Windows Management Framework) 5 instalado, você poderá usar o comando install-module para baixá-lo. Se você está usando nós que não têm o WMF 5, a maneira mais fácil de instalá-lo é agrupar o arquivo .msi
do Azure PowerShell aos seus arquivos do Lote e chamar o instalador como a primeira parte do script de inicialização do Lote. Consulte este exemplo para obter detalhes:
$psModuleCheck=Get-Module -ListAvailable -Name Azure -Refresh
if($psModuleCheck.count -eq 0) {
$psInstallerPath = Join-Path $downloadPath "azure-powershell.3.4.0.msi" Start-Process msiexec.exe -ArgumentList /i, $psInstallerPath, /quiet -wait
}
Acessar Key Vault
Agora, você está pronto para acessar o Key Vault em scripts em execução nos seus nós do Lote. Para acessar o Key Vault de um script, tudo o que você precisa é que seu script se autentique na ID do Microsoft Entra usando o certificado. Para fazer isso no PowerShell, use os comandos de exemplo a seguir. Especifique o GUID apropriado para impressão digital, ID do aplicativo (a ID da entidade de serviço) e a ID do locatário (o locatário onde a entidade de serviço existe).
Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId
Depois de autenticado, acesse o KeyVault como você faria normalmente.
$adminPassword=Get-AzureKeyVaultSecret -VaultName BatchVault -Name batchAdminPass
Essas são as credenciais a serem usadas no seu script.
Próximas etapas
- Saiba mais sobre o Azure Key Vault.
- Examine a Linha de base de segurança do Azure para o Lote.
- Saiba mais sobre recursos do Lote, como configuração de acesso a nós de computação, uso de nós de computação do Linux e uso de pontos de extremidade privados.