빠른 시작: Python용 Azure Key Vault 인증서 클라이언트 라이브러리
Python용 Azure Key Vault 인증서 클라이언트 라이브러리를 시작합니다. 다음 단계에 따라 패키지를 설치하고 기본 작업에 대한 예제 코드를 사용해 보세요. Key Vault를 사용하여 인증서를 저장하면 코드에 인증서를 저장하지 않아도 되므로 앱의 보안이 강화됩니다.
API 참조 설명서 | 라이브러리 소스 코드 | 패키지(Python 패키지 인덱스)
필수 조건
이 빠른 시작에서는 Linux 터미널 창에서 Azure CLI 또는 Azure PowerShell을 실행하고 있다고 가정합니다.
로컬 환경 설정
이 빠른 시작에서는 Azure CLI 또는 Azure PowerShell과 함께 Azure ID 라이브러리를 사용하여 사용자를 Azure 서비스에 인증합니다. 개발자는 Visual Studio 또는 Visual Studio Code를 사용하여 해당 호출을 인증할 수도 있습니다. 자세한 내용은 Azure ID 클라이언트 라이브러리를 사용하여 클라이언트 인증을 참조하세요.
Azure에 로그인
login
명령을 실행합니다.az login
CLI는 기본 브라우저를 열 수 있으면 기본 브라우저를 열고 Azure 로그인 페이지를 로드합니다.
그렇지 않으면 https://aka.ms/devicelogin 에서 브라우저 페이지를 열고 터미널에 표시된 권한 부여 코드를 입력합니다.
브라우저에서 계정 자격 증명으로 로그인합니다.
패키지 설치
터미널 또는 명령 프롬프트에서 적절한 프로젝트 폴더를 만든 다음, Python 가상 환경 사용에 설명된 대로 Python 가상 환경을 만들고 활성화합니다.
Microsoft Entra ID 라이브러리를 설치합니다.
pip install azure.identity
Key Vault 인증서 클라이언트 라이브러리를 설치합니다.
pip install azure-keyvault-certificates
리소스 그룹 및 키 자격 증명 모음 만들기
az group create
명령을 사용하여 리소스 그룹을 만듭니다.az group create --name myResourceGroup --location eastus
선호하는 경우 "eastus"를 사용자에게 가까운 위치로 변경할 수 있습니다.
az keyvault create
를 사용하여 키 자격 증명 모음을 만듭니다.az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
<your-unique-keyvault-name>
을 모든 Azure에서 고유한 이름으로 바꿉니다. 일반적으로 다른 번호 및 식별자와 함께 개인 또는 회사 이름을 사용합니다.
KEY_VAULT_NAME 환경 변수 설정
스크립트는 KEY_VAULT_NAME
환경 변수에 할당된 값을 키 자격 증명 모음의 이름으로 사용합니다. 따라서 다음 명령을 사용하여 이 값을 설정해야 합니다.
export KEY_VAULT_NAME=<your-unique-keyvault-name>
키 자격 증명 모음에 대한 액세스 권한 부여
RBAC(역할 기반 액세스 제어)를 통해 키 자격 증명 모음에 대한 권한을 얻으려면 Azure CLI 명령 az role assignment create을 사용하여 UPN("사용자 계정 이름")에 역할을 할당합니다.
az role assignment create --role "Key Vault Certificate Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
<upn>, <subscription-id>, <resource-group-name> 및 <your-unique-keyvault-name>을 실제 값으로 바꿉니다. UPN은 일반적으로 이메일 주소 형식(예: username@domain.com)입니다.
샘플 코드 만들기
Python용 Azure Key Vault 인증서 클라이언트 라이브러리를 사용하면 인증서를 관리할 수 있습니다. 다음 코드 샘플에서는 클라이언트 생성, 인증서 설정, 인증서 검색 및 인증서 삭제 방법을 보여줍니다.
이 코드가 포함된 kv_certificates.py라는 파일을 만듭니다.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
코드 실행
이전 섹션의 코드가 kv_certificates.py라는 파일에 있는지 확인합니다. 그런 다음, 다음 명령을 사용하여 코드를 실행합니다.
python kv_certificates.py
- 권한 오류가 발생한 경우
az keyvault set-policy
또는Set-AzKeyVaultAccessPolicy
명령을 실행했는지 확인합니다. - 동일한 키 이름으로 코드를 다시 실행하면 “(충돌) 인증서 <이름>이 현재 삭제되었지만 복구 가능한 상태에 있습니다.”라는 오류가 발생할 수 있습니다. 다른 키 이름을 사용합니다.
코드 세부 정보
클라이언트 인증 및 만들기
대부분의 Azure 서비스에 대한 애플리케이션 요청은 승인되어야 합니다. Azure.Identity 클라이언트 라이브러리에서 제공하는 DefaultAzureCredential 클래스를 사용하는 것은 코드에서 Azure 서비스에 대한 암호 없는 연결을 구현하는 데 권장되는 접근 방식입니다. DefaultAzureCredential
은 여러 인증 방법을 지원하고 런타임에 사용해야 하는 방법을 결정합니다. 이 방법을 사용하면 앱에서 환경별 코드를 구현하지 않고도 다양한 환경(로컬 및 프로덕션)에서 다양한 인증 방법을 사용할 수 있습니다.
이 빠른 시작에서 DefaultAzureCredential
은 Azure CLI에 로그인한 로컬 개발 사용자의 자격 증명을 사용하여 키 자격 증명 모음에 인증합니다. 애플리케이션이 Azure에 배포되면 동일한 DefaultAzureCredential
코드에서 App Service, 가상 머신 또는 기타 서비스에 할당된 관리 ID를 자동으로 검색하고 사용할 수 있습니다. 자세한 내용은 관리 ID 개요를 참조하세요.
예제 코드에서 키 자격 증명 모음 이름은 https://\<your-key-vault-name>.vault.azure.net
형식의 키 자격 증명 모음 URI로 확장됩니다.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
인증서 저장
키 자격 증명 모음에 대한 클라이언트 개체를 가져온 후에는 begin_create_certificate 메서드를 사용하여 인증서를 만들 수 있습니다.
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
여기에서 인증서에는 CertificatePolicy.get_default 메서드를 사용하여 가져온 정책이 필요합니다.
begin_create_certificate
메서드를 호출하면 키 자격 증명 모음용 Azure REST API에 대한 비동기 호출이 생성됩니다. 비동기 호출은 폴러 개체를 반환합니다. 작업의 결과를 대기하려면 폴러의 result
메서드를 호출합니다.
Azure는 요청을 처리할 때 클라이언트에 제공한 자격 증명 개체를 사용하여 호출자의 ID(서비스 주체)를 인증합니다.
인증서 검색
Key Vault에서 인증서를 읽으려면 get_certificate 메서드를 사용합니다.
retrieved_certificate = client.get_certificate(certificateName)
Azure CLI 명령 az keyvault certificate show 또는 Azure PowerShell cmdlet Get-AzKeyVaultCertificate를 사용하여 인증서가 설정되었는지 확인할 수도 있습니다.
인증서 삭제
인증서를 삭제하려면 begin_delete_certificate 메서드를 사용합니다.
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
begin_delete_certificate
메서드는 비동기식이며 폴러 개체를 반환합니다. 폴러의 result
메서드를 호출하면 작업이 완료될 때까지 대기합니다.
Azure CLI 명령 az keyvault certificate show 또는 Azure PowerShell cmdlet Get-AzKeyVaultCertificate를 사용하여 인증서가 삭제되었는지 확인할 수 있습니다.
인증서가 삭제되었지만 당분간 복구 가능한 상태로 유지됩니다. 코드를 다시 실행하는 경우 다른 인증서 이름을 사용합니다.
리소스 정리
비밀 및 키로도 실험하려면 이 문서에서 만든 Key Vault를 다시 사용할 수 있습니다.
그렇지 않으면 이 문서에서 만든 리소스를 완료한 후 다음 명령을 사용하여 리소스 그룹과 포함된 모든 리소스를 삭제합니다.
az group delete --resource-group myResourceGroup