6.4 KiB
Az - Table Storage
{{#include ../../../banners/hacktricks-training.md}}
Basic Information
Azure Table Storage एक NoSQL की-वैल्यू स्टोर है जिसे बड़े पैमाने पर संरचित, गैर-संबंधित डेटा को स्टोर करने के लिए डिज़ाइन किया गया है। यह उच्च उपलब्धता, कम विलंबता, और बड़े डेटा सेट को कुशलतापूर्वक संभालने के लिए स्केलेबिलिटी प्रदान करता है। डेटा को तालिकाओं में व्यवस्थित किया जाता है, प्रत्येक इकाई को एक विभाजन कुंजी और पंक्ति कुंजी द्वारा पहचाना जाता है, जिससे तेज़ लुकअप संभव होता है। यह डेटा को सुरक्षित, प्रबंधित स्टोरेज के लिए एन्क्रिप्शन, भूमिका-आधारित एक्सेस नियंत्रण, और साझा एक्सेस सिग्नेचर जैसी सुविधाओं का समर्थन करता है, जो विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त है।
तालिका स्टोरेज के लिए कोई अंतर्निहित बैकअप तंत्र नहीं है।
Keys
PartitionKey
- PartitionKey इकाइयों को तार्किक विभाजनों में समूहित करता है। समान PartitionKey वाली इकाइयाँ एक साथ स्टोर की जाती हैं, जिससे क्वेरी प्रदर्शन और स्केलेबिलिटी में सुधार होता है।
- उदाहरण: एक तालिका में कर्मचारी डेटा स्टोर करते समय,
PartitionKeyएक विभाग का प्रतिनिधित्व कर सकता है, जैसे,"HR"या"IT"।
RowKey
- RowKey एक विभाजन के भीतर एक इकाई के लिए अद्वितीय पहचानकर्ता है। जब इसे PartitionKey के साथ मिलाया जाता है, तो यह सुनिश्चित करता है कि तालिका में प्रत्येक इकाई का एक वैश्विक अद्वितीय पहचानकर्ता हो।
- उदाहरण:
"HR"विभाजन के लिए,RowKeyएक कर्मचारी आईडी हो सकता है, जैसे,"12345"।
Other Properties (Custom Properties)
- PartitionKey और RowKey के अलावा, एक इकाई में डेटा स्टोर करने के लिए अतिरिक्त कस्टम प्रॉपर्टीज़ हो सकती हैं। ये उपयोगकर्ता-परिभाषित होती हैं और पारंपरिक डेटाबेस में कॉलम की तरह कार्य करती हैं।
- प्रॉपर्टीज़ को की-वैल्यू पेयर्स के रूप में स्टोर किया जाता है।
- उदाहरण:
Name,Age,Titleएक कर्मचारी के लिए कस्टम प्रॉपर्टीज़ हो सकती हैं।
Enumeration
{{#tabs}} {{#tab name="az cli"}}
# Get storage accounts
az storage account list
# List tables
az storage table list --account-name <name>
# Read table
az storage entity query \
--account-name <name> \
--table-name <t-name> \
--top 10
# Write table
az storage entity insert \
--account-name <STORAGE_ACCOUNT_NAME> \
--table-name <TABLE_NAME> \
--entity PartitionKey=<PARTITION_KEY> RowKey=<ROW_KEY> <PROPERTY_KEY>=<PROPERTY_VALUE>
# Write example
az storage entity insert \
--account-name mystorageaccount \
--table-name mytable \
--entity PartitionKey=HR RowKey=12345 Name="John Doe" Age=30 Title="Manager"
# Update row
az storage entity merge \
--account-name mystorageaccount \
--table-name mytable \
--entity PartitionKey=pk1 RowKey=rk1 Age=31
{{#endtab}} {{#tab name="PowerShell"}}
# Get storage accounts
Get-AzStorageAccount
# List tables
Get-AzStorageTable -Context (Get-AzStorageAccount -Name <mystorageaccount> -ResourceGroupName <ResourceGroupName>).Context
Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccount -Name <mystorageaccount -ResourceGroupName <ResourceGroupName>).Context
{{#endtab}} {{#endtabs}}
Note
डिफ़ॉल्ट रूप से
azcli एक खाता कुंजी का उपयोग करके एक कुंजी पर हस्ताक्षर करेगा और क्रिया करेगा। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए--auth-mode loginपैरामीटर का उपयोग करें।
Tip
उपयोग करने के लिए खाता कुंजी को इंगित करने के लिए पैरामीटर
--account-keyका उपयोग करें
SAS टोकन के माध्यम से पहुंचने के लिए SAS टोकन के साथ पैरामीटर--sas-tokenका उपयोग करें
Privilege Escalation
Same as storage privesc:
{{#ref}} ../az-privilege-escalation/az-storage-privesc.md {{#endref}}
Post Exploitation
{{#ref}} ../az-post-exploitation/az-table-storage-post-exploitation.md {{#endref}}
Persistence
Same as storage persistence:
{{#ref}} ../az-persistence/az-storage-persistence.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}