mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL, **Azure bulutunda SQL Server veritabanı motorunu** kullanan yönetilen, güvenli ve akıllı ürünler ailesidir. Bu, sunucularınızın fiziksel yönetimiyle ilgili endişelenmenize gerek olmadığı ve verilerinizi yönetmeye odaklanabileceğiniz anlamına gelir.
|
||||
Azure SQL, **Azure bulutundaki SQL Server veritabanı motorunu** kullanan yönetilen, güvenli ve akıllı ürünler ailesidir. Bu, sunucularınızın fiziksel yönetimiyle ilgili endişelenmenize gerek olmadığı ve verilerinizi yönetmeye odaklanabileceğiniz anlamına gelir.
|
||||
|
||||
Azure SQL, dört ana teklifi içerir:
|
||||
|
||||
@@ -20,11 +20,11 @@ Azure SQL, dört ana teklifi içerir:
|
||||
- Kamu uç noktası (belirli ağlara erişimi sınırlayabilir).
|
||||
- Özel uç noktalar.
|
||||
- Alan adlarına dayalı bağlantıları kısıtlamak da mümkündür.
|
||||
- Azure hizmetlerinin erişimine izin vermek de mümkündür (örneğin, portalda Sorgu düzenleyicisini kullanmak veya bir Azure VM'nin bağlanmasına izin vermek).
|
||||
- Azure hizmetlerinin erişimine izin vermek de mümkündür (örneğin, portalda Sorgu düzenleyicisini kullanmak veya bir Azure VM'nin bağlanmasına izin vermek için).
|
||||
|
||||
**Kimlik Doğrulama Yöntemleri:**
|
||||
|
||||
- Microsoft **Entra-only** kimlik doğrulaması: Hizmete erişimi olacak Entra ilkelerini belirtmeniz gerekir.
|
||||
- Microsoft **Entra-sadece** kimlik doğrulaması: Hizmete erişimi olacak Entra ilkelerini belirtmeniz gerekir.
|
||||
- **Hem SQL hem de Microsoft Entra** kimlik doğrulaması: Kullanıcı adı ve şifre ile birlikte geleneksel SQL kimlik doğrulaması.
|
||||
- **Sadece SQL** kimlik doğrulaması: Sadece veritabanı kullanıcıları aracılığıyla erişime izin verin.
|
||||
|
||||
@@ -32,19 +32,45 @@ Herhangi bir SQL kimlik doğrulamasına izin verilirse, bir yönetici kullanıc
|
||||
|
||||
**Şifreleme:**
|
||||
|
||||
- "Şeffaf veri şifrelemesi" olarak adlandırılır ve veritabanlarını, yedeklemeleri ve dinlenme halindeki günlükleri şifreler.
|
||||
- Her zamanki gibi, varsayılan olarak Azure yönetilen anahtarı kullanılır, ancak bir müşteri yönetilen şifreleme anahtarı (CMEK) de kullanılabilir.
|
||||
- “Şeffaf veri şifrelemesi” olarak adlandırılır ve veritabanlarını, yedeklemeleri ve dinlenme halindeki günlükleri şifreler.
|
||||
- Her zamanki gibi, varsayılan olarak bir Azure yönetilen anahtar kullanılır, ancak bir müşteri yönetilen şifreleme anahtarı (CMEK) de kullanılabilir.
|
||||
**Yönetilen Kimlikler:**
|
||||
|
||||
- Sistem ve kullanıcı yönetilen MI'ler atamak mümkündür.
|
||||
- Şifreleme anahtarına (CMEK kullanılıyorsa) ve veritabanlarından diğer hizmetlere erişmek için kullanılır.
|
||||
- Birden fazla UMI atanmışsa, kullanılacak varsayılan olanı belirtmek mümkündür.
|
||||
- Kiracılar arası erişim için bir federasyon istemci kimliği yapılandırmak mümkündür.
|
||||
- Veritabanından erişilebilecek Azure hizmetlerinin bazı örnekleri için [bu belge sayfasına](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql) bakın.
|
||||
- Birden fazla UMI atandığında, kullanılacak varsayılan olanı belirtmek mümkündür.
|
||||
- Çapraz kiracı erişimi için bir federasyonlu istemci kimliği yapılandırmak mümkündür.
|
||||
|
||||
Bir SQL veritabanından bir blob depolama içindeki bilgilere erişmek için bazı komutlar:
|
||||
```sql
|
||||
-- Create a credential for the managed identity
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
WITH IDENTITY = 'Managed Identity';
|
||||
GO
|
||||
|
||||
-- Create an external data source pointing to the blob storage to access
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
WITH (
|
||||
TYPE = BLOB_STORAGE,
|
||||
LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer',
|
||||
CREDENTIAL = ManagedIdentityCredential
|
||||
);
|
||||
GO
|
||||
|
||||
-- Read a file from ths storage and return it
|
||||
SELECT *
|
||||
FROM OPENROWSET(
|
||||
BULK 'message.txt',
|
||||
DATA_SOURCE = 'ManagedIdentity',
|
||||
SINGLE_CLOB
|
||||
) AS DataFile;
|
||||
GO
|
||||
```
|
||||
**Microsoft Defender:**
|
||||
|
||||
- "Olası veritabanı güvenlik açıklarını azaltmak ve anormal etkinlikleri tespit etmek" için faydalıdır.
|
||||
- Defender hakkında kendi dersinde konuşacağız (birçok diğer Azure hizmetinde etkinleştirilebilir).
|
||||
- Potansiyel veritabanı güvenlik açıklarını azaltmak ve anormal aktiviteleri tespit etmek için faydalıdır.
|
||||
- Defender'dan kendi dersimizde bahsedeceğiz (birçok diğer Azure hizmetinde etkinleştirilebilir).
|
||||
|
||||
**Yedeklemeler:**
|
||||
- Yedekleme sıklığı, saklama politikalarında yönetilmektedir.
|
||||
@@ -56,11 +82,11 @@ Herhangi bir SQL kimlik doğrulamasına izin verilirse, bir yönetici kullanıc
|
||||
|
||||
**Azure SQL Database**, ölçeklenebilir ve güvenli ilişkisel veritabanı çözümleri sunan **tamamen yönetilen bir veritabanı platformu olarak hizmettir (PaaS)**. En son SQL Server teknolojileri üzerine inşa edilmiştir ve altyapı yönetimi gereksinimini ortadan kaldırarak bulut tabanlı uygulamalar için popüler bir seçim haline gelmiştir.
|
||||
|
||||
Bir SQL veritabanı oluşturmak için, barındırılacağı SQL sunucusunu belirtmek gerekir.
|
||||
Bir SQL veritabanı oluşturmak için, barındırılacağı SQL sunucusunu belirtmek gerekmektedir.
|
||||
|
||||
### SQL Veritabanı Güvenlik Özellikleri
|
||||
|
||||
- **Her Zaman Güncel**: En son kararlı SQL Server sürümünde çalışır ve yeni özellikler ve yamalar otomatik olarak alır.
|
||||
- **Her Zaman Güncel**: En son kararlı SQL Server sürümünde çalışır ve yeni özellikler ile yamaları otomatik olarak alır.
|
||||
- **Devralınan SQL Server güvenlik özellikleri:**
|
||||
- Kimlik doğrulama (SQL ve/veya Entra ID)
|
||||
- Atanmış Yönetilen Kimlikler
|
||||
@@ -69,31 +95,31 @@ Bir SQL veritabanı oluşturmak için, barındırılacağı SQL sunucusunu belir
|
||||
- Yedeklemeler
|
||||
- …
|
||||
- **Veri yedekliliği:** Seçenekler yerel, bölge, Coğrafi veya Coğrafi-Bölge yedekli.
|
||||
- **Defter:** Verilerin bütünlüğünü kriptografik olarak doğrular, herhangi bir müdahalenin tespit edilmesini sağlar. Finansal, tıbbi ve hassas verileri yöneten herhangi bir kuruluş için faydalıdır.
|
||||
- **Defter:** Verilerin bütünlüğünü kriptografik olarak doğrular, herhangi bir müdahalenin tespit edilmesini sağlar. Finansal, tıbbi ve hassas verileri yöneten herhangi bir organizasyon için faydalıdır.
|
||||
|
||||
Bir SQL veritabanı, **esnek Havuz** parçası olabilir. Esnek havuzlar, birden fazla veritabanını yönetmek için yapılandırılabilir hesaplama (eDTU'lar) ve depolama kaynaklarını paylaşarak maliyet etkin bir çözüm sunar; fiyatlandırma yalnızca tahsis edilen kaynaklara dayanır, veritabanı sayısına değil.
|
||||
Bir SQL veritabanı, **esnek Havuzun** bir parçası olabilir. Esnek havuzlar, birden fazla veritabanını yönetmek için yapılandırılabilir hesaplama (eDTUs) ve depolama kaynaklarını paylaşarak maliyet etkin bir çözüm sunar; fiyatlandırma yalnızca tahsis edilen kaynaklara dayanır, veritabanı sayısına değil.
|
||||
|
||||
#### Azure SQL Sütun Seviyesi Güvenliği (Maskeleme) & Satır Seviyesi Güvenliği
|
||||
|
||||
**Azure SQL'nin dinamik** veri maskelemesi, **yetkisiz kullanıcılardan hassas bilgileri gizleyerek** korumaya yardımcı olan bir özelliktir. Gerçek verileri değiştirmek yerine, görüntülenen verileri dinamik olarak maskeleyerek, kredi kartı numaraları gibi hassas ayrıntıların gizlenmesini sağlar.
|
||||
**Azure SQL'in dinamik** veri maskelemesi, **hassas bilgileri yetkisiz kullanıcılardan gizleyerek korumaya yardımcı olan** bir özelliktir. Gerçek verileri değiştirmek yerine, görüntülenen verileri dinamik olarak maskeleyerek, kredi kartı numaraları gibi hassas ayrıntıların gizli kalmasını sağlar.
|
||||
|
||||
**Dinamik Veri Maskeleme**, maskelemeyen (bu kullanıcılar belirtilmelidir) ve yöneticiler dışındaki tüm kullanıcıları etkiler. Dinamik veri maskelemeden muaf olan SQL kullanıcılarını belirten yapılandırma seçeneğine sahiptir; **yöneticiler her zaman hariçtir**.
|
||||
**Dinamik Veri Maskelemesi**, maskelemeyen (bu kullanıcılar belirtilmelidir) ve yöneticiler dışındaki tüm kullanıcıları etkiler. Dinamik veri maskelemesinden muaf olan SQL kullanıcılarını belirten bir yapılandırma seçeneği vardır; **yöneticiler her zaman hariçtir**.
|
||||
|
||||
**Azure SQL Satır Seviyesi Güvenliği (RLS)**, bir kullanıcının hangi satırları görüntüleyebileceğini veya değiştirebileceğini **kontrol eden** bir özelliktir; her kullanıcının yalnızca kendileriyle ilgili verileri görmesini sağlar. Filtre veya engelleme yargıları ile güvenlik politikaları oluşturarak, kuruluşlar veritabanı düzeyinde ince ayar erişimi uygulayabilir.
|
||||
**Azure SQL Satır Seviyesi Güvenliği (RLS)**, bir kullanıcının hangi satırları görüntüleyebileceğini veya değiştirebileceğini **kontrol eden** bir özelliktir; her kullanıcının yalnızca kendileriyle ilgili verileri görmesini sağlar. Filtre veya engelleme yargıları ile güvenlik politikaları oluşturarak, organizasyonlar veritabanı düzeyinde ince ayar erişim uygulayabilirler.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
### Azure SQL Yönetilen Örnek
|
||||
|
||||
**Azure SQL Managed Instances**, daha büyük ölçekli, tüm SQL Server örneği kapsamındaki dağıtımlar içindir. En son SQL Server yerinde (Enterprise Edition) Veritabanı Motoru ile neredeyse %100 uyumluluk sağlar; bu, yaygın güvenlik endişelerini ele alan yerel bir sanal ağ (VNet) uygulaması sunar ve yerinde SQL Server müşterileri için uygun bir iş modeli sağlar.
|
||||
**Azure SQL Yönetilen Örnekler**, daha büyük ölçekli, tüm SQL Server örneği kapsamındaki dağıtımlar içindir. En son SQL Server yerel (Enterprise Edition) Veritabanı Motoru ile neredeyse %100 uyumluluk sağlar; bu, yaygın güvenlik endişelerini ele alan yerel sanal ağ (VNet) uygulaması sunar ve yerel SQL Server müşterileri için uygun bir iş modeli sağlar.
|
||||
|
||||
### Azure SQL Sanal Makineleri
|
||||
|
||||
**Azure SQL Sanal Makineleri**, **işletim sistemini** ve SQL Server örneğini kontrol etmenizi sağlar; çünkü bir VM, SQL sunucusunu çalıştıran VM hizmetinde oluşturulacaktır.
|
||||
**Azure SQL Sanal Makineleri**, **işletim sistemini** ve SQL Server örneğini kontrol etme imkanı sunar; çünkü bir VM, SQL sunucusunu çalıştıran VM hizmetinde oluşturulacaktır.
|
||||
|
||||
Bir SQL Sanal Makinesi oluşturulduğunda, SQL sunucusunu barındıracak olan VM'nin **tüm ayarlarını seçmek mümkündür** (VM dersinde gösterildiği gibi).
|
||||
- Bu, VM'nin bazı VNet'lere erişeceği, **Yönetilen Kimliklerin eklenmiş olabileceği**, dosya paylaşımlarının bağlanmış olabileceği anlamına gelir... bu da SQL'den VM'ye **geçişi** oldukça ilginç hale getirir.
|
||||
- Ayrıca, SQL'nin belirli bir anahtar kasasına erişmesine **izin vermek için** bir uygulama kimliği ve sırrı yapılandırmak mümkündür; bu, hassas bilgileri içerebilir.
|
||||
Bir SQL Sanal Makinesi oluşturulduğunda, SQL sunucusunu barındıracak VM'nin **tüm ayarlarını seçmek mümkündür** (VM dersinde gösterildiği gibi).
|
||||
- Bu, VM'nin bazı VNet'lere erişeceği, **Yönetilen Kimliklerin** ona eklenmiş olabileceği, dosya paylaşımlarının bağlanabileceği anlamına gelir... bu da SQL'den VM'ye geçişi oldukça ilginç hale getirir.
|
||||
- Ayrıca, SQL'in belirli bir anahtar kasasına erişimini **sağlamak için bir uygulama kimliği ve sırrı** yapılandırmak mümkündür; bu, hassas bilgileri içerebilir.
|
||||
|
||||
Ayrıca, **otomatik SQL güncellemeleri**, **otomatik yedeklemeler**, **Entra ID kimlik doğrulaması** ve diğer SQL hizmetlerinin çoğu gibi şeyleri yapılandırmak da mümkündür.
|
||||
Ayrıca, **otomatik SQL güncellemeleri**, **otomatik yedeklemeler**, **Entra ID kimlik doğrulaması** ve diğer SQL hizmetlerinin çoğu özelliği gibi şeyleri yapılandırmak da mümkündür.
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -278,7 +304,7 @@ $Connection.Close()
|
||||
|
||||
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
|
||||
```
|
||||
Veritabanına erişmek için sqlcmd de kullanabilirsiniz. Sunucunun genel bağlantılara izin verip vermediğini bilmek önemlidir `az sql server show --name <server-name> --resource-group <resource-group>`, ayrıca güvenlik duvarı kuralının IP'mizin erişmesine izin verip vermediğini de kontrol etmelisiniz:
|
||||
Veritabanına erişmek için sqlcmd de kullanabilirsiniz. Sunucunun genel bağlantılara izin verip vermediğini bilmek önemlidir `az sql server show --name <server-name> --resource-group <resource-group>`, ayrıca güvenlik duvarı kuralının IP'mizin erişimine izin verip vermediğini de kontrol etmelisiniz:
|
||||
```bash
|
||||
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
|
||||
```
|
||||
@@ -295,7 +321,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-privilege-escalation/az-sql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Sonrası İstismar
|
||||
## Sonrası Sömürü
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
@@ -304,7 +330,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
### Süreklilik
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-sql-persistance.md
|
||||
../az-persistence/az-sql-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user