다음을 통해 공유


자습서: 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 구독이 없는 경우 무료 계정을 만드세요.

필수 조건

Windows, Mac 및 Linux:

  • Git
  • 이 자습서에서는 Azure CLI를 로컬로 실행해야 합니다. Azure CLI 버전 2.0.4 이상이 설치되어 있어야 합니다. az --version을 실행하여 버전을 찾습니다. CLI를 설치하거나 업그레이드해야 하는 경우 Azure CLI 2.0 설치를 참조하세요.

Azure에 로그인

Azure CLI를 사용하여 Azure에 로그인하려면 다음을 입력합니다.

az login

리소스 그룹 및 키 자격 증명 모음 만들기

이 빠른 시작에서는 미리 만든 Azure Key Vault를 사용합니다. Azure CLI 빠른 시작, Azure PowerShell 빠른 시작 또는 Azure Portal 빠른 시작의 단계에 따라 키 자격 증명 모음을 만들 수 있습니다.

또는 다음의 Azure CLI 또는 Azure PowerShell 명령을 실행할 수 있습니다.

Important

각 Key Vault마다 고유한 이름이 있어야 합니다. 다음 예제에서는 <your-unique-keyvault-name>을 키 자격 증명 모음의 이름으로 바꿉니다.

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

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

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

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

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

가상 머신 만들기

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

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure Portal Azure Portal

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

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

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

VM에 ID 할당

Azure CLI az vm identity assign 명령을 사용하여 가상 머신의 시스템 할당 ID를 만듭니다.

az vm identity assign --name "myVM" --resource-group "myResourceGroup"

다음 코드에 표시되는 시스템 할당 ID를 기록해 둡니다. 위 명령의 출력은 다음과 같습니다.

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

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

RBAC(역할 기반 액세스 제어)를 통해 키 자격 증명 모음에 애플리케이션 권한을 부여하려면 az role assignment create Azure CLI 명령을 사용하여 역할을 할당합니다.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

<app-id>, <subscription-id>. <resource-group-name><your-unique-keyvault-name>을 실제 값으로 바꿉니다. <app-id>는 Microsoft Entra에 등록된 애플리케이션의 애플리케이션(클라이언트) ID입니다.

VM에 로그인

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

Linux VM에 로그인하려면 다음과 같이 가상 머신 만들기 단계에서 지정한 <publicIpAddress>와 함께 ssh 명령을 사용하면 됩니다.

ssh azureuser@<PublicIpAddress>

VM에 Python 라이브러리 설치

Python 스크립트에서 사용할 두 개의 Python 라이브러리 azure-keyvault-secretsazure.identity를 가상 머신에 설치합니다.

예를 들어 Linux VM에서는 다음과 같이 pip3를 사용하여 설치할 수 있습니다.

pip3 install azure-keyvault-secrets

pip3 install azure.identity

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

가상 머신에서 sample.py라고 하는 Python 파일을 만듭니다. 다음 코드를 포함하도록 파일을 편집하고, <your-unique-keyvault-name>을 키 자격 증명 모음의 이름으로 바꿉니다.

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

key_vault_name = "<your-unique-keyvault-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 '<your-unique-keyvault-name>' is: 'Success!'

리소스 정리

더 이상 필요하지 않으면 가상 머신 및 키 자격 증명 모음을 삭제합니다. 리소스가 속한 리소스 그룹을 삭제하면 됩니다.

az group delete -g myResourceGroup

다음 단계

Azure Key Vault REST API