Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md']

This commit is contained in:
Translator
2025-02-26 01:02:08 +00:00
parent 51d2ecd621
commit c01db45e1f

View File

@@ -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}}