# GCP - Cloud SQL Enum
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
Google Cloud SQL एक प्रबंधित सेवा है जो **रिलेशनल डेटाबेस** जैसे MySQL, PostgreSQL, और SQL Server को Google Cloud Platform पर सेटअप, बनाए रखने और प्रबंधित करने को **सरल बनाती है**, जिससे हार्डवेयर प्रावधान, डेटाबेस सेटअप, पैचिंग, और बैकअप जैसे कार्यों को संभालने की आवश्यकता समाप्त हो जाती है।
Google Cloud SQL की प्रमुख विशेषताएँ हैं:
1. **पूर्ण रूप से प्रबंधित**: Google Cloud SQL एक पूर्ण रूप से प्रबंधित सेवा है, जिसका अर्थ है कि Google डेटाबेस रखरखाव कार्यों जैसे पैचिंग, अपडेट, बैकअप, और कॉन्फ़िगरेशन को संभालता है।
2. **स्केलेबिलिटी**: यह आपके डेटाबेस के स्टोरेज क्षमता और कंप्यूट संसाधनों को स्केल करने की क्षमता प्रदान करता है, अक्सर बिना डाउनटाइम के।
3. **उच्च उपलब्धता**: उच्च उपलब्धता कॉन्फ़िगरेशन प्रदान करता है, यह सुनिश्चित करते हुए कि आपकी डेटाबेस सेवाएँ विश्वसनीय हैं और क्षेत्र या उदाहरण की विफलताओं को सहन कर सकती हैं।
4. **सुरक्षा**: डेटा एन्क्रिप्शन, पहचान और पहुंच प्रबंधन (IAM) नियंत्रण, और निजी आईपी और VPC का उपयोग करके नेटवर्क अलगाव जैसी मजबूत सुरक्षा सुविधाएँ प्रदान करता है।
5. **बैकअप और पुनर्प्राप्ति**: स्वचालित बैकअप और समय-निर्धारित पुनर्प्राप्ति का समर्थन करता है, जिससे आप अपने डेटा की सुरक्षा और पुनर्स्थापना कर सकते हैं।
6. **एकीकरण**: अन्य Google Cloud सेवाओं के साथ निर्बाध रूप से एकीकृत होता है, अनुप्रयोगों को बनाने, तैनात करने और प्रबंधित करने के लिए एक व्यापक समाधान प्रदान करता है।
7. **प्रदर्शन**: डेटाबेस प्रदर्शन की निगरानी, समस्या निवारण, और सुधार के लिए प्रदर्शन मैट्रिक्स और डायग्नोस्टिक्स प्रदान करता है।
### Password
वेब कंसोल में Cloud SQL उपयोगकर्ता को डेटाबेस का **पासवर्ड सेट** करने की अनुमति देता है, वहाँ एक जनरेट फीचर भी है, लेकिन सबसे महत्वपूर्ण बात यह है कि **MySQL** को **खाली पासवर्ड छोड़ने** की अनुमति है और सभी को पासवर्ड के रूप में केवल "a" वर्ण सेट करने की अनुमति है:
यह एक पासवर्ड नीति को कॉन्फ़िगर करना भी संभव है जिसमें **लंबाई**, **जटिलता**, **पुन: उपयोग को अक्षम करना** और **पासवर्ड में उपयोगकर्ता नाम को अक्षम करना** शामिल है। सभी डिफ़ॉल्ट रूप से अक्षम होते हैं।
**SQL Server** को **Active Directory Authentication** के साथ कॉन्फ़िगर किया जा सकता है।
### Zone Availability
डेटाबेस **1 क्षेत्र में या कई में उपलब्ध** हो सकता है, निश्चित रूप से, महत्वपूर्ण डेटाबेस को कई क्षेत्रों में रखना अनुशंसित है।
### Encryption
डिफ़ॉल्ट रूप से एक Google-प्रबंधित एन्क्रिप्शन कुंजी का उपयोग किया जाता है, लेकिन **ग्राहक-प्रबंधित एन्क्रिप्शन कुंजी (CMEK)** का चयन करना भी **संभव है**।
### Connections
- **Private IP**: VPC नेटवर्क को इंगित करें और डेटाबेस को नेटवर्क के अंदर एक निजी आईपी मिलेगा
- **Public IP**: डेटाबेस को एक सार्वजनिक आईपी मिलेगा, लेकिन डिफ़ॉल्ट रूप से कोई भी कनेक्ट नहीं कर सकेगा
- **Authorized networks**: सार्वजनिक **IP रेंज को इंगित करें जो डेटाबेस से कनेक्ट करने की अनुमति होनी चाहिए**
- **Private Path**: यदि DB किसी VPC में कनेक्ट है, तो इस विकल्प को सक्षम करना संभव है और **अन्य GCP सेवाओं जैसे BigQuery को इसके माध्यम से पहुंच प्रदान करना**
### Data Protection
- **Daily backups**: स्वचालित दैनिक बैकअप करें और आप कितने बैकअप बनाए रखना चाहते हैं, यह इंगित करें।
- **Point-in-time recovery**: आपको एक विशिष्ट समय बिंदु से डेटा पुनर्प्राप्त करने की अनुमति देता है, एक सेकंड के अंश तक।
- **Deletion Protection**: यदि सक्षम किया गया, तो DB को तब तक हटाया नहीं जा सकेगा जब तक कि यह सुविधा अक्षम न हो जाए।
### Enumeration
```bash
# Get SQL instances
gcloud sql instances list
gcloud sql instances describe # get IPs, CACert, settings
# Get database names inside an instance (like information_schema, sys...)
gcloud sql databases list --instance
gcloud sql databases describe --instance
# Get usernames inside the db instance
gcloud sql users list --instance
# Backups
gcloud sql backups list --instance
gcloud sql backups describe --instance
```
### अनधिकृत Enum
{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-cloud-sql-unauthenticated-enum.md
{{#endref}}
### पोस्ट एक्सप्लोइटेशन
{{#ref}}
../gcp-post-exploitation/gcp-cloud-sql-post-exploitation.md
{{#endref}}
### स्थिरता
{{#ref}}
../gcp-persistence/gcp-cloud-sql-persistence.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}