13 KiB
Az - Key Vault
{{#include ../../../banners/hacktricks-training.md}}
Basic Information
Azure Key Vault एक क्लाउड सेवा है जो Microsoft Azure द्वारा संवेदनशील जानकारी जैसे गुप्त, कुंजी, प्रमाणपत्र, और पासवर्ड को सुरक्षित रूप से संग्रहीत और प्रबंधित करने के लिए प्रदान की जाती है। यह एक केंद्रीकृत भंडार के रूप में कार्य करता है, जो Azure Active Directory (Azure AD) का उपयोग करके सुरक्षित पहुंच और बारीक नियंत्रण प्रदान करता है। सुरक्षा के दृष्टिकोण से, Key Vault हार्डवेयर सुरक्षा मॉड्यूल (HSM) सुरक्षा प्रदान करता है क्रिप्टोग्राफिक कुंजियों के लिए, सुनिश्चित करता है कि गुप्त जानकारी को स्थिर और संचरण में एन्क्रिप्ट किया गया है, और भूमिका-आधारित पहुंच नियंत्रण (RBAC) और नीतियों के माध्यम से मजबूत पहुंच प्रबंधन प्रदान करता है। इसमें ऑडिट लॉगिंग, पहुंच को ट्रैक करने के लिए Azure Monitor के साथ एकीकरण, और लंबे समय तक कुंजी के संपर्क में आने के जोखिम को कम करने के लिए स्वचालित कुंजी रोटेशन की सुविधा भी है।
पूर्ण विवरण के लिए Azure Key Vault REST API overview देखें।
docs के अनुसार, Vaults सॉफ़्टवेयर और HSM-समर्थित कुंजियों, गुप्तों और प्रमाणपत्रों को संग्रहीत करने का समर्थन करते हैं। प्रबंधित HSM पूल केवल HSM-समर्थित कुंजियों का समर्थन करते हैं।
URL प्रारूप के लिए vaults है https://{vault-name}.vault.azure.net/{object-type}/{object-name}/{object-version} और प्रबंधित HSM पूल के लिए यह है: https://{hsm-name}.managedhsm.azure.net/{object-type}/{object-name}/{object-version}
जहाँ:
vault-nameकुंजी भंडार का वैश्विक अद्वितीय नाम हैobject-type"keys", "secrets" या "certificates" हो सकता हैobject-nameकुंजी भंडार के भीतर वस्तु का अद्वितीय नाम हैobject-versionप्रणाली द्वारा उत्पन्न होता है और वैकल्पिक रूप से एक वस्तु के अद्वितीय संस्करण को संबोधित करने के लिए उपयोग किया जाता है।
भंडार में संग्रहीत गुप्तों तक पहुंच प्राप्त करने के लिए, भंडार बनाने के समय 2 अनुमतियों के मॉडल में से चयन करना संभव है:
- Vault access policy
- Azure RBAC (सबसे सामान्य और अनुशंसित)
- आप सभी बारीक अनुमतियों को https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault पर पा सकते हैं।
Access Control
Key Vault संसाधन तक पहुंच दो स्तरों द्वारा नियंत्रित होती है:
- प्रबंधन स्तर, जिसका लक्ष्य management.azure.com है।
- इसका उपयोग कुंजी भंडार और पहुंच नीतियों को प्रबंधित करने के लिए किया जाता है। केवल Azure भूमिका आधारित पहुंच नियंत्रण (RBAC) का समर्थन किया जाता है।
- डेटा स्तर, जिसका लक्ष्य
<vault-name>.vault.azure.comहै। - इसका उपयोग कुंजी भंडार में डेटा (कुंजी, गुप्त और प्रमाणपत्र) को प्रबंधित और एक्सेस करने के लिए किया जाता है। यह कुंजी भंडार पहुंच नीतियों या Azure RBAC का समर्थन करता है।
एक भूमिका जैसे Contributor जिसे प्रबंधन स्थान में पहुंच नीतियों को प्रबंधित करने के लिए अनुमतियाँ हैं, वह पहुंच नीतियों को संशोधित करके गुप्तों तक पहुंच प्राप्त कर सकता है।
Key Vault RBAC Built-In Roles

Network Access
Azure Key Vault में, फायरवॉल नियम स्थापित किए जा सकते हैं ताकि निर्धारित वर्चुअल नेटवर्क या IPv4 पते की रेंज से केवल डेटा स्तर के संचालन की अनुमति दी जा सके। यह प्रतिबंध Azure प्रशासन पोर्टल के माध्यम से पहुंच को भी प्रभावित करता है; यदि उपयोगकर्ता का लॉगिन IP पता अधिकृत रेंज के भीतर नहीं है, तो वे कुंजी, गुप्त, या प्रमाणपत्रों की सूची नहीं देख पाएंगे।
इन सेटिंग्स का विश्लेषण और प्रबंधन करने के लिए, आप Azure CLI का उपयोग कर सकते हैं:
az keyvault show --name name-vault --query networkAcls
पिछला कमांड name-vault** के फायरवॉल सेटिंग्स को प्रदर्शित करेगा, जिसमें सक्षम IP रेंज और अस्वीकृत ट्रैफ़िक के लिए नीतियाँ शामिल हैं।
इसके अलावा, एक निजी एंडपॉइंट बनाना संभव है ताकि एक वॉल्ट के लिए एक निजी कनेक्शन की अनुमति मिल सके।
डिलीशन प्रोटेक्शन
जब एक की वॉल्ट बनाई जाती है, तो डिलीशन के लिए अनुमति देने के लिए न्यूनतम दिनों की संख्या 7 होती है। जिसका मतलब है कि जब भी आप उस की वॉल्ट को हटाने की कोशिश करेंगे, तो इसे हटाने के लिए कम से कम 7 दिन की आवश्यकता होगी।
हालांकि, एक वॉल्ट को पर्ज प्रोटेक्शन अक्षम के साथ बनाना संभव है, जो की वॉल्ट और वस्तुओं को रिटेंशन अवधि के दौरान पर्ज करने की अनुमति देता है। हालांकि, एक बार जब इस प्रोटेक्शन को एक वॉल्ट के लिए सक्षम किया जाता है, तो इसे अक्षम नहीं किया जा सकता।
एन्यूमरेशन
{{#tabs }} {{#tab name="az" }}
# List all Key Vaults in the subscription
az keyvault list
# List Key Vaults in a specific Resource Group
az keyvault list --resource-group <ResourceGroupName>
# Show details of a specific Key Vault
az keyvault show --name <KeyVaultName> # If accessPolicies, you can see them here
# List all keys in a Key Vault
az keyvault key list --vault-name <KeyVaultName>
# List all secrets in a Key Vault
az keyvault secret list --vault-name <KeyVaultName>
# Get versions of a secret
az keyvault secret list-versions --vault-name <KeyVaultName> --name <SecretName>
# List all certificates in a Key Vault
az keyvault certificate list --vault-name <KeyVaultName>
# List all deleted Key Vaults in the subscription
az keyvault list-deleted
# Get properties of a deleted Key Vault
az keyvault show-deleted --name <KeyVaultName>
# Get assigned roles
az role assignment list --include-inherited --scope "/subscriptions/<subscription-uuid>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>"
# Get secret value
az keyvault secret show --vault-name <KeyVaultName> --name <SecretName>
# Get old versions secret value
az keyvault secret show --id https://<KeyVaultName>.vault.azure.net/secrets/<KeyVaultName>/<idOldVersion>
{{#endtab }}
{{#tab name="Az Powershell" }}
# Get keyvault token
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
# Connect with PS AzureAD
## $token from management API
Connect-AzAccount -AccessToken $token -AccountId 1937ea5938eb-10eb-a365-10abede52387 -KeyVaultAccessToken $keyvaulttoken
# Get details of a specific Key Vault
Get-AzKeyVault -VaultName <KeyVaultName>
# List all keys in a Key Vault
Get-AzKeyVaultKey -VaultName <KeyVaultName>
# List all secrets in a Key Vault
Get-AzKeyVaultSecret -VaultName <KeyVaultName>
# List all certificates in a Key Vault
Get-AzKeyVaultCertificate -VaultName <KeyVaultName>
# List all deleted Key Vaults in the subscription
Get-AzKeyVault -InRemovedState
# Get properties of a deleted Key Vault
Get-AzKeyVault -VaultName <KeyVaultName> -InRemovedState
# Get secret values
Get-AzKeyVaultSecret -VaultName <vault_name> -Name <secret_name> -AsPlainText
{{#endtab }}
{{#tab name="az script" }}
#!/bin/bash
# Dump all keyvaults from the subscription
# Define Azure subscription ID
AZ_SUBSCRIPTION_ID="your-subscription-id"
# Specify the filename for output
CSV_OUTPUT="vault-names-list.csv"
# Login to Azure account
az login
# Select the desired subscription
az account set --subscription $AZ_SUBSCRIPTION_ID
# Retrieve all resource groups within the subscription
AZ_RESOURCE_GROUPS=$(az group list --query "[].name" -o tsv)
# Initialize the CSV file with headers
echo "Vault Name,Associated Resource Group" > $CSV_OUTPUT
# Iterate over each resource group
for GROUP in $AZ_RESOURCE_GROUPS
do
# Fetch key vaults within the current resource group
VAULT_LIST=$(az keyvault list --resource-group $GROUP --query "[].name" -o tsv)
# Process each key vault
for VAULT in $VAULT_LIST
do
# Extract the key vault's name
VAULT_NAME=$(az keyvault show --name $VAULT --resource-group $GROUP --query "name" -o tsv)
# Append the key vault name and its resource group to the file
echo "$VAULT_NAME,$GROUP" >> $CSV_OUTPUT
done
done
{{#endtab }} {{#endtabs }}
विशेषाधिकार वृद्धि
{{#ref}} ../az-privilege-escalation/az-key-vault-privesc.md {{#endref}}
पोस्ट एक्सप्लॉइटेशन
{{#ref}} ../az-post-exploitation/az-key-vault-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}