자습서: Python 가상 머신에서 Azure Key Vault 사용

Azure Key Vault API 키 및 데이터베이스 연결 문자열과 같은 키, 비밀 및 인증서를 보호하는 데 도움이 됩니다.

이 자습서에서는 Azure 리소스에 대한 관리 ID를 사용하여 Azure Key Vault 정보를 읽도록 Python 애플리케이션을 설정합니다. 당신은 다음을 배우게 됩니다:

  • 키 자격 증명 모음 만들기
  • Key Vault 비밀 저장
  • Azure Linux 가상 머신 만들기
  • 가상 머신에 관리 ID를 사용하도록 설정
  • 콘솔 애플리케이션이 Key Vault 데이터를 읽는 데 필요한 권한을 부여합니다.
  • Key Vault 비밀 검색

시작하기 전에 Key Vault 기본 개념 읽어보십시오.

Azure 구독이 없는 경우 free 계정 만듭니다.

필수 조건

Windows, Mac 및 Linux의 경우:

  • Git
  • Azure CLI 현재 버전입니다. 실행 az --version 하여 설치된 버전을 확인합니다.

Azure에 로그인

Azure CLI를 사용하여 Azure에 로그인합니다.

az login

리소스 그룹과 키 볼트 만들기

이 빠른 시작에서는 미리 생성된 Azure 키 볼트를 사용합니다. 다음 빠른 시작 단계에 따라 키 자격 증명 모음을 만들 수 있습니다.

또는 이러한 Azure CLI 또는 Azure PowerShell 명령을 실행할 수 있습니다.

중요합니다

각 Key Vault마다 고유한 이름이 있어야 합니다. 다음 예시에서 <vault-name>을 자신의 주요 자격 증명 모음 이름으로 교체하십시오.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

비밀로 키 자격 증명 모음 채우기

값이 Success!mySecret이라는 비밀을 만들어 보겠습니다. 비밀은 암호, SQL 연결 문자열 또는 애플리케이션에서 안전하게 사용할 수 있도록 유지하는 데 필요한 기타 정보일 수 있습니다.

새로 만든 키 자격 증명 저장소에 비밀을 추가하려면 다음 명령을 사용합니다.

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

가상 머신 만들기

다음 방법 중 하나를 사용하여 myVM이라는 VM 을 만듭니다.

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure 포털 Azure 포털

Azure CLI 사용하여 Linux VM을 만들려면 az vm create 명령을 사용합니다. 다음 예제에서는 azureuser라는 사용자 계정을 추가합니다. --generate-ssh-keys 매개 변수는 SSH 키를 자동으로 생성하고 이를 기본 키 위치(~/.ssh)에 배치하는 데 사용됩니다.

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

출력의 publicIpAddress 값을 기록해 둡니다.

VM에 ID 할당

az vm identity assign 명령을 사용하여 VM에 대한 시스템 할당 관리 ID를 만듭니다.

az vm identity assign --name "myVM" --resource-group "<resource-group>"

출력에서 시스템 할당 ID를 확인합니다.

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

VM ID에 사용 권한을 할당합니다.

역할 기반 액세스 제어(RBAC)를 통해 키 자격 증명 모음에 권한을 부여하려면 "UPN(사용자 주체 이름)"에 역할을 할당하고 Azure CLI 명령 az 역할 할당 만들기을(를) 사용하십시오.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

<upn>, <subscription-id><vault-name>을 실제 값으로 바꿉니다. 다른 리소스 그룹 이름을 사용한 경우 "myResourceGroup"도 대체합니다. UPN은 일반적으로 이메일 주소 형식(예: username@domain.com)입니다.

VM에 로그인

VM에 로그인하려면 Linux를 실행하는 Azure 가상 머신에 연결하고 로그인 또는 Windows를 실행하는 Azure 가상 머신에 연결하고 로그인의 지침을 따르세요.

Linux VM에 로그인하려면 ssh 단계에서 사용합니다 <public-ip-address>.

ssh azureuser@<public-ip-address>

VM에 Python 라이브러리 설치

VM에서 샘플 스크립트에 사용되는 두 개의 Python 라이브러리(azure-keyvault-secretsazure-identity)를 설치합니다.

Linux VM에서는 pip3를 사용하여 이를 설치합니다:

pip3 install azure-keyvault-secrets azure-identity

샘플 Python 스크립트 만들기 및 편집

VM에서 sample.py라는 이름의 Python 파일을 만듭니다. 다음 코드를 파일에 붙여넣고, <vault-name>를 사용자의 키 자격 증명 모음 이름으로 바꾸세요.

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<vault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

샘플 Python 앱 실행

sample.py을 실행합니다. 모든 항목이 올바르게 구성된 경우 앱은 비밀 값을 출력합니다.

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

리소스 정리

더 이상 필요하지 않으면 VM과 키 자격 증명 모음을 삭제하세요. 가장 빠른 방법은 속한 리소스 그룹을 삭제하는 것입니다.

az group delete -g "myResourceGroup"

다음 단계

AZURE KEY VAULT REST API