# 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"}} ```bash # Get storage accounts az storage account list # List tables az storage table list --account-name # Read table az storage entity query \ --account-name \ --table-name \ --top 10 # Write table az storage entity insert \ --account-name \ --table-name \ --entity PartitionKey= RowKey= = # 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"}} ```bash # Get storage accounts Get-AzStorageAccount # List tables Get-AzStorageTable -Context (Get-AzStorageAccount -Name -ResourceGroupName ).Context Get-AzStorageTableStoredAccessPolicy -Table -Context (Get-AzStorageAccount -Name ).Context ``` {{#endtab}} {{#endtabs}} > [!NOTE] > डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करके एक कुंजी पर हस्ताक्षर करेगा और क्रिया करेगा। 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}}