Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-20 00:39:45 +00:00
parent c1903c4113
commit 6aef397a41
9 changed files with 249 additions and 148 deletions

File diff suppressed because one or more lines are too long

View File

@@ -31,10 +31,20 @@ az mysql flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
Ayrıca, özel bir uç noktadan erişmek istiyorsanız, genel erişimin etkinleştirilmesi gereklidir, bunu etkinleştirmek için:
Ayrıca, özel bir uç noktadan erişmek istemiyorsanız, genel erişimin etkinleştirilmesi gereklidir, bunu etkinleştirmek için:
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Bu izinlerle bir MySQL sunucusunu bir yedekten geri yükleyebilirsiniz:
```bash
az mysql flexible-server restore \
--resource-group <resource_group_name> \
--name <restore_server_name> \
--source-server <server_name> \
--yes
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
Bu izinle, bir MySQL Flexible Server için Azure Active Directory (AD) yöneticilerini yapılandırabilirsiniz. Bu, kendinizi veya başka bir hesabı AD yöneticisi olarak ayarlayarak, MySQL sunucusu üzerinde tam yönetim kontrolü sağlamak için istismar edilebilir. Flexible-server'ın kullanılmak üzere atanmış bir yönetilen kimliği olması önemlidir.

View File

@@ -30,10 +30,56 @@ az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
Ayrıca, izinlerle atanmış kimliği etkinleştirebilir ve sunucuya bağlı yönetilen kimlikle işlem yapabilirsiniz. Azure PostgreSQL esnek sunucusunun desteklediği tüm uzantıları burada bulabilirsiniz [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Bu uzantıları kullanabilmek için bazı sunucu parametrelerinin (azure.extensions) değiştirilmesi gerekir. Örneğin, Azure Storage'a erişebilen bir yönetilen kimlikle burada:
Öncelikle parametreleri değiştiriyoruz ve atanmış kimliğin etkin olduğundan emin oluyoruz:
```bash
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
```
```sql
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
```
Ayrıca, özel bir uç noktadan erişmek istemiyorsanız, genel erişimin etkinleştirilmesi gereklidir, bunu etkinleştirmek için:
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Bu izinlerle, bir sunucuyu yedekten geri yükleyebilirsiniz:
```bash
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`

View File

@@ -12,7 +12,7 @@ SQL Database hakkında daha fazla bilgi için kontrol edin:
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
Bu izinlerle, bir kullanıcı Azure SQL sunucularını güncelleyerek veya oluşturarak ayrıcalık yükseltmesi yapabilir ve kritik yapılandırmaları, yönetici kimlik bilgileri de dahil olmak üzere, değiştirebilir. Bu izin, kullanıcının SQL sunucu yönetici şifresi de dahil olmak üzere sunucu özelliklerini güncellemesine olanak tanır ve bu da yetkisiz erişim veya sunucu üzerinde kontrol sağlamaktadır. Ayrıca yeni sunucular oluşturabilirler, bu da kötü niyetli amaçlar için gölge altyapı oluşturma potansiyeli taşır. "Microsoft Entra Authentication Only" devre dışı bırakıldığında, SQL tabanlı kimlik doğrulamasını kullanarak sınırsız erişim elde edebilirler, bu durum özellikle kritik hale gelir.
Bu izinlerle, bir kullanıcı Azure SQL sunucularını güncelleyerek veya oluşturarak ayrıcalık yükseltmesi yapabilir ve kritik yapılandırmaları, yönetici kimlik bilgileri de dahil olmak üzere, değiştirebilir. Bu izin, kullanıcının sunucu özelliklerini güncellemesine, SQL sunucu yönetici şifresini de içerecek şekilde, yetkisiz erişim veya sunucu üzerinde kontrol sağlamasına olanak tanır. Ayrıca yeni sunucular oluşturabilirler, bu da kötü niyetli amaçlar için gölge altyapı oluşturma potansiyeli taşır. Bu, "Microsoft Entra Authentication Only" devre dışı bırakıldığında özellikle kritik hale gelir, çünkü SQL tabanlı kimlik doğrulamasını kullanarak sınırsız erişim elde edebilirler.
```bash
# Change the server password
az sql server update \
@@ -35,7 +35,7 @@ az sql server update \
--resource-group <resource-group> \
--enable-public-network true
```
Ayrıca, izinlerle atanmış kimliği etkinleştirebilir ve sunucuya bağlı yönetilen kimlikle işlem yapabilirsiniz. Örneğin, burada Azure Storage'a erişebilen bir yönetilen kimlikle:
Ayrıca, izinlerle atanan kimliği etkinleştirebilir ve sunucuya bağlı yönetilen kimlikle işlem yapabilirsiniz. Örneğin, burada Azure Storage'a erişebilen bir yönetilen kimlikle:
```bash
az sql server update \
--name <server-name> \
@@ -44,6 +44,11 @@ az sql server update \
```
```sql
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
@@ -62,7 +67,7 @@ GO
```
### `Microsoft.Sql/servers/firewallRules/write`
Bir saldırgan, Azure SQL sunucularındaki güvenlik duvarı kurallarını manipüle ederek yetkisiz erişime izin verebilir. Bu, sunucuyu belirli IP adreslerine veya tüm IP aralıklarına, kamu IP'leri de dahil olmak üzere, açmak için kullanılabilir ve kötü niyetli aktörler için erişim sağlanabilir. Bu post-exploitation aktivitesi, mevcut ağ güvenlik kontrollerini aşmak, kalıcılık sağlamak veya hassas kaynaklarıığa çıkararak ortam içinde yan hareketi kolaylaştırmak için kullanılabilir.
Bir saldırgan, Azure SQL sunucularındaki güvenlik duvarı kurallarını manipüle ederek yetkisiz erişime izin verebilir. Bu, sunucuyu belirli IP adreslerine veya tüm IP aralıklarına, kamu IP'leri de dahil olmak üzere, açmak için istismar edilebilir ve kötü niyetli aktörler için erişim sağlanabilir. Bu post-exploitation aktivitesi, mevcut ağ güvenlik kontrollerini aşmak, kalıcılık sağlamak veya hassas kaynaklarıığa çıkararak ortam içinde yan hareketi kolaylaştırmak için kullanılabilir.
```bash
# Create Firewall Rule
az sql server firewall-rule create \
@@ -81,11 +86,11 @@ az sql server firewall-rule update \
--end-ip-address <new-end-ip-address>
```
Ayrıca, `Microsoft.Sql/servers/outboundFirewallRules/delete` izni, bir Güvenlik Duvarı Kuralını silmenizi sağlar.
NOT: Kamu erişiminin etkinleştirilmesi gerekmektedir.
NOT: Kamu erişiminin etkin olması gerekmektedir.
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
Bu izinle, bir Azure SQL Sunucusunda IPv6 güvenlik duvarı kuralları oluşturabilir, değiştirebilir veya silebilirsiniz. Bu, bir saldırganın veya yetkili bir kullanıcının mevcut ağ güvenlik yapılandırmalarını atlamasına ve sunucuya yetkisiz erişim elde etmesine olanak tanıyabilir. Herhangi bir IPv6 adresinden trafiğe izin veren bir kural ekleyerek, saldırgan sunucuyu dış erişime açabilir.
Bu izinle, bir Azure SQL Sunucusunda IPv6 güvenlik duvarı kuralları oluşturabilir, değiştirebilir veya silebilirsiniz. Bu, bir saldırganın veya yetkili bir kullanıcının mevcut ağ güvenlik yapılandırmalarını atlamasına ve sunucuya yetkisiz erişim sağlamasına olanak tanıyabilir. Herhangi bir IPv6 adresinden gelen trafiğe izin veren bir kural ekleyerek, saldırgan sunucuyu dış erişime açabilir.
```bash
az sql server firewall-rule create \
--server <server_name> \
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
```
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
SQL veritabanlarınızdaki veri maskeleme politikalarını değiştirin (veya devre dışı bırakın).
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
```
### Row Level Security'yi Kaldır
Eğer admin olarak giriş yapıyorsanız, adminin ve diğer kullanıcıların politikalarını kaldırabilirsiniz.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,9 +8,11 @@
Azure Cosmos DB, belgeler, ilişkisel, anahtar-değer, grafik ve sütun ailesi veri modellerini kullanarak gerçek dünya verilerini modellemek için birden fazla veritabanı API'si sağlar; bu API'ler NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin ve Table'dır.
CosmosDB'nin önemli bir yönü Azure Cosmos Hesabı'dır. **Azure Cosmos Hesabı**, veritabanlarına giriş noktası olarak işlev görür. Hesap, küresel dağıtım, tutarlılık seviyeleri ve kullanılacak belirli API gibi ana ayarları belirler; örneğin NoSQL. Hesap aracılığıyla, verilerin düşük gecikme süresi ile birden fazla bölgede erişilebilir olmasını sağlamak için küresel çoğaltmayı yapılandırabilirsiniz. Ayrıca, performans ile veri doğruluğu arasında denge sağlayan bir tutarlılık seviyesi seçebilirsiniz; bu seçenekler Güçlü'den Nihai tutarlılığa kadar değişir.
CosmosDB'nin önemli bir yönü Azure Cosmos Hesabı'dır. **Azure Cosmos Hesabı**, veritabanlarına giriş noktası olarak işlev görür. Hesap, küresel dağıtım, tutarlılık seviyeleri ve kullanılacak belirli API gibi ana ayarları belirler; örneğin NoSQL. Hesap aracılığıyla, verilerin düşük gecikme süresi ile birden fazla bölgede erişilebilir olmasını sağlamak için küresel çoğaltmayı yapılandırabilirsiniz. Ayrıca, performans ve veri doğruluğu arasında denge sağlayan bir tutarlılık seviyesi seçebilirsiniz; bu seçenekler Güçlü'den Nihai tutarlılığa kadar değişir.
### NoSQL (sql)
Azure Cosmos DB, diğer hizmetlere bağlanırken güvenli, token tabanlı kimlik doğrulama sağlamak için otomatik olarak oluşturulan ve kaynağın yaşam döngüsüne bağlı olan **kullanıcı atamalı kimlikler** ve **sistem atamalı yönetilen kimlikler** destekler—şartıyla bu hizmetlerin uygun rol atamalarına sahip olması gerekir. Ancak, Cosmos DB'nin Azure Blob Storage gibi harici veri kaynaklarını doğrudan sorgulamak için yerleşik bir mekanizması yoktur. SQL Server'ın harici tablo özelliklerinin aksine, Cosmos DB'nin yerel sorgulama yetenekleriyle sorgulanabilmesi için verilerin, Azure Data Factory, Veri Göç Aracı veya özel betikler gibi harici araçlar kullanılarak konteynerlerine alınması gerekir.
### NoSQL
Azure Cosmos DB NoSQL API'si, veri formatı olarak JSON kullanan belge tabanlı bir API'dir. JSON nesnelerini sorgulamak için SQL benzeri bir sorgu sözdizimi sağlar, bu da yapılandırılmış ve yarı yapılandırılmış verilerle çalışmak için uygun hale getirir. Servisin uç noktası:
```bash
https://<Account-Name>.documents.azure.com:443/
@@ -19,7 +21,13 @@ https://<Account-Name>.documents.azure.com:443/
Bir hesap içinde, konteynerlerin mantıksal grupları olarak hizmet eden bir veya daha fazla veritabanı oluşturabilirsiniz. Bir veritabanı, kaynak yönetimi ve kullanıcı izinleri için bir sınır görevi görür. Veritabanları, konteynerleri arasında tahsis edilmiş verimliliği paylaşabilir veya bireysel konteynerlere özel verimlilik tahsis edebilir.
#### Konteynerler
Veri depolamanın temel birimi konteynerdir; JSON belgelerini tutar ve verimli sorgulama için otomatik olarak indekslenir. Konteynerler elastik olarak ölçeklenebilir ve kullanıcı tanımlı bir bölüm anahtarı tarafından belirlenen bölümlere dağıtılır. Bölüm anahtarı, optimal performans ve dengeli veri dağılımını sağlamak için kritik öneme sahiptir. Örneğin, bir konteyner müşteri verilerini depolayabilir ve "customerId" bölüm anahtarı olarak kullanılabilir.
Veri depolamanın temel birimi konteynerdir; JSON belgelerini tutar ve verimli sorgulama için otomatik olarak dizinlenir. Konteynerler elastik olarak ölçeklenebilir ve kullanıcı tanımlı bir bölüm anahtarı tarafından belirlenen bölümlere dağıtılır. Bölüm anahtarı, optimal performans ve eşit veri dağılımını sağlamak için kritik öneme sahiptir. Örneğin, bir konteyner müşteri verilerini depolayabilir ve "customerId" bölüm anahtarı olarak kullanılabilir.
#### Ana Özellikler
**Küresel Dağıtım**: Bölge çapında çoğaltma için Coğrafi Yedekliliği etkinleştirin veya devre dışı bırakın ve iyileştirilmiş kullanılabilirlik için Çoklu Bölge Yazmaları.
**Ağ ve Güvenlik**: bağlantı için genel (tüm/seçili ağlar) veya özel uç noktalar arasında. TLS 1.2 şifrelemesi ile güvenli bağlantılar. Kaynaklara kontrollü erişim için CORS (Cross-Origin Resource Sharing) destekler.
**Yedekleme ve Kurtarma**: Yapılandırılabilir aralıklar ve saklama süreleri ile Periyodik, Sürekli (7 gün) veya Sürekli (30 gün) yedekleme politikaları.
**Veri Şifreleme**: Şifreleme için varsayılan hizmet yönetimli anahtarlar veya müşteri yönetimli anahtarlar (CMK) (CMK seçimi geri alınamaz).
#### Sayım
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
## List the NoSQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
## List all NoSQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
## List all NoSQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
## List the NoSQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
@@ -149,7 +157,7 @@ print("All items in the container:")
for item in all_items:
print(item)
```
Bağlantı kurmanın bir diğer yolu **DefaultAzureCredential()** kullanmaktır. Sadece izinlere sahip olan hesapla giriş yapmanız (az login) ve bunu çalıştırmanız gerekir. Bu durumda gerekli izinleri veren bir rol ataması yapılmalıdır (daha fazla bilgi için bakınız).
Başka bir bağlantı kurma yöntemi **DefaultAzureCredential()** kullanmaktır. Sadece gerekli izinlere sahip hesapla giriş yapmanız (az login) ve bunu çalıştırmanız gerekir. Bu durumda, gerekli izinleri veren bir rol ataması yapılmalıdır (daha fazla bilgi için bakınız).
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
@@ -175,7 +183,7 @@ container.create_item(item)
print("Document inserted.")
```
### MongoDB
MongoDB NoSQL API, verilerini JSON benzeri BSON (Binary JSON) formatında kullanan belge tabanlı bir API'dir. Yapılandırılmış, yarı yapılandırılmış ve yapılandırılmamış verilerle çalışmak için uygun olan, toplama yeteneklerine sahip bir sorgu dili sağlar. Servisin uç noktası genellikle bu formatı takip eder:
MongoDB NoSQL API, verilerini JSON benzeri BSON (Binary JSON) formatında kullanan belge tabanlı bir API'dir. Yapılandırılmış, yarı yapılandırılmış ve yapılandırılmamış verilerle çalışmak için uygun hale getiren, toplama yeteneklerine sahip bir sorgu dili sağlar. Servisin uç noktası genellikle bu formatı takip eder:
```bash
mongodb://<hostname>:<port>/<database>
```
@@ -185,6 +193,17 @@ MongoDB'de, bir örnek içinde bir veya daha fazla veritabanı oluşturabilirsin
#### Koleksiyonlar
MongoDB'deki veri depolamanın temel birimi koleksiyondur; belgeleri tutar ve verimli sorgulama ve esnek şema tasarımı için tasarlanmıştır. Koleksiyonlar elastik olarak ölçeklenebilir ve dağıtılmış bir yapı içinde birden fazla düğümde yüksek verimlilikte işlemleri destekleyebilir.
#### İstek birimi (RU) türünün Ana Özellikleri
**Küresel Dağıtım**: Bölge çapında çoğaltma için Coğrafi Yedekliliği etkinleştirin veya devre dışı bırakın ve iyileştirilmiş kullanılabilirlik için Çoklu Bölge Yazmaları etkinleştirin.
**Ağ ve Güvenlik**: Bağlantı için genel (tüm/seçili ağlar) veya özel uç noktalar arasında. TLS 1.2 şifrelemesi ile güvenli bağlantılar. Kaynaklara kontrollü erişim için CORS (Cross-Origin Resource Sharing) destekler.
**Yedekleme ve Kurtarma**: Yapılandırılabilir aralıklar ve saklama süreleri ile Periyodik, Sürekli (7 gün, ücretsiz) veya Sürekli (30 gün, ücretli) yedekleme politikalarından.
**Veri Şifreleme**: Şifreleme için varsayılan hizmet yönetimli anahtarlar veya müşteri yönetimli anahtarlar (CMK) (CMK seçimi geri alınamaz).
#### vCore küme türünün Ana Özellikleri
**Küresel Dağıtım**: Yüksek kullanılabilirlik ve devreye alma desteği için başka bir Azure bölgesinde bir okuma kopyası etkinleştirin. Kopya adını, bölgesini ve her parça için depolamayı yapılandırın.
**Ağ ve Güvenlik**: Atanmış genel IP'ler ile genel erişimi ve özel erişimi destekler. Güvenlik duvarı kuralları kullanarak bağlantıları kısıtlayın—varsayılan olarak, genel IP'lere izin verilmez.
**Şifreli Bağlantılar**: Güvenli veri iletimi için TLS şifrelemesini zorunlu kılar.
#### Sayım
{{#tabs }}
@@ -309,9 +328,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
## Yapılacaklar
* DB'nin geri kalanı, tablolar, cassandra, gremlin...
* İstismar sonrası "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" ve rol tanımlarına bir göz atın çünkü burada bir yetki yükseltme olabilir
* Geri yüklemelere bir göz atın
* "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" ve rol tanımlamalarına bakın çünkü burada bir yetki yükseltme olabilir
* Geri yüklemelere bakın
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,10 +8,15 @@ Azure Logic Apps, Microsoft Azure tarafından sağlanan bulut tabanlı bir hizme
Logic Apps, **önceden oluşturulmuş geniş bir bağlantı yelpazesi** ile iş akışları oluşturmak için görsel bir tasarımcı sunar; bu da Office 365, Dynamics CRM, Salesforce ve daha birçok hizmetle kolayca bağlantı kurmayı ve etkileşimde bulunmayı sağlar. Ayrıca, özel ihtiyaçlarınız için özel bağlantılar da oluşturabilirsiniz.
Bir Logic App oluştururken, iş akışının durumu, çalışma geçmişi ve nesneleri depolayan bir dış depolama hesabı oluşturmanız veya bağlamanız gerekir. Bu depolama, izleme için tanılama ayarları ile yapılandırılabilir ve ağ erişim kısıtlamaları ile güvence altına alınabilir veya gelen ve giden trafiği kontrol etmek için sanal bir ağa entegre edilebilir.
### Yönetilen Kimlikler
Logic Apps, yaşam döngüsüne bağlı **sistem atanan yönetilen kimlik** ile birlikte gelir. Etkinleştirildiğinde, diğer Azure hizmetlerine güvenli bir şekilde erişim sağlamak için gerekli izinleri vermek amacıyla Azure RBAC ile kullanılabilecek benzersiz bir Nesne (prensip) Kimliği alır. Bu, kimliğin Microsoft Entra ID aracılığıyla kimlik doğrulaması yapıldığı için kodda kimlik bilgilerini depolama ihtiyacını ortadan kaldırır. Ayrıca, birden fazla kaynak arasında paylaşılabilen **kullanıcı atanan yönetilen kimlikler** de kullanabilirsiniz. Bu kimlikler, iş akışlarının ve Logic Apps'in dış sistemlerle güvenli bir şekilde etkileşimde bulunmasını sağlar ve gerekli erişim kontrollerinin ve izinlerin Azure'un güvenlik çerçevesi aracılığıyla merkezi olarak yönetilmesini garanti eder.
### Örnekler
- **Veri Boru Hatlarını Otomatikleştirme**: Logic Apps, Azure Data Factory ile birlikte **veri transferi ve dönüşüm süreçlerini** otomatikleştirebilir. Bu, Azure SQL Database ve Azure Blob Storage gibi çeşitli veri depoları arasında veri taşıyan ve dönüştüren ölçeklenebilir ve güvenilir veri boru hatları oluşturmak için faydalıdır; bu da analitik ve iş zekası operasyonlarına yardımcı olur.
- **Azure Functions ile Entegrasyon**: Logic Apps, gerektiğinde ölçeklenen ve diğer Azure hizmetleriyle sorunsuz bir şekilde entegre olan **karmaşık, olay odaklı uygulamalar geliştirmek için Azure Functions ile birlikte çalışabilir**. Bir örnek kullanım durumu, belirli olaylara yanıt olarak bir Azure Function'ı tetiklemek için bir Logic App kullanmaktır; örneğin, bir Azure Storage hesabındaki değişiklikler, dinamik veri işleme imkanı sağlar.
- **Veri Boru Hatlarını Otomatikleştirme**: Logic Apps, Azure Data Factory ile birlikte **veri transferi ve dönüşüm süreçlerini** otomatikleştirebilir. Bu, Azure SQL Database ve Azure Blob Storage gibi çeşitli veri depoları arasında veri taşıyan ve dönüştüren ölçeklenebilir ve güvenilir veri boru hatları oluşturmak için faydalıdır ve analitik ile iş zekası operasyonlarına yardımcı olur.
- **Azure Functions ile Entegrasyon**: Logic Apps, gerektiğinde ölçeklenen ve diğer Azure hizmetleriyle sorunsuz bir şekilde entegre olan **sofistike, olay odaklı uygulamalar geliştirmek** için Azure Functions ile birlikte çalışabilir. Bir örnek kullanım durumu, belirli olaylara yanıt olarak bir Azure Function'ı tetiklemek için bir Logic App kullanmaktır; örneğin, bir Azure Depolama hesabındaki değişiklikler gibi, dinamik veri işleme imkanı sağlar.
### LogicAPP'i Görselleştirme
@@ -23,9 +28,9 @@ veya "**Logic app kod görünümü**" bölümünde kodu kontrol edebilirsiniz.
### SSRF Koruması
**Logic App'in SSRF'ye karşı savunmasız olduğunu bulsanız bile**, metadata'dan kimlik bilgilerine erişemezsiniz çünkü Logic Apps bunu izin vermez.
**Logic App'in SSRF'ye karşı savunmasız olduğunu bulsanız bile**, Logic Apps bunun için kimlik bilgilerine erişmenize izin vermez.
Örneğin, şöyle bir şey token'ı döndürmeyecektir:
Örneğin, bu gibi bir şey token'ı döndürmeyecektir:
```bash
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
@@ -39,7 +44,11 @@ Birçok barındırma seçeneği vardır:
* **Standard**
- **Workflow Service Plan**: ağ için VNET entegrasyonu ile özel hesaplama kaynakları ve her workflow service plan örneği için ücret alır. Daha fazla kontrol gerektiren daha talepkar iş yükleri için uygundur.
- **App Service Environment V3**: tam izolasyon ve ölçeklenebilirlik ile özel hesaplama kaynakları. Ayrıca ağ için VNET ile entegre olur ve ortam içindeki App Service örneklerine dayalı bir fiyatlandırma modeli kullanır. Bu, yüksek izolasyon gerektiren kurumsal ölçekli uygulamalar için idealdir.
- **Hybrid**: yerel işleme ve çoklu bulut desteği için tasarlanmıştır. Müşteri yönetimindeki hesaplama kaynaklarına yerel ağ erişimi sağlar ve Kubernetes Olay Tabanlı Otomatik Ölçekleme (KEDA) kullanır.
- **Hybrid**: yerel işleme ve çoklu bulut desteği için tasarlanmıştır. Müşteri yönetimindeki hesaplama kaynaklarına yerel ağ erişimi sağlar ve Kubernetes Event-Driven Autoscaling (KEDA) kullanır.
### Workflows
Azure Logic Apps'teki iş akışları, çeşitli hizmetler arasında eylemleri düzenleyen temel otomatik süreçlerdir. Bir iş akışı, bir tetikleyici—bir olay veya programlama ile başlar—ve ardından API çağrıları, veri işleme veya diğer Azure hizmetleriyle etkileşim gibi bir dizi eylemi gerçekleştirir. İş akışları, bir tasarımcı kullanarak görsel olarak veya kod (JSON tanımları) aracılığıyla tanımlanabilir ve az logic workflow create, az logic workflow show ve az logic workflow update gibi komutlar aracılığıyla yönetilir. Ayrıca, dış kaynaklarla izinleri ve entegrasyonları güvenli bir şekilde yönetmek için kimlik yönetimini (kimlik alt grubu aracılığıyla) destekler.
### Enumeration
@@ -137,11 +146,13 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtab }}
{{#endtabs }}
### Entegrasyon Hesapları
**Entegrasyon Hesapları**, Azure Logic Apps'in bir özelliğidir. Entegrasyon Hesapları, EDI, AS2 ve XML şeması yönetimi gibi gelişmiş B2B yeteneklerini etkinleştirerek kurumsal düzeyde entegrasyonları kolaylaştırmak için kullanılır. Entegrasyon Hesapları, Logic Apps için kullanılan aşağıdaki nesneleri depolayan Azure'daki bir konteynerdir:
* Şemalar: Entegrasyon hesabınızdaki mesajları doğrulamak ve işlemek için XML şemalarını yönetin.
* Haritalar: Entegrasyon iş akışlarınızda veri formatlarını dönüştürmek için XSLT tabanlı dönüşümleri yapılandırın.
* Haritalar: Entegrasyon iş akışlarınız içinde veri formatlarını dönüştürmek için XSLT tabanlı dönüşümleri yapılandırın.
* Derlemeler: Mantık ve veri işleme süreçlerini kolaylaştırmak için entegrasyon hesabı derlemelerini yönetin.
* Sertifikalar: Mesajları şifrelemek ve imzalamak için sertifikaları yönetin, güvenli iletişimi sağlamak için.
* Ortaklar: B2B işlemleri için ticari ortak bilgilerini yönetin, kesintisiz entegrasyonları etkinleştirin.

View File

@@ -8,18 +8,18 @@ Azure Database for MySQL, MySQL Community Edition'a dayanan tamamen yönetilen b
* **Tek Sunucu** (emeklilik yolunda):
- Maliyet etkin ve yönetimi kolay MySQL dağıtımları için optimize edilmiştir.
- Özellikler arasında otomatik yedeklemeler, yüksek kullanılabilirlik ve temel izleme bulunmaktadır.
- Tahmin edilebilir iş yüklerine sahip uygulamalar için idealdir.
- Öngörülebilir iş yüklerine sahip uygulamalar için idealdir.
* **Esnek Sunucu**:
- Veritabanı yönetimi ve yapılandırması üzerinde daha fazla kontrol sağlar.
- Yüksek kullanılabilirliği destekler (aynı bölge ve bölge yedekli).
- Elastik ölçekleme, yamanın yönetimi ve iş yükü optimizasyonu özelliklerine sahiptir.
- Elastik ölçekleme, yamanın yönetimi ve iş yükü optimizasyonu gibi özellikler sunar.
- Maliyet tasarrufu için durdurma/başlatma işlevselliği sunar.
### Ana Özellikler
* **Sunucu Yönetimi**: **ad-admin** özelliği, MySQL sunucuları için Azure Active Directory (AAD) yöneticilerini yönetmeyi sağlar ve AAD kimlik bilgileri aracılığıyla yönetim erişimi üzerinde kontrol sunar; **kimlik** özelliği ise Azure Yönetilen Kimliklerinin atanması ve yönetimini sağlar, bu da Azure kaynaklarına erişim için güvenli, kimlik bilgisi gerektirmeyen kimlik doğrulama sunar.
* **Yaşam Döngüsü Yönetimi**: bir sunucuyu başlatma veya durdurma, esnek bir sunucu örneğini silme, yapılandırma değişikliklerini hızlı bir şekilde uygulamak için bir sunucuyu yeniden başlatma ve otomasyon betikleri ile devam etmeden önce bir sunucunun belirli koşulları karşıladığından emin olmak için bekleme seçenekleri.
* **Güvenlik ve Ağ**: güvenli veritabanı erişimi için sunucu güvenlik duvarı kurallarını yönetebilir ve gerektiğinde sanal ağ yapılandırmalarını ayırabilir.
* **Veri Koruma ve Yedekleme**: veri kurtarma için esnek sunucu yedeklemelerini yönetme, farklı bir bölgede bir sunucuyu kurtarmak için coğrafi geri yükleme yapma, dış kullanım için sunucu yedeklerini dışa aktarma (Önizleme aşamasında) ve bir sunucuyu yedekten belirli bir zamana geri yükleme seçeneklerini içerir.
* **Sunucu Yönetimi**: **ad-admin** özelliği, MySQL sunucuları için Azure Entra ID yöneticilerini yönetmeyi sağlar ve Entra ID kimlik bilgileri aracılığıyla yönetim erişimi üzerinde kontrol sunar. Mysql, kimlik bilgilerine ihtiyaç duymadan kimlik doğrulamak için kullanılan Kullanıcı Yönetimli Kimlikleri destekler ve diğer hizmetler tarafından kullanılabilir.
* **Yaşam Döngüsü Yönetimi**: bir sunucuyu başlatma veya durdurma, esnek bir sunucu örneğini silme, yapılandırma değişikliklerini hızlı bir şekilde uygulamak için bir sunucuyu yeniden başlatma ve otomasyon betikleri ile devam etmeden önce bir sunucunun belirli koşulları karşıladığından emin olmak için bekleme seçenekleri içerir.
* **Güvenlik ve Ağ**: Sunucunuzu, yalnızca belirli genel IP adreslerine izin veren güvenlik duvarı kuralları aracılığıyla bağlantıları kısıtlayarak veya sunucunuzu sanal bir ağa entegre eden özel uç noktalar kullanarak güvence altına alın. Tüm bağlantılar TLS 1.2 şifrelemesi ile korunmaktadır. Veritabanları, yedeklemeler ve günlükler, varsayılan olarak hizmet yönetimli anahtarlar veya özel anahtarlar kullanılarak dinlenme durumunda şifrelenir.
* **Veri Koruma ve Yedekleme**: veri kurtarma için esnek sunucu yedeklemelerini yönetme, farklı bir bölgede bir sunucuyu kurtarmak için coğrafi geri yükleme yapma, dış kullanım için sunucu yedeklemelerini dışa aktarma (Önizleme aşamasında) ve bir sunucuyu yedekten belirli bir zamana geri yükleme seçeneklerini içerir.
### Sayım
@@ -114,7 +114,7 @@ MySQL yerel uzantı eklentisi ile de
```bash
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
```
Ayrıca, sorguları github ile de çalıştırabilirsiniz, ancak kullanıcı adı ve şifre de gereklidir. Çalıştırılacak sorgu ile bir sql dosyası oluşturmanız ve ardından:
Ayrıca, sorguları github ile de çalıştırabilirsiniz, ancak şifre ve kullanıcı adı da gereklidir. Çalıştırılacak sorgu ile bir sql dosyası oluşturmanız ve ardından:
```bash
# Setup
az mysql flexible-server deploy setup \

View File

@@ -18,11 +18,12 @@
### Ana Özellikler
* **Özel Bakım Pencereleri**: Kesintiyi en aza indirmek için güncellemeleri planlayın.
* **Aktif İzleme**: Veritabanı performansını izlemek ve geliştirmek için ayrıntılı metrikler ve günlükler erişimi.
* **Aktif İzleme**: Veritabanı performansını izlemek ve geliştirmek için ayrıntılı metrikler ve günlükler erişin.
* **Sunucuyu Durdur/ Başlat**: Kullanıcılar sunucuyu durdurabilir ve başlatabilir.
* **Otomatik Yedeklemeler**: 35 güne kadar yapılandırılabilir saklama süreleri ile yerleşik günlük yedeklemeler.
* **Rol Tabanlı Erişim**: Azure Active Directory aracılığıyla kullanıcı izinlerini ve yönetim erişimini kontrol edin.
* **Güvenlik ve Ağ**: Güvenli veritabanı erişimi için sunucu güvenlik duvarı kurallarını yönetebilir ve gerektiğinde sanal ağ yapılandırmalarını ayırabilirsiniz.
* **Yönetilen Kimlikler**: Sunucunuzun kimlik bilgilerini saklamadan diğer Azure hizmetleriyle güvenli bir şekilde kimlik doğrulaması yapmasına izin verir. Sistem atanan yönetilen kimlik ile diğer hizmetlere erişim sağlar ve kullanıcı atanan yönetilen kimlik ile diğer kimlikler tarafından erişilebilir.
### Sayım
@@ -122,7 +123,7 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}
## Sonrası İstismar
## Sonrası
{{#ref}}
../az-post-exploitation/az-postgresql-post-exploitation.md
@@ -132,5 +133,4 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
* Yetki yükseltme yöntemini doğrulamak için ad-admin ile erişim sağlamanın bir yolunu araştırın
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,148 +4,96 @@
## Azure SQL
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, **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, dört ana teklifi içerir:
1. **Azure SQL Server**: Azure SQL Server, SQL Server veritabanlarının dağıtımını ve yönetimini basitleştiren yönetilen bir ilişkisel veritabanı hizmetidir; yerleşik güvenlik ve performans özellikleri ile birlikte gelir.
2. **Azure SQL Database**: Bu, Azure bulutunda bireysel veritabanlarını barındırmanıza olanak tanıyan **tamamen yönetilen bir veritabanı hizmetidir**. Eşsiz veritabanı desenlerinizi öğrenen ve özelleştirilmiş öneriler ve otomatik ayarlama sağlayan yerleşik bir zekaya sahiptir.
3. **Azure SQL Managed Instance**: Bu, 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 bir sanal ağ (VNet) uygulaması ve yerel SQL Server müşterileri için uygun bir iş modeli sunar.
4. **Azure SQL Server on Azure VMs**: Bu, Hizmet Olarak Altyapı (IaaS) olup, **işletim sistemi ve SQL Server örneği üzerinde kontrol** istediğiniz göçler için en iyisidir; sanki yerel bir sunucu çalışıyormuş gibi.
1. **Azure SQL Server**: SQL Server veritabanlarının **dağıtımı ve yönetimi** için bir sunucu gereklidir.
2. **Azure SQL Database**: Bu, Azure bulutunda bireysel veritabanlarını barındırmanıza olanak tanıyan **tamamen yönetilen bir veritabanı hizmetidir**.
3. **Azure SQL Managed Instance**: Bu, daha büyük ölçekli, tüm SQL Server örneği kapsamındaki dağıtımlar içindir.
4. **Azure SQL Server on Azure VMs**: Bu, **işletim sistemi** ve SQL Server örneği üzerinde **kontrol** istediğiniz mimariler için en iyisidir.
### Azure SQL Server
### SQL Server Güvenlik Özellikleri
Azure SQL Server, veri işlemleri için Transact-SQL kullanan ve kurumsal düzey sistemleri yönetmek için tasarlanmış bir ilişkisel veritabanı yönetim sistemidir (RDBMS). Performans, güvenlik, ölçeklenebilirlik ve çeşitli Microsoft uygulamalarıyla entegrasyon için sağlam özellikler sunar. Azure SQL veritabanları bu sunucuya dayanır, çünkü bunlar bu sunucular üzerinde inşa edilmiştir ve veritabanlarına erişim için kullanıcıların giriş noktasıdır.
**Ağ erişimi:**
#### Network
- 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).
**Ağ Bağlantısı**: Erişimi genel uç nokta veya özel uç nokta üzerinden etkinleştirip etkinleştirmeyeceğinizi seçin. Erişim yok seçeneğini seçerseniz, manuel olarak yapılandırılana kadar hiçbir uç nokta oluşturulmaz:
- Erişim yok: Hiçbir uç nokta yapılandırılmaz, manuel olarak ayarlanana kadar gelen bağlantıları engeller.
- Genel uç nokta: Genel internet üzerinden doğrudan bağlantılara izin verir, güvenlik duvarı kurallarına ve diğer güvenlik yapılandırmalarına tabidir.
- Özel uç nokta: Bağlantıyı özel bir ağa kısıtlar.
**Kimlik Doğrulama Yöntemleri:**
**Bağlantı Politikası**: İstemcilerin SQL veritabanı sunucusuyla nasıl iletişim kuracağını tanımlayın:
- Varsayılan: Azure içindeki tüm istemci bağlantıları için bir Yönlendirme politikası (Özel Uç Noktaları kullananlar hariç) ve Azure dışındaki bağlantılar için bir Proxy politikası kullanır.
- Proxy: Tüm istemci bağlantılarını Azure SQL Database geçidi üzerinden yönlendirir.
- Yönlendirme: İstemciler, veritabanını barındıran düğüme doğrudan bağlanır.
- Microsoft **Entra-only** 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.
#### Authentication Methods
Azure SQL, veritabanı erişimini güvence altına almak için çeşitli kimlik doğrulama yöntemlerini destekler:
Herhangi bir SQL kimlik doğrulamasına izin verilirse, bir yönetici kullanıcısı (kullanıcı adı + şifre) belirtilmelidir ve Entra ID kimlik doğrulaması seçilirse, en az bir yönetici erişimine sahip ilkenin de belirtilmesi gerekir.
- **Microsoft Entra yalnızca kimlik doğrulaması**: Merkezi kimlik yönetimi ve tek oturum açma için Microsoft Entra (eski adıyla Azure AD) kullanır.
- **Hem SQL hem de Microsoft Entra kimlik doğrulaması**: Geleneksel SQL kimlik doğrulamasını Microsoft Entra ile birlikte kullanmanıza olanak tanır.
- **SQL kimlik doğrulaması**: Sadece SQL Server kullanıcı adları ve parolalarına dayanır.
**Şifreleme:**
#### Security features
- "Ş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.
**Yönetilen Kimlikler:**
SQL sunucuları **Yönetilen Kimlikler** içerir. Yönetilen kimlikler, sunucunuzun kimlik bilgilerini saklamadan diğer Azure hizmetleriyle güvenli bir şekilde kimlik doğrulaması yapmasına olanak tanır. Diğer hizmetlere erişim sağlar; bu, Sistem atanan yönetilen kimlik ile olur ve diğer kimliklerle erişilen Kullanıcı atanan yönetilen kimliktir. SQL'in erişebileceği bazı hizmetler Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB veya Cosmos DB API for MongoDB, Generic ODBC, Bulk Operations ve S3 uyumlu nesne depolamasıdır.
- 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.
SQL sunucusunun sahip olduğu diğer güvenlik özellikleri şunlardır:
**Microsoft Defender:**
- **Güvenlik Duvarı Kuralları**: Güvenlik duvarı kuralları, trafiği kısıtlayarak veya izin vererek sunucunuza erişimi kontrol eder. Bu, veritabanlarının kendisinin de bir özelliğidir.
- **Şeffaf Veri Şifreleme (TDE)**: TDE, verilerinizi korumak için veritabanlarınızı, yedeklerinizi ve günlüklerinizi dinlenme durumunda şifreler; bu, depolama tehlikeye girse bile verilerinizi korur. Bu, hizmet yönetimli bir anahtar veya müşteri yönetimli bir anahtar ile yapılabilir.
- **Microsoft Defender for SQL**: Microsoft Defender for SQL, bir sunucu için zafiyet değerlendirmeleri ve gelişmiş tehdit koruması sunarak etkinleştirilebilir.
- "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).
#### Deployment Models
**Yedeklemeler:**
- Yedekleme sıklığı, saklama politikalarında yönetilir.
Azure SQL Database, çeşitli ihtiyaçlara uygun esnek dağıtım seçeneklerini destekler:
**Silinmiş veritabanları:**
- Mevcut yedeklerden silinmiş DB'leri geri yüklemek mümkündür.
- **Tek Veritabanı**:
- Kendi özel kaynaklarıyla tamamen izole bir veritabanı.
- Mikro hizmetler veya tek bir veri kaynağı gerektiren uygulamalar için harika.
- **Esnek Havuz**:
- Bir havuz içinde birden fazla veritabanının kaynakları paylaşmasına olanak tanır.
- Birden fazla veritabanında dalgalanan kullanım desenleri için maliyet etkin.
### Azure SQL Database
## Azure SQL Database
**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.
#### Key Features
Bir SQL veritabanı oluşturmak için, barındırılacağı SQL sunucusunu belirtmek gerekir.
### 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.
- **PaaS Yetenekleri**: Yerleşik yüksek kullanılabilirlik, yedeklemeler ve güncellemeler.
- **Veri Esnekliği**: İlişkisel ve ilişkisel olmayan verileri (örneğin, grafikler, JSON, mekansal ve XML) destekler.
- **Devralınan SQL Server güvenlik özellikleri:**
- Kimlik doğrulama (SQL ve/veya Entra ID)
- Atanmış Yönetilen Kimlikler
- Ağ kısıtlamaları
- Şifreleme
- 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.
#### Network
Bir SQL veritabanı, **esnek Havuzun** bir 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.
**Ağ Bağlantısı**: Erişimi genel uç nokta veya özel uç nokta üzerinden etkinleştirip etkinleştirmeyeceğinizi seçin. Erişim yok seçeneğini seçerseniz, manuel olarak yapılandırılana kadar hiçbir uç nokta oluşturulmaz:
- Erişim yok: Hiçbir uç nokta yapılandırılmaz, manuel olarak ayarlanana kadar gelen bağlantıları engeller.
- Genel uç nokta: Genel internet üzerinden doğrudan bağlantılara izin verir, güvenlik duvarı kurallarına ve diğer güvenlik yapılandırmalarına tabidir.
- Özel uç nokta: Bağlantıyı özel bir ağa kısıtlar.
#### Azure SQL Sütun Seviyesi Güvenliği (Maskeleme) & Satır Seviyesi Güvenliği
**Bağlantı Politikası**: İstemcilerin SQL veritabanı sunucusuyla nasıl iletişim kuracağını tanımlayın:
- Varsayılan: Azure içindeki tüm istemci bağlantıları için bir Yönlendirme politikası (Özel Uç Noktaları kullananlar hariç) ve Azure dışındaki bağlantılar için bir Proxy politikası kullanır.
- Proxy: Tüm istemci bağlantılarını Azure SQL Database geçidi üzerinden yönlendirir.
- Yönlendirme: İstemciler, veritabanını barındıran düğüme doğrudan bağlanır.
**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 gizli kalmasını sağlar.
#### Security Features
**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**.
- **Microsoft Defender for SQL**: zafiyet değerlendirmeleri ve gelişmiş tehdit koruması sunarak etkinleştirilebilir.
- **Defter**: Verilerin bütünlüğünü kriptografik olarak doğrular, herhangi bir müdahalenin tespit edilmesini sağlar.
- **Sunucu Kimliği**: Merkezi erişimi sağlamak için sistem atanan ve kullanıcı atanan yönetilen kimlikleri kullanır.
- **Şeffaf Veri Şifreleme Anahtar Yönetimi**: Uygulamada herhangi bir değişiklik gerektirmeden veritabanlarını, yedekleri ve günlükleri dinlenme durumunda şifreler. Şifreleme her veritabanında etkinleştirilebilir ve veritabanı düzeyinde yapılandırıldığında, bu ayarlar sunucu düzeyindeki yapılandırmayı geçersiz kılar.
- **Her Zaman Şifreli**: Veri sahipliğini veri yönetiminden ayıran gelişmiş veri koruma özellikleri paketidir. Bu, yüksek ayrıcalıklara sahip yöneticilerin veya operatörlerin hassas verilere erişememesini sağlar.
#### Purchasing Models / Service Tiers
- **vCore tabanlı**: Hesaplama, bellek ve depolamayı bağımsız olarak seçin. Genel Amaç, İş Kritik (OLTP uygulamaları için yüksek dayanıklılık ve performans ile) ve 128 TB depolama kapasitesine kadar ölçeklenir.
- **DTU tabanlı**: Hesaplama, bellek ve I/O'yu sabit katmanlara paketler. Yaygın görevler için dengeli kaynaklar.
- Standart: Yaygın görevler için dengeli kaynaklar.
- Premium: Talepkar iş yükleri için yüksek performans.
#### Scalable performance and pools
- **Tek Veritabanları**: Her veritabanı izole edilmiştir ve kendi özel hesaplama, bellek ve depolama kaynaklarına sahiptir. Kaynaklar, kesinti olmadan dinamik olarak ölçeklenebilir (1128 vCore, 32 GB4 TB depolama ve 128 TB'a kadar).
- **Esnek Havuzlar**: Verimliliği artırmak ve maliyetleri azaltmak için bir havuzda birden fazla veritabanı arasında kaynakları paylaşır. Kaynaklar, tüm havuz için de dinamik olarak ölçeklenebilir.
- **Hizmet Katmanı Esnekliği**: Genel Amaç katmanında tek bir veritabanı ile küçük başlayın. İhtiyaçlar arttıkça İş Kritik veya Hiperscale katmanlarına yükseltin.
- **Ölçeklendirme Seçenekleri**: Dinamik Ölçeklendirme veya Otomatik Ölçeklendirme Alternatifleri.
#### Built-In Monitoring & Optimization
- **Sorgu Deposu**: Performans sorunlarını izler, en fazla kaynak tüketenleri tanımlar ve uygulanabilir öneriler sunar.
- **Otomatik Ayarlama**: Otomatik dizinleme ve sorgu planı düzeltmeleri gibi özelliklerle performansı proaktif olarak optimize eder.
- **Telemetri Entegrasyonu**: Özelleştirilmiş içgörüler için Azure Monitor, Event Hubs veya Azure Storage üzerinden izlemeyi destekler.
#### Disaster Recovery & Availavility
- **Otomatik yedeklemeler**: SQL Database, veritabanlarının tam, farklı ve işlem günlüğü yedeklemelerini otomatik olarak gerçekleştirir.
- **Anlık Geri Yükleme**: Veritabanlarını yedekleme saklama süresi içinde herhangi bir geçmiş duruma geri yükleyin.
- **Coğrafi Yedeklilik**
- **Failover Grupları**: Veritabanlarını otomatik failover için bölgeler arasında gruplandırarak felaket kurtarmayı basitleştirir.
**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 Managed Instance
**Azure SQL Managed Instance**, SQL Server ile neredeyse %100 uyumluluk sunan ve çoğu yönetim görevini (örneğin, yükseltme, yamanın uygulanması, yedekleme, izleme) otomatik olarak gerçekleştiren bir Hizmet Olarak Platform (PaaS) veritabanı motorudur. Yerel SQL Server veritabanlarını minimum değişiklikle buluta taşımak için bir çözüm sunar.
**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.
#### Service Tiers
### Azure SQL Sanal Makineler
- **Genel Amaç**: Standart I/O ve gecikme gereksinimleri olan uygulamalar için maliyet etkin bir seçenek.
- **İş Kritik**: Kritik iş yükleri için düşük I/O gecikmesi ile yüksek performans seçeneği.
**Azure SQL Sanal Makineleri**, **işletim sistemi** ve SQL Server örneği üzerinde kontrol sağlamanıza olanak tanır; çünkü bir VM, SQL sunucusunu çalıştıran VM hizmetinde oluşturulacaktır.
#### Advanced Security Features
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ğ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.
* **Tehdit Koruması**: Şüpheli etkinlikler ve SQL enjeksiyon saldırıları için gelişmiş tehdit koruma uyarıları. Uyum için veritabanı olaylarını izlemek ve kaydetmek için denetim.
* **Erişim Kontrolü**: Merkezi kimlik yönetimi için Microsoft Entra kimlik doğrulaması. Ayrıntılı erişim kontrolü için Satır Düzeyi Güvenlik ve Dinamik Veri Maskesi.
* **Yedeklemeler**: Anlık geri yükleme yeteneği ile otomatik ve manuel yedeklemeler.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines**, **işletim sistemi ve SQL Server örneği üzerinde kontrol** istediğiniz göçler için en iyisidir; sanki yerel bir sunucu çalışıyormuş gibi. Farklı makine boyutlarına ve geniş bir SQL Server sürüm ve sürüm seçeneğine sahip olabilir.
#### Key Features
**Otomatik Yedekleme**: SQL veritabanları için yedeklemeleri planlayın.
**Otomatik Yamanın Uygulanması**: Bakım penceresi sırasında Windows ve SQL Server güncellemelerinin yüklenmesini otomatikleştirir.
**Azure Key Vault Entegrasyonu**: SQL Server VM'leri için Key Vault'u otomatik olarak yapılandırır.
**Defender for Cloud Entegrasyonu**: Portalda Defender for SQL önerilerini görüntüleyin.
**Sürüm/Sürüm Esnekliği**: VM'yi yeniden dağıtmadan SQL Server sürüm veya sürüm meta verilerini değiştirin.
#### Security Features
**Microsoft Defender for SQL**: Güvenlik içgörüleri ve uyarılar.
**Azure Key Vault Entegrasyonu**: Kimlik bilgileri ve şifreleme anahtarlarının güvenli depolanması.
**Microsoft Entra (Azure AD)**: Kimlik doğrulama ve erişim kontrolü.
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.
## Enumeration
@@ -216,6 +164,30 @@ az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
# List schema by the database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
# Get tables of a database with the schema
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
# Get columns of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
# Get columns of a table
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
# Get DataMaskingPolicies of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
```
{{#endtab}}
@@ -260,6 +232,31 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
Ayrıca, veritabanındaki Dinamik Veri Maskesi ve Satır Düzeyi politikalarını listelemek istiyorsanız, sorgulayabilirsiniz:
```sql
--Enumerates the masked columns
SELECT
OBJECT_NAME(mc.object_id) AS TableName,
c.name AS ColumnName,
mc.masking_function AS MaskingFunction
FROM sys.masked_columns AS mc
JOIN sys.columns AS c
ON mc.object_id = c.object_id
AND mc.column_id = c.column_id
--Enumerates Row level policies
SELECT
sp.name AS PolicyName,
sp.is_enabled,
sp.create_date,
sp.modify_date,
OBJECT_NAME(sp.object_id) AS TableName,
sp2.predicate_definition AS PredicateDefinition
FROM sys.security_policies AS sp
JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Bağlanın ve SQL sorguları çalıştırın
Örnek [bir Az WebApp'ı numaralandırma](az-app-services.md) ile bir bağlantı dizesi (kimlik bilgilerini içeren) bulabilirsiniz:
@@ -298,7 +295,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
../az-privilege-escalation/az-sql-privesc.md
{{#endref}}
## Post Exploitasyon
## Post Exploitation
{{#ref}}
../az-post-exploitation/az-sql-post-exploitation.md