자습서: 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-secrets
및 azure.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