PowerShell을 사용 하 여 Azure Stack 허브의 Key Vault 관리Manage Key Vault in Azure Stack Hub using PowerShell

이 문서에서는 PowerShell을 사용 하 여 Azure Stack 허브에서 키 자격 증명 모음을 만들고 관리 하는 방법을 설명 합니다.This article describes how to create and manage a key vault in Azure Stack Hub using PowerShell. Key Vault PowerShell cmdlet을 사용 하 여 다음을 수행 하는 방법을 알아봅니다.You'll learn how to use Key Vault PowerShell cmdlets to:

  • 키 자격 증명 모음을 만듭니다.Create a key vault.
  • 암호화 키 및 비밀을 저장 하 고 관리 합니다.Store and manage cryptographic keys and secrets.
  • 자격 증명 모음에서 작업을 호출 하도록 사용자 또는 앱에 권한을 부여 합니다.Authorize users or apps to invoke operations in the vault.

참고

이 문서에서 설명 하는 Key Vault PowerShell cmdlet은 Azure PowerShell SDK에 제공 됩니다.The Key Vault PowerShell cmdlets described in this article are provided in the Azure PowerShell SDK.

사전 요구 사항Prerequisites

Key Vault 작업에 대 한 테 넌 트 구독 사용Enable your tenant subscription for Key Vault operations

키 자격 증명 모음에 대 한 작업을 실행 하려면 먼저 테 넌 트 구독에 대해 자격 증명 모음 작업을 사용할 수 있는지 확인 해야 합니다.Before you can issue any operations against a key vault, you must ensure that your tenant subscription is enabled for vault operations. 키 자격 증명 모음 작업이 사용 하도록 설정 되었는지 확인 하려면 다음 명령을 실행 합니다.To verify that key vault operations are enabled, run the following command:

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

자격 증명 모음 작업에 대해 구독을 사용 하도록 설정 하는 경우 출력은 key vault의 모든 리소스 유형에 대해 Registrationstate등록 됨을 표시 합니다.If your subscription is enabled for vault operations, the output shows RegistrationState is Registered for all resource types of a key vault.

Powershell의 Key vault 등록 상태

자격 증명 모음 작업을 사용 하지 않는 경우 다음 명령을 실행 하 여 구독에 Key Vault 서비스를 등록 합니다.If vault operations are not enabled, issue the following command to register the Key Vault service in your subscription:

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

성공적으로 등록 되 면 다음 출력이 반환 됩니다.If the registration is successful, the following output is returned:

Powershell에서 Key vault 등록 성공

Key vault 명령을 호출 하면 "구독이 ' Microsoft. KeyVault ' 네임 스페이스를 사용 하도록 등록 되어 있지 않습니다."와 같은 오류가 발생할 수 있습니다. 오류가 발생 하면 이전 지침에 따라 Key Vault 리소스 공급자를 사용 하도록 설정 했는지 확인 합니다.When you invoke the key vault commands, you might receive an error, such as "The subscription is not registered to use namespace 'Microsoft.KeyVault'." If you get an error, confirm you've enabled the Key Vault resource provider by following the previous instructions.

키 자격 증명 모음 만들기Create a key vault

주요 자격 증명 모음을 만들기 전에 키 자격 증명 모음과 관련 된 모든 리소스가 리소스 그룹에 존재 하도록 리소스 그룹을 만듭니다.Before you create a key vault, create a resource group so that all of the resources related to the key vault exist in a resource group. 다음 명령을 사용 하 여 새 리소스 그룹을 만듭니다.Use the following command to create a new resource group:

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

Powershell에서 생성 된 새 리소스 그룹

이제 이전에 만든 리소스 그룹에 키 자격 증명 모음을 만들려면 다음 cmdlet을 사용 합니다.Now, use the following cmdlet to create a key vault in the resource group that you created earlier. 이 명령은 세 가지 필수 매개 변수인 리소스 그룹 이름, 주요 자격 증명 모음 이름 및 지리적 위치를 읽습니다.This command reads three mandatory parameters: resource group name, key vault name, and geographic location.

다음 명령을 실행 하 여 주요 자격 증명 모음을 만듭니다.Run the following command to create a key vault:

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

Powershell에서 생성 된 새 키 자격 증명 모음

이 명령의 출력은 사용자가 만든 key vault의 속성을 보여 줍니다.The output of this command shows the properties of the key vault that you created. 앱이이 자격 증명 모음에 액세스 하는 경우이 예제에서 자격 증명 모음 URI 속성을 사용 해야 합니다 https://vault01.vault.local.azurestack.external .When an app accesses this vault, it must use the Vault URI property, which is https://vault01.vault.local.azurestack.external in this example.

Active Directory Federation Services (AD FS) 배포Active Directory Federation Services (AD FS) deployment

