Client Python pour utiliser l'exécutable AzureAttestSKR (Azure Confidential Computing Secure Key Release) depuis votre code Python.
- Linux uniquement (le programme vérifie automatiquement)
- Python 3.7+
- L'exécutable
AzureAttestSKRdans le même répertoire que le script - Accès sudo (requis par AzureAttestSKR)
- Téléchargez ce projet
- Placez l'exécutable
AzureAttestSKRdans le répertoire du projet - Rendez l'exécutable... exécutable :
chmod +x AzureAttestSKR
Pour les tests unitaires :
pip install pytestLe script utilise 4 variables d'environnement :
| Variable | Description | Exemple |
|---|---|---|
MAA_ENDPOINT |
URL du service d'attestation Azure | https://sharedweu.weu.attest.azure.net |
KEYVAULT_KEY |
URL complète de la clé Key Vault | https://mykv.vault.azure.net/keys/mykey/version_GUID |
KEY |
Clé secrète à chiffrer (pour wrap) | mysecretkey123 |
KEY_ENCRYPTED |
Clé chiffrée à déchiffrer (pour unwrap) | dGVzdC1lbmNyeXB0ZWQta2V5... |
export MAA_ENDPOINT="https://sharedweu.weu.attest.azure.net"
export KEYVAULT_KEY="https://mykv.vault.azure.net/keys/mykey/version_GUID"
export KEY="mysecretkey123"
python skr_client.py wrapexport MAA_ENDPOINT="https://sharedweu.weu.attest.azure.net"
export KEYVAULT_KEY="https://mykv.vault.azure.net/keys/mykey/version_GUID"
export KEY_ENCRYPTED="<base64_from_previous_wrap>"
python skr_client.py unwrapDEBUG=1 python skr_client.py wrapimport os
from skr_client import SKRClient
# Configurer les variables d'environnement
os.environ["MAA_ENDPOINT"] = "https://sharedweu.weu.attest.azure.net"
os.environ["KEYVAULT_KEY"] = "https://mykv.vault.azure.net/keys/mykey/version_GUID"
# Pour chiffrer
os.environ["KEY"] = "mysecretkey123"
client = SKRClient(debug=True)
encrypted_key = client.wrap_key()
print(f"Clé chiffrée: {encrypted_key}")
# Pour déchiffrer
os.environ["KEY_ENCRYPTED"] = encrypted_key
client = SKRClient(debug=True)
decrypted_key = client.unwrap_key()
print(f"Clé déchiffrée: {decrypted_key}")import os
from skr_client import SKRClient
def demo_secure_key_release():
# Configuration
os.environ.update({
"MAA_ENDPOINT": "https://sharedweu.weu.attest.azure.net",
"KEYVAULT_KEY": "https://mykv.vault.azure.net/keys/mykey/version_GUID",
"KEY": "ma-cle-secrete-123"
})
client = SKRClient(debug=True)
# 1. Chiffrer la clé
print("=== CHIFFREMENT ===")
encrypted = client.wrap_key()
# 2. Sauvegarder/transmettre la clé chiffrée...
# 3. Déchiffrer la clé
print("\\n=== DÉCHIFFREMENT ===")
os.environ["KEY_ENCRYPTED"] = encrypted
decrypted = client.unwrap_key()
# Vérification
assert decrypted == "ma-cle-secrete-123"
print("✓ Cycle complet réussi!")
if __name__ == "__main__":
demo_secure_key_release()# Tests de base
pytest test_skr_client.py
# Mode verbose
pytest test_skr_client.py -v
# Avec logs debug
TEST_LOG_LEVEL=DEBUG pytest test_skr_client.py -v -s# Configurer l'environnement
export RUN_INTEGRATION=1
export MAA_ENDPOINT="https://your-maa-endpoint.attest.azure.net"
export KEYVAULT_KEY="https://your-keyvault.vault.azure.net/keys/your-key/version"
export KEY="test-secret-key"
# Placer l'exécutable AzureAttestSKR dans le répertoire
# Lancer les tests d'intégration
pytest test_skr_client.py -k integration -vskr-python-tool/
├── skr_client.py # Module principal
├── test_skr_client.py # Tests unitaires
├── README.md # Cette documentation
└── AzureAttestSKR # Exécutable (à ajouter)
Le client gère plusieurs types d'erreurs :
- RuntimeError : Système non-Linux
- ValueError : Variables d'environnement manquantes
- FileNotFoundError : Exécutable AzureAttestSKR introuvable
- PermissionError : Exécutable non exécutable
- subprocess.CalledProcessError : Erreur lors de l'exécution d'AzureAttestSKR
- subprocess.TimeoutExpired : Timeout (120s par défaut)
- Le script utilise
sudopour exécuter AzureAttestSKR (requis par le binaire) - Les clés sont transmises via arguments de ligne de commande (visible dans
ps) - Mode debug : attention aux logs qui peuvent contenir des informations sensibles
- Ne pas commiter de clés secrètes dans le code source
Le module utilise le module logging standard Python :
- INFO : Opérations principales (chiffrement/déchiffrement)
- DEBUG : Détails d'exécution, commandes, sorties
- WARNING : Messages stderr non-critiques
- ERROR : Erreurs d'exécution
Configuration du niveau :
# En ligne de commande
DEBUG=1 python skr_client.py wrap
# Dans les tests
TEST_LOG_LEVEL=DEBUG pytest test_skr_client.py -v -s- Linux uniquement
- Nécessite sudo
- Timeout fixe de 120 secondes
- Exécutable doit être dans le même répertoire
- Pas de gestion de cache/persistance