빠른 시작: 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에 로그인

  1. login 명령을 실행합니다.

    az login
    

    CLI는 기본 브라우저를 열 수 있으면 기본 브라우저를 열고 Azure 로그인 페이지를 로드합니다.

    그렇지 않으면 https://aka.ms/devicelogin 에서 브라우저 페이지를 열고 터미널에 표시된 권한 부여 코드를 입력합니다.

  2. 브라우저에서 계정 자격 증명으로 로그인합니다.

패키지 설치

  1. 터미널 또는 명령 프롬프트에서 적절한 프로젝트 폴더를 만든 다음, Python 가상 환경 사용에 설명된 대로 Python 가상 환경을 만들고 활성화합니다.

  2. Microsoft Entra ID 라이브러리를 설치합니다.

    pip install azure-identity
    
  3. Key Vault 키 클라이언트 라이브러리를 설치합니다.

    pip install azure-keyvault-keys
    

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

  1. az group create 명령을 사용하여 리소스 그룹을 만듭니다.

    az group create --name myResourceGroup --location eastus
    

    선호하는 경우 "eastus"를 사용자에게 가까운 위치로 변경할 수 있습니다.

  2. 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(역할 기반 액세스 제어)를 통해 키 자격 증명 모음에 애플리케이션 권한을 부여하려면 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>, <unique-keyvault-name>를 실제 값으로 대체합니다. <앱 ID> Azure AD에 등록된 애플리케이션의 애플리케이션(클라이언트) ID입니다.

샘플 코드 만들기

Python용 Azure Key Vault 키 클라이언트 라이브러리를 사용하면 암호화 키를 관리할 수 있습니다. 다음 코드 샘플에서는 클라이언트를 만들고, 키를 설정하고, 키를 검색하고, 키를 삭제하는 방법을 보여줍니다.

이 코드가 포함된 kv_keys.py라는 파일을 만듭니다.

import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential

keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

keyName = input("Input a name for your key > ")

print(f"Creating a key in {keyVaultName} called '{keyName}' ...")

rsa_key = client.create_rsa_key(keyName, size=2048)

print(" done.")

print(f"Retrieving your key from {keyVaultName}.")

retrieved_key = client.get_key(keyName)

print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

print(" done.")

코드 실행

이전 섹션의 코드가 kv_keys.py라는 파일에 있는지 확인합니다. 그런 다음, 다음 명령을 사용하여 코드를 실행합니다.

python kv_keys.py

동일한 키 이름으로 코드를 다시 실행하면 "(충돌) 키 <이름>이 현재 삭제되었지만 복구 가능한 상태에 있습니다."라는 오류가 발생할 수 있습니다. 다른 키 이름을 사용합니다.

코드 세부 정보

클라이언트 인증 및 만들기

대부분의 Azure 서비스에 대한 애플리케이션 요청은 승인되어야 합니다. Azure.Identity 클라이언트 라이브러리에서 제공하는 DefaultAzureCredential 클래스를 사용하는 것은 코드에서 Azure 서비스에 대한 암호 없는 연결을 구현하는 데 권장되는 접근 방식입니다. DefaultAzureCredential은 여러 인증 방법을 지원하고 런타임에 사용해야 하는 방법을 결정합니다. 이 방법을 사용하면 앱에서 환경별 코드를 구현하지 않고도 다양한 환경(로컬 및 프로덕션)에서 다양한 인증 방법을 사용할 수 있습니다.

이 빠른 시작에서 DefaultAzureCredential은 Azure CLI에 로그인한 로컬 개발 사용자의 자격 증명을 사용하여 키 자격 증명 모음에 인증합니다. 애플리케이션이 Azure에 배포되면 동일한 DefaultAzureCredential 코드에서 App Service, 가상 머신 또는 기타 서비스에 할당된 관리 ID를 자동으로 검색하고 사용할 수 있습니다. 자세한 내용은 관리 ID 개요를 참조하세요.

예제 코드에서 키 자격 증명 모음의 이름은 “https://<your-key-vault-name>.vault.azure.net” 형식의 KVUri 변수 값을 사용하여 확장됩니다.

credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)

키 저장

키 자격 증명 모음에 대한 클라이언트 개체를 가져온 후에는 create_rsa_key 메서드를 사용하여 키를 저장할 수 있습니다.

rsa_key = client.create_rsa_key(keyName, size=2048)

create_key 또는 create_ec_key를 사용할 수도 있습니다.

create 메서드를 호출하면 키 자격 증명 모음용 Azure REST API에 대한 호출이 생성됩니다.

Azure는 요청을 처리할 때 클라이언트에 제공한 자격 증명 개체를 사용하여 호출자의 ID(서비스 주체)를 인증합니다.

키 검색

Key Vault에서 키를 읽으려면 get_key 메서드를 사용합니다.

retrieved_key = client.get_key(keyName)

Azure CLI 명령 az keyvault key show 또는 Azure PowerShell cmdlet Get-AzKeyVaultKey를 사용하여 키가 설정되었는지 확인할 수도 있습니다.

키 삭제

키를 삭제하려면 begin_delete_key 메서드를 사용합니다.

poller = client.begin_delete_key(keyName)
deleted_key = poller.result()

begin_delete_key 메서드는 비동기식이며 폴러 개체를 반환합니다. 폴러의 result 메서드를 호출하면 작업이 완료될 때까지 대기합니다.

Azure CLI 명령 az keyvault key show 또는 Azure PowerShell cmdlet Get-AzKeyVaultKey를 사용하여 키가 삭제되었는지 확인할 수 있습니다.

키가 삭제되었지만 당분간 복구 가능한 상태로 유지됩니다. 코드를 다시 실행하는 경우 다른 키 이름을 사용합니다.

리소스 정리

인증서비밀로도 실험하려면 이 문서에서 만든 Key Vault를 다시 사용할 수 있습니다.

그렇지 않으면 이 문서에서 만든 리소스를 완료한 후 다음 명령을 사용하여 리소스 그룹과 포함된 모든 리소스를 삭제합니다.

az group delete --resource-group myResourceGroup

다음 단계