Gerir Key Vault no Azure Stack Hub com o PowerShell

Este artigo descreve como criar e gerir um cofre de chaves no Azure Stack Hub com o PowerShell. Irá aprender a utilizar Key Vault cmdlets do PowerShell para:

  • Criar um cofre de chaves.
  • Armazene e faça a gestão de chaves criptográficas e segredos.
  • Autorizar utilizadores ou aplicações a invocar operações no cofre.

Nota

Os cmdlets do Key Vault PowerShell descritos neste artigo são fornecidos no SDK Azure PowerShell.

Pré-requisitos

Ativar a sua subscrição de inquilino para operações de Key Vault

Antes de poder emitir quaisquer operações num cofre de chaves, tem de garantir que a subscrição do inquilino está ativada para operações do cofre. Para verificar se as operações do cofre de chaves estão ativadas, execute o seguinte comando:

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

Se a sua subscrição estiver ativada para operações do cofre, a saída mostra Que RegistrationState está Registado para todos os tipos de recursos de um cofre de chaves.

Estado de registo do cofre de chaves no Powershell

Se as operações do cofre não estiverem ativadas, emita o seguinte comando para registar o serviço Key Vault na sua subscrição:

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

Se o registo for bem-sucedido, é devolvido o seguinte resultado:

Registo do cofre de chaves no Powershell com êxito

Quando invoca os comandos do cofre de chaves, poderá receber um erro, como "A subscrição não está registada para utilizar o espaço de nomes "Microsoft.KeyVault". Se receber um erro, confirme que ativou o fornecedor de recursos Key Vault ao seguir as instruções anteriores.

Criar um cofre de chaves

Antes de criar um cofre de chaves, crie um grupo de recursos para que todos os recursos relacionados com o cofre de chaves existam num grupo de recursos. Utilize o seguinte comando para criar um novo grupo de recursos:

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Novo grupo de recursos gerado no Powershell

Agora, utilize o seguinte cmdlet para criar um cofre de chaves no grupo de recursos que criou anteriormente. Este comando lê três parâmetros obrigatórios: nome do grupo de recursos, nome do cofre de chaves e localização geográfica.

Execute o seguinte comando para criar um cofre de chaves:

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Novo cofre de chaves gerado no Powershell

O resultado deste comando mostra as propriedades do cofre de chaves que criou. Quando uma aplicação acede a este cofre, tem de utilizar a propriedade URI do Cofre , que está https://vault01.vault.local.azurestack.external neste exemplo.

implementação do Serviços de Federação do Active Directory (AD FS) (AD FS)

Numa implementação do AD FS, poderá receber este aviso: "A política de acesso não está definida. Nenhum utilizador ou aplicação tem permissão de acesso para utilizar este cofre." Para resolver este problema, defina uma política de acesso para o cofre com o comando Set-AzKeyVaultAccessPolicy :

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

Gerir chaves e segredos

Depois de criar um cofre, utilize estes passos para criar e gerir chaves e segredos no cofre.

Criar uma chave

Utilize o cmdlet Add-AzureKeyVaultKey para criar ou importar uma chave protegida por software num cofre de chaves:

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

O -Destination parâmetro é utilizado para especificar que a chave está protegida por software. Quando a chave é criada com êxito, o comando produz os detalhes da chave criada.

Nova chave do cofre de chaves gerada no Powershell

Agora, pode referenciar a chave criada com o respetivo URI. Se criar ou importar uma chave com o mesmo nome que uma chave existente, a chave original é atualizada com os valores especificados na nova chave. Pode aceder à versão anterior com o URI específico da versão da chave. Por exemplo:

  • Utilize https://vault10.vault.local.azurestack.external:443/keys/key01 para obter sempre a versão atual.
  • Utilize https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a para obter esta versão específica.

Obter uma chave

Utilize o cmdlet Get-AzureKeyVaultKey para ler uma chave e os respetivos detalhes:

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

Criar um segredo

Utilize o cmdlet Set-AzureKeyVaultSecret para criar ou atualizar um segredo num cofre. É criado um segredo se ainda não existir. É criada uma nova versão do segredo se já existir:

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

Criar um segredo no Powershell

Obter um segredo

Utilize o cmdlet Get-AzureKeyVaultSecret para ler um segredo num cofre de chaves. Este comando pode devolver todas ou versões específicas de um segredo:

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

Depois de criar as chaves e os segredos, pode autorizar aplicações externas a utilizá-las.

Autorizar uma aplicação a utilizar uma chave ou segredo

Utilize o seguinte cmdlet para autorizar uma aplicação a aceder a uma chave ou segredo no cofre de chaves.

No exemplo seguinte, o nome do cofre é ContosoKeyVault e a aplicação que pretende autorizar tem um ID de cliente de 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed. Para autorizar a aplicação, execute o seguinte comando. Também pode especificar o parâmetro PermissionsToKeys para definir permissões para um utilizador, uma aplicação ou um grupo de segurança.

Ao utilizar o cmdlet num ambiente do Azure Stack Hub configurado pelo AD FS, deve ser fornecido o parâmetro BypassObjectIdValidation

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

Se quiser autorizar essa mesma aplicação a ler segredos no cofre, execute o seguinte cmdlet:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

Passos seguintes