PowerShell을 사용하여 Azure Stack Hub에서 Key Vault 관리

이 문서에서는 PowerShell을 사용하여 Azure Stack Hub에서 키 자격 증명 모음을 만들고 관리하는 방법을 설명합니다. Key Vault PowerShell cmdlet을 사용하여 다음을 수행하도록 하는 방법을 알아봅니다.

  • 키 자격 증명 모음을 생성합니다.
  • 암호화 키와 비밀을 저장하고 관리합니다.
  • 자격 증명 모음에서 작업을 호출하도록 사용자 또는 앱에 권한을 부여합니다.

참고

이 문서에 설명된 Key Vault PowerShell cmdlet은 Azure PowerShell SDK에 제공됩니다.

사전 요구 사항

Key Vault 작업에 테넌트 구독 사용

키 자격 증명 모음에 대해 작업을 실행하려면 먼저 테넌트 구독이 자격 증명 모음 작업에 사용하도록 설정되어 있는지 확인해야 합니다. 키 자격 증명 모음 작업이 사용하도록 설정되어 있는지 확인하려면 다음 명령을 실행합니다.

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

구독이 자격 증명 모음 작업에 사용하도록 설정된 경우 출력에 RegistrationState 가 키 자격 증명 모음의 모든 리소스 유형에 대해 등록됨 을 보여 줍니다.

Key vault registration state in Powershell

자격 증명 모음 작업을 사용하도록 설정하지 않은 경우 다음 명령을 실행하여 구독에 Key Vault 서비스를 등록합니다.

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

등록에 성공하면 다음 출력이 반환됩니다.

Key vault registration in Powershell successful

키 자격 증명 모음 명령을 호출하면 "구독이 'Microsoft.KeyVault' 네임스페이스를 사용하도록 등록되지 않았습니다."와 같은 오류가 표시될 수 있습니다. 오류가 발생하면 이전 지침에 따라 Key Vault 리소스 공급자를 사용하도록 설정했는지 확인합니다.

키 자격 증명 모음 만들기

키 자격 증명 모음을 만들기 전에 키 자격 증명 모음과 관련된 모든 리소스가 리소스 그룹에 존재하도록 리소스 그룹을 만듭니다. 다음 명령을 사용하여 새 리소스 그룹을 만듭니다.

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

New resource group generated in Powershell

이제 다음 cmdlet을 사용하여 이전에 만든 리소스 그룹에 키 자격 증명 모음을 만듭니다. 이 명령은 리소스 그룹 이름, 키 자격 증명 모음 이름 및 지리적 위치의 세 가지 필수 매개 변수를 읽습니다.

다음 명령을 실행하여 키 자격 증명 모음을 만듭니다.

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

New key vault generated in Powershell

이 명령의 출력에는 사용자가 만든 키 자격 증명 모음의 속성이 표시됩니다. 앱이 이 자격 증명 모음에 액세스하는 경우 이 예제에 있는 https://vault01.vault.local.azurestack.external자격 증명 모음 URI 속성을 사용해야 합니다.

AD FS(Active Directory Federation Services) 배포

AD FS 배포에서 다음과 같은 경고가 표시될 수 있습니다. "액세스 정책이 설정되지 않았습니다. 이 자격 증명 모음을 사용할 수 있는 액세스 권한이 있는 사용자 또는 애플리케이션이 없습니다." 이 문제를 해결하려면 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

키 및 비밀 관리

자격 증명 모음을 만든 후 다음 단계를 사용하여 자격 증명 모음에서 키와 비밀을 만들고 관리합니다.

키 만들기

Add-AzureKeyVaultKey cmdlet을 사용하여 키 자격 증명 모음에서 소프트웨어 보호 키를 만들거나 가져옵니다.

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

매개 -Destination 변수는 키가 소프트웨어로 보호되도록 지정하는 데 사용됩니다. 키가 성공적으로 만들어지면 명령은 만든 키의 세부 정보를 출력합니다.

New key vault key generated in Powershell

이제 URI를 사용하여 만든 키를 참조할 수 있습니다. 기존 키와 이름이 같은 키를 만들거나 가져오는 경우 원래 키가 새 키에 지정된 값으로 업데이트됩니다. 키의 버전별 URI를 사용하여 이전 버전에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.

  • 항상 현재 버전을 가져오려면 https://vault10.vault.local.azurestack.external:443/keys/key01 를 사용합니다.
  • 이 특정 버전을 가져오는 데 사용합니다 https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a .

키 가져오기

Get-AzureKeyVaultKey cmdlet을 사용하여 키 및 세부 정보를 읽습니다.

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

비밀 만들기

Set-AzureKeyVaultSecret cmdlet을 사용하여 자격 증명 모음에서 비밀을 만들거나 업데이트합니다. 비밀이 아직 없는 경우 만들어집니다. 비밀이 이미 있는 경우 새 버전의 비밀이 만들어집니다.

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

Create a secret in Powershell

비밀 가져오기

Get-AzureKeyVaultSecret cmdlet을 사용하여 키 자격 증명 모음에서 비밀을 읽습니다. 이 명령은 비밀의 모든 또는 특정 버전을 반환할 수 있습니다.

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

키와 비밀을 만든 후에는 외부 앱에 키를 사용하도록 권한을 부여할 수 있습니다.

키 또는 비밀을 사용하도록 앱에 권한 부여

다음 cmdlet을 사용하여 키 자격 증명 모음의 키 또는 비밀에 액세스하도록 앱에 권한을 부여합니다.

다음 예제에서 자격 증명 모음 이름은 ContosoKeyVault이고, 권한을 부여하려는 앱의 클라이언트 ID는 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed입니다. 앱에 권한을 부여하려면 다음 명령을 실행합니다. PermissionsToKeys 매개 변수를 지정하여 사용자, 앱 또는 보안 그룹에 대한 권한을 설정할 수도 있습니다.

AD FS가 구성된 Azure Stack Hub 환경에 대해 cmdlet을 사용하는 경우 매개 변수 BypassObjectIdValidation을 제공해야 합니다.

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

자격 증명 모음에서 비밀을 읽도록 동일한 앱에 권한을 부여하려면 다음 cmdlet을 실행합니다.

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

다음 단계