AD FS 배포에서 "액세스 정책이 설정 되지 않았습니다." 라는 경고가 나타날 수 있습니다.In an AD FS deployment, you might get this warning: "Access policy is not set. 이 자격 증명 모음을 사용할 수 있는 액세스 권한이 있는 사용자 또는 응용 프로그램이 없습니다. "No user or application has access permission to use this vault." 이 문제를 해결 하려면 AzKeyVaultAccessPolicy 명령을 사용 하 여 자격 증명 모음에 대 한 액세스 정책을 설정 합니다.To resolve this issue, set an access policy for the vault by using the Set-AzKeyVaultAccessPolicy command:

# 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

키 및 비밀 관리Manage keys and secrets

자격 증명 모음을 만든 후 다음 단계를 사용 하 여 자격 증명 모음에서 키 및 암호를 만들고 관리 합니다.After you create a vault, use these steps to create and manage keys and secrets in the vault.

키 만들기Create a key

Add-azurekeyvaultkey cmdlet을 사용 하 여 키 자격 증명 모음에 소프트웨어 보호 키를 만들거나 가져옵니다.Use the Add-AzureKeyVaultKey cmdlet to create or import a software-protected key in a key vault:

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

-Destination매개 변수는 키가 소프트웨어로 보호 되도록 지정 하는 데 사용 됩니다.The -Destination parameter is used to specify that the key is software protected. 키가 성공적으로 만들어지면 명령은 생성 된 키의 세부 정보를 출력 합니다.When the key is successfully created, the command outputs the details of the created key.

Powershell에서 생성 된 새 key vault 키

이제 URI를 사용 하 여 만든 키를 참조할 수 있습니다.You can now reference the created key by using its URI. 기존 키와 이름이 같은 키를 만들거나 가져오면 원래 키가 새 키에 지정 된 값으로 업데이트 됩니다.If you create or import a key that has same name as an existing key, the original key is updated with the values specified in the new key. 키의 버전별 URI를 사용 하 여 이전 버전에 액세스할 수 있습니다.You can access the previous version by using the version-specific URI of the key. 예:For example:

  • 항상 현재 버전을 가져오려면 https://vault10.vault.local.azurestack.external:443/keys/key01 를 사용합니다.Use https://vault10.vault.local.azurestack.external:443/keys/key01 to always get the current version.
  • https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a이 특정 버전을 가져오려면를 사용 합니다.Use https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a to get this specific version.

키 가져오기Get a key

Add-azurekeyvaultkey cmdlet을 사용 하 여 키와 해당 세부 정보를 읽습니다.Use the Get-AzureKeyVaultKey cmdlet to read a key and its details:

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

비밀 만들기Create a secret

AzureKeyVaultSecret cmdlet을 사용 하 여 자격 증명 모음에서 암호를 만들거나 업데이트 합니다.Use the Set-AzureKeyVaultSecret cmdlet to create or update a secret in a vault. 비밀이 아직 없는 경우 새로 만들어집니다.A secret is created if one does not already exist. 이미 존재 하는 경우 새 버전의 암호가 생성 됩니다.A new version of the secret is created if it already exists:

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

Powershell에서 비밀 만들기

비밀 가져오기Get a secret

AzureKeyVaultSecret cmdlet을 사용 하 여 키 자격 증명 모음에서 비밀을 읽습니다.Use the Get-AzureKeyVaultSecret cmdlet to read a secret in a key vault. 이 명령은 암호의 모든 또는 특정 버전을 반환할 수 있습니다.This command can return all or specific versions of a secret:

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

키와 암호를 만든 후에는 외부 앱에서 사용 하도록 권한을 부여할 수 있습니다.After you create the keys and secrets, you can authorize external apps to use them.

키 또는 비밀을 사용 하도록 앱에 권한 부여Authorize an app to use a key or secret

다음 cmdlet을 사용 하 여 앱에서 키 자격 증명 모음의 키 또는 암호에 액세스 하도록 권한을 부여 합니다.Use the following cmdlet to authorize an app to access a key or secret in the key vault.

다음 예제에서 자격 증명 모음 이름은 ContosoKeyVault 이 고 권한을 부여 하려는 앱의 클라이언트 ID는 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed 입니다.In the following example, the vault name is ContosoKeyVault, and the app you want to authorize has a client ID of 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed. 앱에 권한을 부여 하려면 다음 명령을 실행 합니다.To authorize the app, run the following command. 또한 사용자, 앱 또는 보안 그룹에 대 한 사용 권한을 설정 하기 위해 필요 시 매개 변수를 지정할 수 있습니다.You can also specify the PermissionsToKeys parameter to set permissions for a user, an app, or a security group.

Azure Stack 허브 환경에서 구성 된 AD FS에 대해 cmdlet을 사용 하는 경우 BypassObjectIdValidation 매개 변수를 제공 해야 합니다.When using the cmdlet against an AD FS configured Azure Stack Hub environment, the parameter BypassObjectIdValidation should be provided

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

자격 증명 모음에서 암호를 읽도록 동일한 앱에 권한을 부여 하려는 경우 다음 cmdlet을 실행 합니다.If you want to authorize that same app to read secrets in your vault, run the following cmdlet:

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

다음 단계Next steps