[Azure] KeyVault Purge

2020. 6. 3. 11:36Others/Azure

Keyvault Soft delete

Azure KeyVault를 생성할 때, 아래 그림처럼 Soft delete 기능을 활성화 할 수 있습니다.
HelpImage

Soft delete 기능이 활성화되면 KetVault에 추가된 값들이 즉시 삭제되지 않으며, retention period(days)에 지정된 날짜(7~90일 사이) 동안 deleted 상태로 남아있게 됩니다. 만약 deleted 상태의 값을 완전히 삭제하고 싶다면 Purge 명령을 사용해야 합니다. Purge는 Azure Portal에서는 사용 할 수 없으며 PowerShell, CLI, REST, .NET(C#)을 통해서만 진행할 수 있습니다. 여기서는 PowerShell을 통해서 Purge 명령을 사용하는 방법을 정리합니다.

PowerShell로 Azure 접속

PowerShell에서 Azure에 접속하려면 Azure PowerShell 모듈을 설치해야 합니다. 모듈은 PowerShell 명령어로 간단히 설치가 가능합니다. PowerShell을 실행하시고 아래 명령을 복사한 후 실행해주세요.

if ($PSVersionTable.PSEdition -eq 'Desktop' -and (Get-Module -Name AzureRM -ListAvailable)) {
    Write-Warning -Message ('Az module not installed. Having both the AzureRM and ' +
      'Az modules installed at the same time is not supported.')
} else {
    Install-Module -Name Az -AllowClobber -Scope CurrentUser
}

이미 AzureRM 모듈이 설치되어 있다면 아래와 같이 오류가 나면서 설치되지 않을 것입니다.

PS C:\Users\User> if ($PSVersionTable.PSEdition -eq 'Desktop' -and (Get-Module -Name AzureRM -ListAvailable)) {
    Write-Warning -Message ('Az module not installed. Having both the AzureRM and ' +
      'Az modules installed at the same time is not supported.')
} else {
    Install-Module -Name Az -AllowClobber -Scope CurrentUser
}
경고: Az module not installed. Having both the AzureRM and Az modules installed at the same time is not supported.

AzureRM이란 Azure Resource Manager를 말하며 구버전 모듈로 2020년 12월까지만 버그픽스가 제공됩니다. AzureRM이 설치된 상태에서도 PowerShell 작업을 진행할 수 있지만, AzureRM을 삭제하고 Azure PowerShell 모듈을 설치하려면 링크를 확인해주세요. Azure Moudle로 Migration에 대한 정보는 링크를 확인해주세요.

Azure 로그인

PowerShell을 실행하시고 다음 명령어를 입력하시면 로그인을 진행하실 수 있습니다.

Connect-AzAccount

만약 AzureRM을 사용 중이시라면 다음 명령어로 로그인해야 합니다.

Connect-AzureRmAccount

KeyVault Purge

다음 명령을 통해서 이미 삭제된 KeyVault 값을 확인할 수 있습니다.

az keyvault secret list-deleted --vault-name myKeyVault

--valut-name에는 자신의 KeyVault 이름을 입력해주세요. 위 명령어 에서 secret 대신 key 또는 certificate를 사용할 수 도 있습니다. 위 명령을 실행하면 다음과 같이 deleted 상태의 값들이 나타납니다.

PS C:\Users\User> az keyvault secret list-deleted --vault-name mykeyvault
[
  {
    "attributes": {
      "created": "2020-06-02T02:51:47+00:00",
      "enabled": true,
      "expires": null,
      "notBefore": null,
      "recoveryLevel": "Recoverable+Purgeable",
      "updated": "2020-06-02T02:51:47+00:00"
    },
    "contentType": null,
    "deletedDate": "2020-06-02T03:07:00+00:00",
    "id": "https://mykeyvault.vault.azure.net/secrets/test",
    "managed": null,
    "name": "test",
    "recoveryId": "https://mykeyvault.vault.azure.net/deletedsecrets/test",
    "scheduledPurgeDate": "2020-08-31T03:07:00+00:00",
    "tags": null
  }
]

deleted 상태의 값들은 완전히 삭제하려면 purge 명령을 사용하세요.

 az keyvault secret purge --vault-name mykeyvault --name test

값을 복구하려면 recover 명령을 사용하시면 됩니다.

 az keyvault secret recover --vault-name mykeyvault --name test

References