mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-sql.
This commit is contained in:
@@ -4,47 +4,47 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL एक managed, secure, और intelligent products का family है जो **Azure cloud में SQL Server database engine** का उपयोग करता है। इसका मतलब है कि आपको अपने servers के physical administration की चिंता नहीं करनी पड़ती, और आप अपने data को manage करने पर focus कर सकते हैं।
|
||||
Azure SQL managed, secure और intelligent products का एक परिवार है, जो **Azure cloud में SQL Server database engine** का उपयोग करता है। इसका अर्थ है कि आपको अपने servers के physical administration की चिंता करने की आवश्यकता नहीं है और आप अपने data को manage करने पर ध्यान केंद्रित कर सकते हैं।
|
||||
|
||||
Azure SQL चार main offerings से बना है:
|
||||
Azure SQL में चार मुख्य offerings शामिल हैं:
|
||||
|
||||
1. **Azure SQL Server**: SQL Server databases के **deployment and management** के लिए एक server की जरूरत होती है।
|
||||
2. **Azure SQL Database**: यह एक **fully-managed database service** है, जो आपको Azure cloud में individual databases host करने की अनुमति देता है।
|
||||
3. **Azure SQL Managed Instance**: यह larger scale, पूरे SQL Server instance-scoped deployments के लिए है।
|
||||
4. **Azure SQL Server on Azure VMs**: यह उन architectures के लिए best है जहाँ आप **operating system **और SQL Server instance पर control चाहते हैं।
|
||||
1. **Azure SQL Server**: SQL Server databases के **deployment और management** के लिए एक server आवश्यक है।
|
||||
2. **Azure SQL Database**: यह एक **fully-managed database service** है, जो आपको Azure cloud में individual databases host करने की सुविधा देती है।
|
||||
3. **Azure SQL Managed Instance**: यह बड़े scale वाले, पूरे SQL Server instance-scoped deployments के लिए है।
|
||||
4. **Azure SQL Server on Azure VMs**: यह उन architectures के लिए सबसे उपयुक्त है जहाँ आप **operating system **और SQL Server instance पर control चाहते हैं।
|
||||
|
||||
### SQL Server Security Features
|
||||
|
||||
**Network access:**
|
||||
|
||||
- Public endpoint (specific networks तक access limit कर सकता है)।
|
||||
- Private endpoints.
|
||||
- domain names के आधार पर connections को restrict करना भी possible है।
|
||||
- Azure services को access करने देने की भी possibility है (जैसे portal में Query editor use करने के लिए या किसी Azure VM को connect करने देने के लिए)।
|
||||
- अगर किसी SQL Server पर *Allow Azure services and resources to access this server* "Enabled" पर set है, तो Azure automatically एक hidden firewall rule create करेगा जो Azure से originating सभी network traffic को SQL Server से connect करने की अनुमति देता है — जिसमें any tenant के resources भी शामिल हैं।
|
||||
- इसका मतलब है कि अगर आपके पास valid SQL credentials हैं, तो आप अपने own attacker‑controlled tenant के अंदर किसी Azure VM से victim Azure SQL Server से connect कर सकते हैं। [MS docs यह explain करता है](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
|
||||
- Public endpoint (access को specific networks तक सीमित किया जा सकता है)।
|
||||
- Private endpoints।
|
||||
- Domain names के आधार पर connections को restrict करना भी संभव है।
|
||||
- Azure services को access की अनुमति देना भी संभव है (जैसे portal में Query editor का उपयोग करने के लिए या किसी Azure VM को connect करने की अनुमति देने के लिए)।
|
||||
- यदि किसी SQL Server में *Allow Azure services and resources to access this server* को "Enabled" पर set किया गया है, तो Azure automatically एक hidden firewall rule create करेगा, जो Azure से originate होने वाले सभी network traffic को SQL Server से connect करने की अनुमति देता है — इसमें किसी भी tenant के resources शामिल हैं।
|
||||
- इसका अर्थ है कि यदि आपको valid SQL credentials मिल जाते हैं, तो आप अपने attacker-controlled tenant के अंदर मौजूद Azure VM से victim Azure SQL Server से connect कर सकते हैं। [The MS docs explains this](https://learn.microsoft.com/en-us/azure/azure-sql/database/network-access-controls-overview?view=azuresql#allow-azure-services)
|
||||
|
||||
**Authentication Methods:**
|
||||
|
||||
- Microsoft **Entra-only** authentication: आपको उन Entra principals को indicate करना होगा जिन्हें service access मिलेगा।
|
||||
- **Both SQL and Microsoft Entra** authentication: Microsoft Entra के साथ traditional SQL authentication, username और password के साथ।
|
||||
- **Only SQL** authentication: केवल database users के जरिए access allow करें।
|
||||
- Microsoft **Entra-only** authentication: आपको उन Entra principals को indicate करना होगा जिन्हें service का access प्राप्त होगा।
|
||||
- **Both SQL and Microsoft Entra** authentication: Microsoft Entra के साथ username और password वाली traditional SQL authentication।
|
||||
- **Only SQL** authentication: केवल database users के माध्यम से access की अनुमति दें।
|
||||
|
||||
ध्यान दें कि अगर कोई SQL auth allow है तो एक admin user (username + password) indicate करना जरूरी है, और अगर Entra ID auth selected है तो कम से कम एक principal with admin access भी indicate करना जरूरी है।
|
||||
ध्यान दें कि यदि कोई भी SQL auth allowed है, तो एक admin user (username + password) indicate करना आवश्यक है और यदि Entra ID auth selected है, तो admin access वाले कम-से-कम एक principal को indicate करना भी आवश्यक है।
|
||||
|
||||
**Encryption:**
|
||||
|
||||
- इसे “Transparent data encryption” कहा जाता है और यह databases, backups, और logs को at rest encrypt करता है।
|
||||
- हमेशा की तरह, by default Azure managed key use होती है, लेकिन customer managed encryption key (CMEK) भी use की जा सकती है।
|
||||
- इसे “Transparent data encryption” कहा जाता है और यह databases, backups और logs को at rest encrypt करता है।
|
||||
- हमेशा की तरह, default रूप से Azure managed key का उपयोग किया जाता है, लेकिन customer managed encryption key (CMEK) का भी उपयोग किया जा सकता है।
|
||||
**Managed Identities:**
|
||||
|
||||
- system और user managed MIs assign करना possible है।
|
||||
- इसका उपयोग encryption key access करने के लिए (अगर CMEK use की गई है) और databases से अन्य services access करने के लिए होता है।
|
||||
- database से access की जा सकने वाली Azure services के कुछ examples के लिए [docs का यह page](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) देखें
|
||||
- अगर एक से अधिक UMI assigned हैं, तो use करने के लिए default one indicate करना possible है।
|
||||
- cross-tenant access के लिए federated client identity configure करना possible है।
|
||||
- System और user managed MIs assign करना संभव है।
|
||||
- इनका उपयोग encryption key (यदि CMEK का उपयोग किया गया है) और databases से अन्य services को access करने के लिए किया जाता है।
|
||||
- Database से access की जा सकने वाली Azure services के कुछ examples के लिए [this page of the docs](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) देखें।
|
||||
- यदि एक से अधिक UMI assigned हैं, तो उपयोग की जाने वाली default वाली को indicate करना संभव है।
|
||||
- Cross-tenant access के लिए federated client identity configure करना संभव है।
|
||||
|
||||
blob storage के अंदर की info को SQL database से access करने के लिए कुछ commands:
|
||||
SQL database से blob storage के अंदर मौजूद information access करने के लिए कुछ commands:
|
||||
```sql
|
||||
-- Create a credential for the managed identity
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
@@ -71,24 +71,24 @@ GO
|
||||
```
|
||||
**Microsoft Defender:**
|
||||
|
||||
- “mitigating potential database vulnerabilities, and detecting anomalous activities” के लिए उपयोगी
|
||||
- हम Defender के बारे में इसकी अपनी lesson में बात करेंगे (इसे कई अन्य Azure services में सक्षम किया जा सकता है)
|
||||
- “संभावित database vulnerabilities को कम करने और anomalous activities का पता लगाने” के लिए उपयोगी
|
||||
- हम Defender के बारे में इसके अपने lesson में बात करेंगे (इसे कई अन्य Azure services में enable किया जा सकता है)
|
||||
|
||||
**Backups:**
|
||||
- Backup frequency retention policies में managed होती है।
|
||||
- Backup frequency को retention policies में manage किया जाता है।
|
||||
|
||||
**Deleted databases:**
|
||||
- Existing backups से delete की गई DBs को restore करना संभव है।
|
||||
- Existing backups से delete किए गए DBs को restore करना संभव है।
|
||||
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** एक **fully managed database platform as a service (PaaS)** है जो scalable और secure relational database solutions प्रदान करता है। यह latest SQL Server technologies पर बना है और infrastructure management की आवश्यकता को समाप्त करता है, जिससे यह cloud-based applications के लिए एक लोकप्रिय choice बनता है।
|
||||
**Azure SQL Database** एक **fully managed database platform as a service (PaaS)** है, जो scalable और secure relational database solutions प्रदान करता है। यह latest SQL Server technologies पर बनाया गया है और infrastructure management की आवश्यकता समाप्त करता है, जिससे यह cloud-based applications के लिए एक लोकप्रिय विकल्प बन गया है।
|
||||
|
||||
SQL database बनाने के लिए यह बताना जरूरी है कि इसे कौन-सा SQL server host करेगा।
|
||||
SQL database बनाने के लिए उस SQL server को specify करना आवश्यक है जहाँ इसे host किया जाएगा।
|
||||
|
||||
### SQL Database Security Features
|
||||
|
||||
- **Always Up-to-Date**: latest stable version of SQL Server पर चलता है और नए features तथा patches automatically प्राप्त करता है।
|
||||
- **Always Up-to-Date**: SQL Server के latest stable version पर चलता है और नए features तथा patches automatically प्राप्त करता है।
|
||||
- **Inherited SQL Server security features:**
|
||||
- Authentication (SQL and/or Entra ID)
|
||||
- Assigned Managed Identities
|
||||
@@ -96,32 +96,33 @@ SQL database बनाने के लिए यह बताना जरू
|
||||
- Encryption
|
||||
- Backups
|
||||
- …
|
||||
- **Data redundancy:** Options local, zone, Geo या Geo-Zone redundant हैं।
|
||||
- **Ledger:** यह cryptographically data की integrity verify करता है, यह सुनिश्चित करते हुए कि किसी भी tampering का पता चल जाए। वित्तीय, medical और sensitive data manage करने वाले किसी भी organization के लिए उपयोगी।
|
||||
- **Data redundancy:** Local, zone, Geo या Geo-Zone redundant विकल्प उपलब्ध हैं।
|
||||
- **Ledger:** यह data की integrity को cryptographically verify करता है, जिससे किसी भी tampering का पता चल जाता है। Financial, medical और sensitive data manage करने वाले किसी भी organization के लिए उपयोगी।
|
||||
|
||||
A SQL database **elastic Pool** का हिस्सा हो सकता है। Elastic pools multiple databases को manage करने के लिए एक cost-effective solution हैं, जो उनके बीच configurable compute (eDTUs) और storage resources share करते हैं, और pricing केवल allocated resources पर आधारित होती है, databases की संख्या पर नहीं।
|
||||
|
||||
एक SQL database **elastic Pool** का हिस्सा हो सकता है। Elastic pools कई databases को उनके बीच configurable compute (eDTUs) और storage resources share करके manage करने का cost-effective solution हैं। Pricing केवल allocated resources पर आधारित होती है, databases की संख्या पर नहीं।
|
||||
|
||||
#### Azure SQL Column Level Security (Masking) & Row Level Security
|
||||
|
||||
**Azure SQL's dynamic** data masking एक feature है जो **sensitive information को छिपाकर** unauthorized users से उसकी protection करने में मदद करता है। Actual data को बदलने के बजाय, यह dynamically displayed data को mask करता है, जिससे credit card numbers जैसी sensitive details obscured रहती हैं।
|
||||
**Azure SQL's dynamic** data masking एक ऐसी feature है जो unauthorized users से **sensitive information को छिपाकर उसकी सुरक्षा करने** में सहायता करती है। Actual data को बदलने के बजाय, यह displayed data को dynamically mask करती है, जिससे credit card numbers जैसी sensitive details अस्पष्ट हो जाती हैं।
|
||||
|
||||
**Dynamic Data Masking** administrators और unmasked users (इन users को indicate करना होता है) को छोड़कर सभी users पर affect करता है। इसमें configuration option होता है जो बताता है कि कौन-से SQL users dynamic data masking से exempt हैं, जबकि **administrators हमेशा excluded** रहते हैं।
|
||||
**Dynamic Data Masking** उन सभी users को प्रभावित करती है जो unmasked नहीं हैं (इन users को specify करना आवश्यक है) और administrators को प्रभावित नहीं करती। इसमें यह specify करने का configuration option होता है कि कौन से SQL users dynamic data masking से exempt हैं, जबकि **administrators हमेशा excluded रहते हैं**।
|
||||
|
||||
**Azure SQL Row Level Security (RLS)** एक feature है जो **control करता है कि user कौन-सी rows देख या modify कर सकता है**, जिससे यह सुनिश्चित होता है कि हर user केवल अपने लिए relevant data ही देखे। Filter या block predicates के साथ security policies बनाकर organizations database level पर fine-grained access enforce कर सकती हैं।
|
||||
**Azure SQL Row Level Security (RLS)** एक ऐसी feature है जो **यह नियंत्रित करती है कि कोई user किन rows को देख या modify कर सकता है**, जिससे प्रत्येक user केवल अपने लिए relevant data देखता है। Filter या block predicates वाली security policies बनाकर organizations database level पर fine-grained access लागू कर सकते हैं।
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instances** बड़े scale, पूरे SQL Server instance-scoped deployments के लिए हैं। यह latest SQL Server on-premises (Enterprise Edition) Database Engine के साथ लगभग 100% compatibility प्रदान करता है, जो एक native virtual network (VNet) implementation देता है जो common security concerns को address करता है, और on-premises SQL Server customers के लिए favorable business model प्रदान करता है।
|
||||
**Azure SQL Managed Instances** बड़े scale वाले, पूरे SQL Server instance-scoped deployments के लिए हैं। यह latest SQL Server on-premises (Enterprise Edition) Database Engine के साथ लगभग 100% compatibility प्रदान करता है। इसमें native virtual network (VNet) implementation है, जो common security concerns को address करती है, और on-premises SQL Server customers के लिए favorable business model प्रदान करती है।
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines** **operating system** और SQL Server instance को control करने की अनुमति देती हैं, क्योंकि VM service में एक VM spawn होगी जो SQL server चला रही होगी।
|
||||
**Azure SQL Virtual Machines** operating system और SQL Server instance को **control करने की अनुमति देती हैं**, क्योंकि VM service में एक VM spawn की जाएगी, जिस पर SQL server चलेगा।
|
||||
|
||||
जब SQL Virtual Machine बनाई जाती है, तो **VM की सभी settings select करना** संभव है (जैसा VM lesson में दिखाया गया है) जो SQL server को host करेगी।
|
||||
- इसका मतलब है कि VM कुछ VNet(s) को access कर रही होगी, उसमें **Managed Identities attached** हो सकती हैं, file shares mounted हो सकते हैं… जिससे **SQL से VM तक pivoting** बहुत interesting हो जाता है।
|
||||
- इसके अलावा, app id और secret configure करना संभव है ताकि **SQL किसी specific key vault को access कर सके**, जिसमें sensitive info हो सकती है।
|
||||
SQL Virtual Machine बनाने पर उस VM की **सभी settings select करना संभव है** (जैसा कि VM lesson में दिखाया गया है), जो SQL server को host करेगी।
|
||||
- इसका अर्थ है कि VM कुछ VNet(s) को access करेगी, इसमें **Managed Identities attached** हो सकती हैं, file shares mounted हो सकते हैं… जिससे **SQL से VM तक pivoting** करना बहुत interesting हो जाता है।
|
||||
- इसके अलावा, SQL को किसी specific key vault तक access **allow करने के लिए app id और secret configure करना** संभव है, जिसमें sensitive info हो सकती है।
|
||||
|
||||
**automatic SQL updates**, **automatic backups**, **Entra ID authentication** और अन्य SQL services की अधिकांश features को configure करना भी संभव है।
|
||||
**automatic SQL updates**, **automatic backups**, **Entra ID authentication** और अन्य SQL services की अधिकांश features जैसी चीज़ों को configure करना भी संभव है।
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -260,7 +261,7 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
इसके अलावा, यदि आप database के भीतर Dynamic Data Masking और Row Level policies enumerate करना चाहते हैं, तो आप query कर सकते हैं:
|
||||
इसके अतिरिक्त, यदि आप database के भीतर Dynamic Data Masking और Row Level policies को enumerate करना चाहते हैं, तो आप query कर सकते हैं:
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
@@ -285,9 +286,9 @@ JOIN sys.security_predicates AS sp2
|
||||
ON sp.object_id = sp2.object_id;
|
||||
|
||||
```
|
||||
### कनेक्ट करें और SQL queries चलाएँ
|
||||
### Connect करें और SQL queries चलाएँ
|
||||
|
||||
आप example [enumerating an Az WebApp](az-app-services.md) से एक connection string (जिसमें credentials होते हैं) पा सकते हैं:
|
||||
आपको example [enumerating an Az WebApp](az-app-services.md) से एक connection string (जिसमें credentials होते हैं) मिल सकती है:
|
||||
```bash
|
||||
function invoke-sql{
|
||||
param($query)
|
||||
@@ -306,11 +307,11 @@ $Connection.Close()
|
||||
|
||||
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
|
||||
```
|
||||
आप database तक access करने के लिए sqlcmd का भी उपयोग कर सकते हैं। यह जानना महत्वपूर्ण है कि क्या server public connections की अनुमति देता है `az sql server show --name <server-name> --resource-group <resource-group>`, और यह भी कि क्या firewall rule हमारे IP को access करने देता है:
|
||||
आप database को access करने के लिए `sqlcmd` का भी उपयोग कर सकते हैं। यह जानना महत्वपूर्ण है कि server public connections की अनुमति देता है या नहीं: `az sql server show --name <server-name> --resource-group <resource-group>`, और यह भी कि firewall rule हमारे IP को access करने देता है या नहीं:
|
||||
```bash
|
||||
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
|
||||
```
|
||||
## References
|
||||
## संदर्भ
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/azure-sql-iaas-vs-paas-what-is-overview?view=azuresql)
|
||||
- [https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql](https://learn.microsoft.com/en-us/azure/azure-sql/database/single-database-overview?view=azuresql)
|
||||
|
||||
@@ -4,52 +4,52 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Storage Accounts Microsoft Azure की fundamental services हैं जो scalable, secure, और highly available cloud **storage for various data types** प्रदान करती हैं, जिसमें blobs (binary large objects), files, queues, और tables शामिल हैं। ये containers की तरह काम करती हैं जो इन अलग-अलग storage services को आसान management के लिए single namespace के तहत group करती हैं।
|
||||
Azure Storage Accounts Microsoft Azure में fundamental services हैं, जो scalable, secure और highly available cloud **storage for various data types** प्रदान करते हैं, जिनमें blobs (binary large objects), files, queues और tables शामिल हैं। ये containers के रूप में कार्य करते हैं, जो आसान management के लिए इन विभिन्न storage services को एक single namespace के अंतर्गत group करते हैं।
|
||||
|
||||
**Main configuration options**:
|
||||
|
||||
- Every storage account must have a **uniq name across all Azure**.
|
||||
- Every storage account is deployed in a **region** or in an Azure extended zone
|
||||
- It's possible to select the **premium** version of the storage account for better performance
|
||||
- It's possible to select among **4 types of redundancy to protect** against rack, drive and datacenter **failures**.
|
||||
- हर storage account का **uniq name across all Azure** होना आवश्यक है।
|
||||
- हर storage account को किसी **region** या Azure extended zone में deploy किया जाता है।
|
||||
- बेहतर performance के लिए storage account का **premium** version चुनना संभव है।
|
||||
- Rack, drive और datacenter **failures** से सुरक्षा के लिए **4 types of redundancy** में से चुनना संभव है।
|
||||
|
||||
**Security configuration options**:
|
||||
|
||||
- **Require secure transfer for REST API operations**: Storage के साथ किसी भी communication में TLS की आवश्यकता
|
||||
- **Allows enabling anonymous access on individual containers**: If not, it won't be possible to enable anonymous access in the future
|
||||
- **Enable storage account key access**: If not, access with Shared Keys will be forbidden
|
||||
- **Require secure transfer for REST API operations**: Storage के साथ किसी भी communication में TLS आवश्यक करता है।
|
||||
- **Allows enabling anonymous access on individual containers**: यदि नहीं, तो भविष्य में anonymous access enable करना संभव नहीं होगा।
|
||||
- **Enable storage account key access**: यदि नहीं, तो Shared Keys के साथ access forbidden होगा।
|
||||
- **Minimum TLS version**
|
||||
- **Permitted scope for copy operations**: किसी भी storage account से allow करें, same Entra tenant के किसी भी storage account से, या same virtual network में private endpoints वाले storage account से।
|
||||
- **Permitted scope for copy operations**: किसी भी storage account से, उसी Entra tenant के किसी भी storage account से, या उसी virtual network में private endpoints वाले storage account से अनुमति दें।
|
||||
|
||||
**Blob Storage options**:
|
||||
|
||||
- **Allow cross-tenant replication**
|
||||
- **Access tier**: Hot (frequently access data), Cool and Cold (rarely accessed data)
|
||||
- **Access tier**: Hot (frequently access data), Cool और Cold (rarely accessed data)
|
||||
|
||||
**Networking options**:
|
||||
|
||||
- **Network access**:
|
||||
- Allow from all networks
|
||||
- Allow from selected virtual networks and IP addresses
|
||||
- Disable public access and use private access
|
||||
- **Private endpoints**: यह virtual network से storage account तक private connection allow करता है
|
||||
- सभी networks से अनुमति दें
|
||||
- Selected virtual networks और IP addresses से अनुमति दें
|
||||
- Public access disable करें और private access का उपयोग करें
|
||||
- **Private endpoints**: यह किसी virtual network से storage account के लिए private connection की अनुमति देता है।
|
||||
|
||||
**Data protection options**:
|
||||
|
||||
- **Point-in-time restore for containers**: containers को पहले की state में restore करने की अनुमति देता है
|
||||
- It requires versioning, change feed, and blob soft delete to be enabled.
|
||||
- **Enable soft delete for blobs**: deleted blobs (even overwritten) के लिए दिनों में retention period enable करता है
|
||||
- **Enable soft delete for containers**: deleted containers के लिए दिनों में retention period enable करता है
|
||||
- **Enable soft delete for file shares**: deleted file shared के लिए दिनों में retention period enable करता है
|
||||
- **Enable versioning for blobs**: अपने blobs के previous versions बनाए रखता है
|
||||
- **Enable blob change feed**: blobs में create, modification, और delete changes के logs रखता है
|
||||
- **Enable version-level immutability support**: आपको account-level पर time-based retention policy set करने देता है जो सभी blob versions पर apply होगी।
|
||||
- Version-level immutability support and point-in-time restore for containers cannot be enabled simultaneously.
|
||||
- **Point-in-time restore for containers**: Containers को पहले की state में restore करने की अनुमति देता है।
|
||||
- इसके लिए versioning, change feed और blob soft delete enabled होना आवश्यक है।
|
||||
- **Enable soft delete for blobs**: Deleted blobs (overwritten blobs सहित) के लिए दिनों में retention period enable करता है।
|
||||
- **Enable soft delete for containers**: Deleted containers के लिए दिनों में retention period enable करता है।
|
||||
- **Enable soft delete for file shares**: Deleted file shares के लिए दिनों में retention period enable करता है।
|
||||
- **Enable versioning for blobs**: आपके blobs के previous versions maintain करता है।
|
||||
- **Enable blob change feed**: Blobs में create, modification और delete changes के logs रखता है।
|
||||
- **Enable version-level immutability support**: Account-level पर time-based retention policy set करने की अनुमति देता है, जो सभी blob versions पर लागू होगी।
|
||||
- Version-level immutability support और point-in-time restore for containers को simultaneously enable नहीं किया जा सकता।
|
||||
|
||||
**Encryption configuration options**:
|
||||
|
||||
- **Encryption type**: Microsoft-managed keys (MMK) या Customer-managed keys (CMK) का उपयोग करना possible है
|
||||
- **Enable infrastructure encryption**: data को "for more security" double encrypt करने की अनुमति देता है
|
||||
- **Encryption type**: Microsoft-managed keys (MMK) या Customer-managed keys (CMK) का उपयोग करना संभव है।
|
||||
- **Enable infrastructure encryption**: Data को "for more security" double encrypt करने की अनुमति देता है।
|
||||
|
||||
### Storage endpoints
|
||||
|
||||
@@ -64,18 +64,18 @@ Azure Storage Accounts Microsoft Azure की fundamental services हैं ज
|
||||
|
||||
### Public Exposure
|
||||
|
||||
If "Allow Blob public access" is **enabled** (disabled by default), when creating a container it's possible to:
|
||||
यदि "Allow Blob public access" **enabled** है (default रूप से disabled), तो container create करते समय यह संभव है:
|
||||
|
||||
- Give **public access to read blobs** (you need to know the name).
|
||||
- **List container blobs** and **read** them.
|
||||
- Make it fully **private**
|
||||
- **public access to read blobs** दें (आपको name जानना आवश्यक है)।
|
||||
- **List container blobs** और उन्हें **read** करें।
|
||||
- इसे पूरी तरह **private** बनाएं।
|
||||
|
||||
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Static website (`$web`) exposure & leaked secrets
|
||||
|
||||
- **Static websites** are served from the special `$web` container over a region-specific endpoint such as `https://<account>.z13.web.core.windows.net/`.
|
||||
- The `$web` container may report `publicAccess: null` via the blob API, but files are still reachable through the static site endpoint, so dropping config/IaC artifacts there can leak secrets.
|
||||
- **Static websites** को region-specific endpoint जैसे `https://<account>.z13.web.core.windows.net/` के माध्यम से special `$web` container से serve किया जाता है।
|
||||
- Blob API के माध्यम से `$web` container `publicAccess: null` report कर सकता है, लेकिन files static site endpoint के माध्यम से फिर भी reachable होती हैं, इसलिए वहां config/IaC artifacts रखने से secrets leak हो सकते हैं।
|
||||
- Quick audit workflow:
|
||||
```bash
|
||||
# Identify storage accounts with static website hosting enabled
|
||||
@@ -87,21 +87,21 @@ az storage blob list --container-name '$web' --account-name <acc-name> --auth-mo
|
||||
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
|
||||
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name <acc-name> --auth-mode login
|
||||
```
|
||||
### गुमनाम blob exposure का auditing
|
||||
### Anonymous blob exposure का Auditing
|
||||
|
||||
- **storage accounts को locate करें** जो data expose कर सकते हैं: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. अगर `allowBlobPublicAccess` `false` है, तो आप containers को public नहीं बना सकते।
|
||||
- **risky accounts का inspect करें** ताकि flag और अन्य weak settings confirm हों: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
|
||||
- **container-level exposure को enumerate करें** जहाँ flag enabled है:
|
||||
- **ऐसे storage accounts का पता लगाएँ** जो data expose कर सकते हैं: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. यदि `allowBlobPublicAccess` `false` है, तो आप containers को public नहीं बना सकते।
|
||||
- **Risky accounts का निरीक्षण करें** ताकि flag और अन्य कमजोर settings की पुष्टि की जा सके: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
|
||||
- **जहाँ flag enabled है वहाँ container-level exposure enumerate करें:**
|
||||
```bash
|
||||
az storage container list --account-name <acc> \
|
||||
--query '[].{name:name, access:properties.publicAccess}'
|
||||
```
|
||||
- `"Blob"`: anonymous reads allowed **only when blob name is known** (no listing).
|
||||
- `"Container"`: anonymous **list + read** of every blob.
|
||||
- `null`: private; authentication required.
|
||||
- **Prove access** without credentials:
|
||||
- If `publicAccess` is `Container`, anonymous listing works: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
|
||||
- For both `Blob` and `Container`, anonymous blob download works when the name is known:
|
||||
- `"Blob"`: anonymous reads केवल तभी allowed हैं **जब blob name ज्ञात हो** (no listing)।
|
||||
- `"Container"`: प्रत्येक blob का anonymous **list + read**।
|
||||
- `null`: private; authentication required।
|
||||
- **credentials के बिना access सिद्ध करें**:
|
||||
- यदि `publicAccess` `Container` है, तो anonymous listing काम करती है: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`।
|
||||
- `Blob` और `Container` दोनों के लिए, name ज्ञात होने पर anonymous blob download काम करता है:
|
||||
```bash
|
||||
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
|
||||
# or via raw HTTP
|
||||
@@ -109,31 +109,31 @@ curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
|
||||
```
|
||||
### Storage से Connect करें
|
||||
|
||||
अगर आपको कोई **storage** मिलता है जिससे आप connect कर सकते हैं, तो आप ऐसा करने के लिए [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) tool का उपयोग कर सकते हैं।
|
||||
यदि आपको कोई ऐसा **storage** मिलता है जिससे आप connect कर सकते हैं, तो आप ऐसा करने के लिए [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) tool का उपयोग कर सकते हैं।
|
||||
|
||||
## Storage तक Access <a href="#about-blob-storage" id="about-blob-storage"></a>
|
||||
|
||||
### RBAC
|
||||
|
||||
Storage accounts तक access के लिए **RBAC roles** के साथ Entra ID principals का उपयोग किया जा सकता है, और यही recommended तरीका है।
|
||||
Storage accounts तक access करने के लिए **RBAC roles** के साथ Entra ID principals का उपयोग करना संभव है और यही recommended तरीका है।
|
||||
|
||||
### Access Keys
|
||||
|
||||
Storage accounts में access keys होती हैं जिनका उपयोग करके उन्हें access किया जा सकता है। यह storage account तक f**ull access** प्रदान करता है।
|
||||
Storage accounts में access keys होती हैं जिनका उपयोग इसे access करने के लिए किया जा सकता है। यह **storage account तक पूरा access प्रदान करता है।**
|
||||
|
||||
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### **Shared Keys & Lite Shared Keys**
|
||||
|
||||
Signed URL के जरिए कुछ resources तक access authorize करने के लिए access keys के साथ signed [**Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) generate करना संभव है।
|
||||
Signed URL के माध्यम से कुछ resources तक access authorize करने के लिए access keys से signed [**Shared Keys generate करना**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) संभव है।
|
||||
|
||||
> [!NOTE]
|
||||
> ध्यान दें कि `CanonicalizedResource` part storage services resource (URI) को दर्शाता है। और अगर URL का कोई भी भाग encoded है, तो उसे `CanonicalizedResource` के अंदर भी encoded होना चाहिए।
|
||||
> ध्यान दें कि `CanonicalizedResource` भाग storage services resource (URI) को दर्शाता है। और यदि URL का कोई भी भाग encoded है, तो उसे `CanonicalizedResource` के अंदर भी encoded किया जाना चाहिए।
|
||||
|
||||
> [!NOTE]
|
||||
> यह requests को authenticate करने के लिए by default **`az` cli** द्वारा उपयोग किया जाता है। इसे Entra ID principal credentials का उपयोग करवाने के लिए `--auth-mode login` param बताएं।
|
||||
> Requests को authenticate करने के लिए **az cli** द्वारा इसका उपयोग default रूप से किया जाता है। Entra ID principal credentials का उपयोग कराने के लिए param `--auth-mode login` indicate करें।
|
||||
|
||||
- निम्न जानकारी को sign करके blob, queue और file services के लिए **shared key** generate करना संभव है:
|
||||
- **blob, queue और file services के लिए shared key generate करना** संभव है, जिसमें निम्नलिखित information sign की जाती है:
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-Encoding + "\n" +
|
||||
@@ -150,7 +150,7 @@ Range + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- निम्नलिखित जानकारी को sign करके **table services के लिए एक shared key** generate करना संभव है:
|
||||
- निम्नलिखित information को sign करने वाली **table services के लिए shared key** generate करना संभव है:
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-MD5 + "\n" +
|
||||
@@ -158,7 +158,7 @@ Content-Type + "\n" +
|
||||
Date + "\n" +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- blob, queue और file services के लिए **lite shared key** जनरेट करना संभव है, निम्न जानकारी पर sign करके:
|
||||
- निम्नलिखित जानकारी पर **blob, queue और file services** के लिए **lite shared key** जनरेट करना संभव है:
|
||||
```bash
|
||||
StringToSign = VERB + "\n" +
|
||||
Content-MD5 + "\n" +
|
||||
@@ -167,12 +167,12 @@ Date + "\n" +
|
||||
CanonicalizedHeaders +
|
||||
CanonicalizedResource;
|
||||
```
|
||||
- निम्नलिखित जानकारी पर sign करके **table services** के लिए एक **lite shared key** generate करना संभव है:
|
||||
- निम्नलिखित information पर signing करके **table services के लिए lite shared key** generate करना संभव है:
|
||||
```bash
|
||||
StringToSign = Date + "\n"
|
||||
CanonicalizedResource
|
||||
```
|
||||
फिर, key का उपयोग करने के लिए, इसे Authorization header में निम्न syntax के अनुसार किया जा सकता है:
|
||||
फिर, key का उपयोग करने के लिए, इसे निम्नलिखित syntax का पालन करते हुए Authorization header में किया जा सकता है:
|
||||
```bash
|
||||
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
|
||||
#e.g.
|
||||
@@ -186,68 +186,68 @@ Content-Length: 0
|
||||
```
|
||||
### **Shared Access Signature** (SAS)
|
||||
|
||||
Shared Access Signatures (SAS) हैं secure, time-limited URLs जो Azure Storage account में resource**s** तक access देने के लिए विशिष्ट permissions **grant** करते हैं, बिना account's access keys को expose किए। जबकि access keys सभी resources तक full administrative access देते हैं, SAS permissions (जैसे read या write) specify करके और expiration time define करके granular control allow करता है।
|
||||
Shared Access Signatures (SAS) सुरक्षित, समय-सीमित URLs हैं जो किसी Azure Storage account में **resource**s को access करने के लिए **specific permissions प्रदान करते हैं**, और account की access keys को expose नहीं करते। जबकि access keys सभी resources तक पूर्ण administrative access प्रदान करती हैं, SAS permissions (जैसे read या write) निर्दिष्ट करके और expiration time निर्धारित करके granular control देता है।
|
||||
|
||||
#### SAS Types
|
||||
|
||||
- **User delegation SAS**: यह एक **Entra ID principal** से बनाया जाता है जो SAS को sign करेगा और user से SAS तक permissions delegate करेगा। इसे केवल **blob and data lake storage** के साथ उपयोग किया जा सकता है ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas))। सभी generated user delegated SAS को **revoke** करना possible है।
|
||||
- भले ही "more" permissions के साथ delegation SAS generate करना possible हो, जो user के पास हैं उनसे ज़्यादा। हालांकि, अगर principal के पास वे permissions नहीं हैं, तो यह काम नहीं करेगा (no privesc)।
|
||||
- **Service SAS**: यह storage account **access keys** में से किसी एक का उपयोग करके signed होता है। इसका उपयोग एक single storage service में specific resources तक access grant करने के लिए किया जा सकता है। अगर key renewed हो जाए, तो SAS काम करना बंद कर देगा।
|
||||
- **Account SAS**: यह भी storage account **access keys** में से किसी एक के साथ signed होता है। यह storage account services (Blob, Queue, Table, File) के across resources तक access देता है और service-level operations शामिल कर सकता है।
|
||||
- **User delegation SAS**: इसे एक **Entra ID principal** से बनाया जाता है, जो SAS को sign करेगा और user से SAS को permissions delegate करेगा। इसका उपयोग केवल **blob and data lake storage** के साथ किया जा सकता है ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas))। सभी generated user delegated SAS को **revoke** करना संभव है।
|
||||
- भले ही user के पास मौजूद permissions से "अधिक" permissions वाला delegation SAS generate करना संभव हो, लेकिन यदि principal के पास वे permissions नहीं हैं, तो यह काम नहीं करेगा (no privesc)।
|
||||
- **Service SAS**: इसे storage account की **access keys** में से एक का उपयोग करके sign किया जाता है। इसका उपयोग किसी single storage service में specific resources तक access देने के लिए किया जा सकता है। यदि key को renew किया जाता है, तो SAS काम करना बंद कर देगा।
|
||||
- **Account SAS**: इसे भी storage account की **access keys** में से एक का उपयोग करके sign किया जाता है। यह storage account की सभी services (Blob, Queue, Table, File) में resources तक access देता है और इसमें service-level operations शामिल हो सकते हैं।
|
||||
|
||||
एक **access key** द्वारा signed SAS URL कुछ इस तरह दिखता है:
|
||||
एक **access key** द्वारा sign किया गया SAS URL इस प्रकार दिखता है:
|
||||
|
||||
- `https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
|
||||
|
||||
एक **user delegation** के रूप में signed SAS URL कुछ इस तरह दिखता है:
|
||||
**user delegation** के रूप में sign किया गया SAS URL इस प्रकार दिखता है:
|
||||
|
||||
- `https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D`
|
||||
|
||||
कुछ **http params** ध्यान दें:
|
||||
कुछ **http params** पर ध्यान दें:
|
||||
|
||||
- **`se`** param SAS की **expiration date** indicate करता है
|
||||
- **`sp`** param SAS की **permissions** indicate करता है
|
||||
- **`sig`** SAS को validate करने वाली **signature** है
|
||||
- **`se`** param SAS की **expiration date** बताता है
|
||||
- **`sp`** param SAS की **permissions** बताता है
|
||||
- **`sig`** SAS को validate करने वाला **signature** है
|
||||
|
||||
#### SAS permissions
|
||||
|
||||
SAS generate करते समय यह indicate करना ज़रूरी है कि वह कौन-सी permissions grant करेगा। जिस objet पर SAS generate किया जा रहा है, उसके अनुसार अलग-अलग permissions शामिल हो सकती हैं। उदाहरण के लिए:
|
||||
SAS generate करते समय यह बताना आवश्यक है कि उसे कौन-सी permissions प्रदान करनी चाहिए। जिस object के लिए SAS generate किया जा रहा है, उसके आधार पर अलग-अलग permissions शामिल की जा सकती हैं। उदाहरण के लिए:
|
||||
|
||||
- (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
|
||||
|
||||
## SFTP Support for Azure Blob Storage
|
||||
## Azure Blob Storage के लिए SFTP Support
|
||||
|
||||
Azure Blob Storage अब SSH File Transfer Protocol (SFTP) support करता है, जिससे custom solutions या third-party products की आवश्यकता बिना सीधे Blob Storage पर secure file transfer और management संभव हो जाता है।
|
||||
Azure Blob Storage अब SSH File Transfer Protocol (SFTP) को support करता है, जिससे custom solutions या third-party products की आवश्यकता के बिना सीधे Blob Storage में secure file transfer और management संभव है।
|
||||
|
||||
### Key Features
|
||||
|
||||
- Protocol Support: SFTP, hierarchical namespace (HNS) के साथ configured Blob Storage accounts पर काम करता है। यह blobs को directories और subdirectories में organize करता है ताकि navigation आसान हो।
|
||||
- Security: SFTP local user identities का उपयोग कर सकता है, लेकिन authorization के लिए Azure RBAC के साथ Microsoft Entra ID-based access भी support करता है। इसका मतलब है कि local SFTP users बनाने के बजाय सामान्य Blob Storage data-plane roles से access grant किया जा सकता है। Local users authenticate कर सकते हैं via:
|
||||
- Protocol Support: SFTP उन Blob Storage accounts के साथ काम करता है जिनमें hierarchical namespace (HNS) configured हो। यह blobs को directories और subdirectories में organize करता है, जिससे navigation आसान हो जाता है।
|
||||
- Security: SFTP local user identities का उपयोग कर सकता है, लेकिन authorization के लिए Microsoft Entra ID-based access और Azure RBAC को भी support करता है। इसका अर्थ है कि local SFTP users create करने के बजाय usual Blob Storage data-plane roles के माध्यम से access दिया जा सकता है। Local users authenticate कर सकते हैं:
|
||||
- Azure-generated passwords
|
||||
- Public-private SSH key pairs
|
||||
- Granular Permissions: Read, Write, Delete, और List जैसी permissions local users को up to 100 containers के लिए assign की जा सकती हैं।
|
||||
- Networking Considerations: SFTP connections port 22 के through बनाई जाती हैं। Azure SFTP traffic को secure करने के लिए firewalls, private endpoints, या virtual networks जैसी network configurations support करता है।
|
||||
- Granular Permissions: Read, Write, Delete और List जैसी permissions अधिकतम 100 containers तक local users को assign की जा सकती हैं।
|
||||
- Networking Considerations: SFTP connections port 22 के माध्यम से बनाए जाते हैं। Azure SFTP traffic को secure करने के लिए firewalls, private endpoints या virtual networks जैसे network configurations को support करता है।
|
||||
|
||||
### Setup Requirements
|
||||
|
||||
- Hierarchical Namespace: storage account बनाते समय HNS enabled होना चाहिए।
|
||||
- Supported Encryption: Microsoft Security Development Lifecycle (SDL)-approved cryptographic algorithms (e.g., rsa-sha2-256, ecdsa-sha2-nistp256) की आवश्यकता होती है।
|
||||
- Hierarchical Namespace: Storage account create करते समय HNS enabled होना चाहिए।
|
||||
- Supported Encryption: Microsoft Security Development Lifecycle (SDL)-approved cryptographic algorithms (जैसे rsa-sha2-256, ecdsa-sha2-nistp256) आवश्यक हैं।
|
||||
- SFTP Configuration:
|
||||
- storage account पर SFTP enable करें।
|
||||
- local-user access के लिए, उचित permissions के साथ local user identities create करें।
|
||||
- local users के लिए, home directories configure करें ताकि container के भीतर उनकी starting location define हो सके।
|
||||
- Storage account पर SFTP enable करें।
|
||||
- Local-user access के लिए appropriate permissions वाली local user identities create करें।
|
||||
- Local users के लिए home directories configure करें, ताकि container के भीतर उनका starting location निर्धारित हो सके।
|
||||
|
||||
### Permissions
|
||||
|
||||
| Permission | Symbol | Description |
|
||||
| ---------------------- | ------ | ------------------------------------ |
|
||||
| **Read** | `r` | Read file content. |
|
||||
| **Write** | `w` | Upload files and create directories. |
|
||||
| **List** | `l` | List contents of directories. |
|
||||
| **Delete** | `d` | Delete files or directories. |
|
||||
| **Create** | `c` | Create files or directories. |
|
||||
| **Modify Ownership** | `o` | Change the owning user or group. |
|
||||
| **Modify Permissions** | `p` | Change ACLs on files or directories. |
|
||||
| **Read** | `r` | File content पढ़ें। |
|
||||
| **Write** | `w` | Files upload करें और directories create करें। |
|
||||
| **List** | `l` | Directories के contents list करें। |
|
||||
| **Delete** | `d` | Files या directories delete करें। |
|
||||
| **Create** | `c` | Files या directories create करें। |
|
||||
| **Modify Ownership** | `o` | Owning user या group बदलें। |
|
||||
| **Modify Permissions** | `p` | Files या directories पर ACLs बदलें। |
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -466,7 +466,7 @@ az-file-shares.md
|
||||
../az-persistence/az-storage-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
## संदर्भ
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
|
||||
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
|
||||
|
||||
Reference in New Issue
Block a user