mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-07 02:03:45 -08:00
178 lines
13 KiB
Markdown
178 lines
13 KiB
Markdown
# 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](https://learn.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates) देखें।
|
|
|
|
[**docs**](https://learn.microsoft.com/en-us/azure/key-vault/general/basic-concepts) के अनुसार, Vaults सॉफ़्टवेयर और HSM-समर्थित कुंजियों, गुप्तों और प्रमाणपत्रों को संग्रहीत करने का समर्थन करते हैं। प्रबंधित HSM पूल केवल HSM-समर्थित कुंजियों का समर्थन करते हैं।
|
|
|
|
**Vaults** के लिए **URL प्रारूप** है `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](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault) पर पा सकते हैं।
|
|
|
|
### Access Control <a href="#access-control" id="access-control"></a>
|
|
|
|
Key Vault संसाधन तक पहुंच दो स्तरों द्वारा नियंत्रित होती है:
|
|
|
|
- **प्रबंधन स्तर**, जिसका लक्ष्य [management.azure.com](http://management.azure.com/) है।
|
|
- इसका उपयोग कुंजी भंडार और **पहुंच नीतियों** को प्रबंधित करने के लिए किया जाता है। केवल Azure भूमिका आधारित पहुंच नियंत्रण (**RBAC**) का समर्थन किया जाता है।
|
|
- **डेटा स्तर**, जिसका लक्ष्य **`<vault-name>.vault.azure.com`** है।
|
|
- इसका उपयोग कुंजी भंडार में **डेटा** (कुंजी, गुप्त और प्रमाणपत्र) को प्रबंधित और एक्सेस करने के लिए किया जाता है। यह **कुंजी भंडार पहुंच नीतियों** या Azure **RBAC** का समर्थन करता है।
|
|
|
|
एक भूमिका जैसे **Contributor** जिसे प्रबंधन स्थान में पहुंच नीतियों को प्रबंधित करने के लिए अनुमतियां हैं, पहुंच नीतियों को संशोधित करके गुप्तों तक पहुंच प्राप्त कर सकता है।
|
|
|
|
### Key Vault RBAC Built-In Roles <a href="#rbac-built-in-roles" id="rbac-built-in-roles"></a>
|
|
|
|
<figure><img src="../../../images/image (27).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
### Network Access
|
|
|
|
Azure Key Vault में, **फायरवॉल** नियम सेट किए जा सकते हैं ताकि **निर्धारित वर्चुअल नेटवर्क या IPv4 पते की रेंज से केवल डेटा स्तर के संचालन की अनुमति दी जा सके**। यह प्रतिबंध Azure प्रशासन पोर्टल के माध्यम से पहुंच को भी प्रभावित करता है; यदि उपयोगकर्ता का लॉगिन IP पता अधिकृत रेंज के भीतर नहीं है, तो वे कुंजी, गुप्त, या प्रमाणपत्रों की सूची नहीं देख पाएंगे।
|
|
|
|
इन सेटिंग्स का विश्लेषण और प्रबंधन करने के लिए, आप **Azure CLI** का उपयोग कर सकते हैं:
|
|
```bash
|
|
az keyvault show --name name-vault --query networkAcls
|
|
```
|
|
पिछला कमांड `name-vault`** के फायरवॉल सेटिंग्स को प्रदर्शित करेगा, जिसमें सक्षम IP रेंज और अस्वीकृत ट्रैफ़िक के लिए नीतियाँ शामिल हैं।
|
|
|
|
इसके अलावा, एक **निजी एंडपॉइंट** बनाना संभव है ताकि एक वॉल्ट के लिए एक निजी कनेक्शन की अनुमति दी जा सके।
|
|
|
|
### डिलीशन प्रोटेक्शन
|
|
|
|
जब एक की वॉल्ट बनाई जाती है, तो डिलीशन के लिए अनुमति देने के लिए न्यूनतम दिनों की संख्या 7 होती है। जिसका मतलब है कि जब भी आप उस की वॉल्ट को हटाने की कोशिश करेंगे, तो इसे हटाने के लिए **कम से कम 7 दिन की आवश्यकता होगी**।
|
|
|
|
हालांकि, एक वॉल्ट को **पर्ज प्रोटेक्शन अक्षम** के साथ बनाना संभव है, जो की वॉल्ट और वस्तुओं को रिटेंशन अवधि के दौरान पर्ज करने की अनुमति देता है। हालांकि, एक बार जब इस प्रोटेक्शन को एक वॉल्ट के लिए सक्षम किया जाता है, तो इसे अक्षम नहीं किया जा सकता।
|
|
|
|
## एन्यूमरेशन
|
|
|
|
{{#tabs }}
|
|
{{#tab name="az" }}
|
|
```bash
|
|
# List all Key Vaults in the subscription
|
|
az keyvault list
|
|
# List Key Vaults in a specific Resource Group
|
|
az keyvault list --resource-group <ResourceGroupName>
|
|
az keyvault list --query '[].{name:name}' -o tsv # Get just the names
|
|
# 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" }}
|
|
```bash
|
|
# 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" }}
|
|
```bash
|
|
#!/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}}
|