Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-01-06 17:12:42 +00:00
parent 14ef0d8f5f
commit fab84f89d1
5 changed files with 71 additions and 54 deletions

1
.gitignore vendored
View File

@@ -34,3 +34,4 @@ Temporary Items
book
book/*
hacktricks-preprocessor.log
hacktricks-preprocessor-error.log

View File

@@ -7,7 +7,14 @@ from os import path
from urllib.request import urlopen, Request
logger = logging.getLogger(__name__)
logging.basicConfig(filename='hacktricks-preprocessor.log', filemode='w', encoding='utf-8', level=logging.DEBUG)
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(filename='hacktricks-preprocessor.log', mode='w', encoding='utf-8')
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
handler2 = logging.FileHandler(filename='hacktricks-preprocessor-error.log', mode='w', encoding='utf-8')
handler2.setLevel(logging.ERROR)
logger.addHandler(handler2)
def findtitle(search ,obj, key, path=(),):
@@ -45,19 +52,29 @@ def ref(matchobj):
try:
if href.endswith("/"):
href = href+"README.md" # Fix if ref points to a folder
chapter, _path = findtitle(href, book, "source_path")
logger.debug(f'Recursive title search result: {chapter["name"]}')
title = chapter['name']
if "#" in href:
chapter, _path = findtitle(href.split("#")[0], book, "source_path")
title = " ".join(href.split("#")[1].split("-")).title()
logger.debug(f'Ref has # using title: {title}')
else:
chapter, _path = findtitle(href, book, "source_path")
logger.debug(f'Recursive title search result: {chapter["name"]}')
title = chapter['name']
except Exception as e:
try:
dir = path.dirname(current_chapter['source_path'])
logger.debug(f'Error getting chapter title: {href} trying with relative path {path.normpath(path.join(dir,href))}')
chapter, _path = findtitle(path.normpath(path.join(dir,href)), book, "source_path")
logger.debug(f'Recursive title search result: {chapter["name"]}')
title = chapter['name']
if "#" in href:
chapter, _path = findtitle(path.normpath(path.join(dir,href.split('#')[0])), book, "source_path")
title = " ".join(href.split("#")[1].split("-")).title()
logger.debug(f'Ref has # using title: {title}')
else:
chapter, _path = findtitle(path.normpath(path.join(dir,href.split('#')[0])), book, "source_path")
title = chapter["name"]
logger.debug(f'Recursive title search result: {chapter["name"]}')
except Exception as e:
logger.debug(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
print(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
logger.debug(e)
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
sys.exit(1)
@@ -85,13 +102,11 @@ def files(matchobj):
except Exception as e:
logger.debug(e)
logger.debug(f'Error searching file: {href}')
print(f'Error searching file: {href}')
logger.error(f'Error searching file: {href}')
sys.exit(1)
if title=="":
logger.debug(f'Error searching file: {href}')
print(f'Error searching file: {href}')
logger.error(f'Error searching file: {href}')
sys.exit(1)
template = f"""<a class="content_ref" href="/files/{href}"><span class="content_ref_label">{title}</span></a>"""
@@ -134,10 +149,11 @@ if __name__ == '__main__':
for chapter in iterate_chapters(book['sections']):
logger.debug(f"Chapter: {chapter['path']}")
current_chapter = chapter
regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endref[\s]*}}'
# regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endref[\s]*}}'
regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n#]*(?:#(.*))?)(?:\n)?{{[\s]*#endref[\s]*}}'
new_content = re.sub(regex, ref, chapter['content'])
regex = r'{{[\s]*#file[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endfile[\s]*}}'
new_content = re.sub(regex, files, chapter['content'])
new_content = re.sub(regex, files, new_content)
new_content = add_read_time(new_content)
chapter['content'] = new_content

View File

@@ -8,7 +8,7 @@
'n Aanvaller met daardie toestemmings oor interessante emmers mag in staat wees om hulpbronne te kapen en voorregte te verhoog.
Byvoorbeeld, 'n aanvaller met daardie **toestemmings oor 'n cloudformation emmer** genaamd "cf-templates-nohnwfax6a6i-us-east-1" sal in staat wees om die ontplooiing te kapen. Die toegang kan gegee word met die volgende beleid:
Byvoorbeeld, 'n aanvaller met daardie **toestemmings oor 'n cloudformation-emmer** genaamd "cf-templates-nohnwfax6a6i-us-east-1" sal in staat wees om die ontplooiing te kapen. Die toegang kan gegee word met die volgende beleid:
```json
{
"Version": "2012-10-17",
@@ -53,19 +53,19 @@ Hier is 'n paar voorbeelde:
### `s3:PutObject`, `s3:GetObject` (opsioneel) oor terraform toestand lêer
Dit is baie algemeen dat die [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) toestand lêers in blob stoor van wolkverskaffers gestoor word, bv. AWS S3. Die lêer-suffiks vir 'n toestand lêer is `.tfstate`, en die emmername gee dikwels ook weg dat hulle terraform toestand lêers bevat. Gewoonlik het elke AWS-rekening een sulke emmer om die toestand lêers wat die toestand van die rekening toon, te stoor.\
Ook gewoonlik, in werklike wêreld rekeninge het amper altyd alle ontwikkelaars `s3:*` en soms selfs besigheidsgebruikers `s3:Put*`.
Ook gewoonlik, in werklike wêreld rekeninge het byna altyd alle ontwikkelaars `s3:*` en soms selfs besigheidsgebruikers `s3:Put*`.
So, as jy die toestemmings gelys oor hierdie lêers het, is daar 'n aanvalsvector wat jou toelaat om RCE in die pyplyn te verkry met die voorregte van `terraform` - meestal `AdministratorAccess`, wat jou die admin van die wolkrekening maak. Ook kan jy daardie vektor gebruik om 'n ontkenning van diens aanval te doen deur `terraform` te laat verwyder legitieme hulpbronne.
Volg die beskrywing in die *Misbruik van Terraform Toestand Lêers* afdeling van die *Terraform Sekuriteit* bladsy vir direk bruikbare eksploitkode:
{{#ref}}
terraform-security.md#abusing-terraform-state-files
pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files
{{#endref}}
### `s3:PutBucketPolicy`
'n Aanvaller, wat **van die dieselfde rekening** moet wees, anders sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, sal met hierdie toestemming in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel.
'n Aanvaller, wat **van die dieselfde rekening** moet wees, indien nie sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, sal met hierdie toestemming in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>

View File

@@ -7,7 +7,7 @@
Vir meer inligting oor Azure App dienste, kyk:
{{#ref}}
../az-services/az-app-service.md
../az-services/az-app-services.md
{{#endref}}
### Microsoft.Web/sites/publish/Action, Microsoft.Web/sites/basicPublishingCredentialsPolicies/read, Microsoft.Web/sites/config/read, Microsoft.Web/sites/read
@@ -34,10 +34,10 @@ ssh root@127.0.0.1 -p 39895
```
- **Debug die toepassing**:
1. Installeer die Azure uitbreiding in VScode.
2. Teken in die uitbreiding met die Azure rekening.
2. Teken in die uitbreiding in met die Azure rekening.
3. Lys al die App dienste binne die intekening.
4. Kies die App diens wat jy wil debugeer, regsklik en kies "Begin Debugeer".
5. As die toepassing nie debuggings ingeskakel het nie, sal die uitbreiding probeer om dit in te skakel, maar jou rekening het die toestemming `Microsoft.Web/sites/config/write` nodig om dit te doen.
5. As die toepassing nie debuggings geaktiveer het nie, sal die uitbreiding probeer om dit te aktiveer, maar jou rekening het die toestemming `Microsoft.Web/sites/config/write` nodig om dit te doen.
### Verkry SCM Kredensiale & Aktiveer Basiese Verifikasie
@@ -94,9 +94,9 @@ az webapp deployment list-publishing-profiles --name <app-name> --resource-group
}
]
```
Let wel dat die **gebruikersnaam altyd dieselfde is** (behalwe in FTP wat die naam van die app aan die begin voeg) maar die **wagwoord is dieselfde** vir al hulle.
Let wel dat die **gebruikersnaam altyd dieselfde is** (behalwe in FTP wat die naam van die app aan die begin voeg) maar die **wagwoord is dieselfde** vir almal.
Boonop is die **SCM URL is `<app-name>.scm.azurewebsites.net`**.
Boonop is die **SCM URL `<app-name>.scm.azurewebsites.net`**.
- Die toestemming **`Microsoft.Web/sites/config/list/action`** laat toe om te bel:
```bash
@@ -124,14 +124,14 @@ az webapp deployment user set \
--user-name hacktricks \
--password 'W34kP@ssw0rd123!'
```
Dan kan jy hierdie inligting gebruik om **toegang te verkry tot die SCM en FTP platforms**. Dit is ook 'n uitstekende manier om volharding te handhaaf.
Dan kan jy hierdie geloofsbriewe gebruik om **toegang tot die SCM en FTP platforms** te verkry. Dit is ook 'n uitstekende manier om volharding te handhaaf.
Onthou dat jy om toegang te verkry tot die SCM platform vanaf die **web, jy moet toegang hê tot `<SCM-URL>/BasicAuth`**.
Onthou dat jy om toegang tot die SCM-platform vanaf die **web te verkry, moet jy toegang hê tot `<SCM-URL>/BasicAuth`**.
> [!WARNING]
> Let daarop dat elke gebruiker sy eie inligting kan konfigureer deur die vorige opdrag aan te roep, maar as die gebruiker nie genoeg regte het om toegang tot die SCM of FTP te verkry nie, sal die inligting nie werk nie.
> Let daarop dat elke gebruiker sy eie geloofsbriewe kan konfigureer deur die vorige opdrag aan te roep, maar as die gebruiker nie genoeg toestemming het om toegang tot die SCM of FTP te verkry nie, sal die geloofsbriewe nie werk nie.
- As jy sien dat daardie inligting **REDACTED** is, is dit omdat jy **die SCM basiese verifikasie opsie moet aktiveer** en daarvoor het jy die tweede toestemming nodig (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
- As jy sien dat daardie geloofsbriewe **REDACTED** is, is dit omdat jy **die SCM basiese verifikasie opsie moet aktiveer** en daarvoor het jy die tweede toestemming nodig (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`):
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -163,7 +163,7 @@ curl -X POST "<SMC-URL>/api/publish?type=zip" --data-binary "@./app.zip" -u '<us
```
### Webjobs: Microsoft.Web/sites/publish/Action | SCM geloofsbriewe
Die genoemde Azure toestemming laat verskeie interessante aksies toe wat ook met die SCM geloofsbriewe uitgevoer kan word:
Die genoemde Azure toestemming laat toe om verskeie interessante aksies uit te voer wat ook met die SCM geloofsbriewe uitgevoer kan word:
- Lees **Webjobs** logs:
```bash
@@ -211,14 +211,14 @@ az webapp identity assign --name <app-name> --resource-group <res-group> --ident
```
### Microsoft.Web/sites/config/list/action
Hierdie toestemming laat toe om die **verbindingstringe** en die **appsettings** van die App-diens te lys wat sensitiewe inligting soos databasisakkrediteerbes te bevat.
Hierdie toestemming laat toe om die **verbindingstringe** en die **appsettings** van die App-diens te lys wat sensitiewe inligting soos databasisakkrediteerlinge kan bevat.
```bash
az webapp config connection-string list --name <name> --resource-group <res-group>
az webapp config appsettings list --name <name> --resource-group <res-group>
```
### Lees Geconfigureerde Derdeparty Kredensiale
Deur die volgende opdrag uit te voer, is dit moontlik om **die derdeparty kredensiale** wat in die huidige rekening geconfigureer is, te lees. Let daarop dat as daar byvoorbeeld 'n paar Github-kredensiale in 'n ander gebruiker geconfigureer is, jy nie die token van 'n ander een sal kan toegang nie.
Deur die volgende opdrag uit te voer, is dit moontlik om **die derdeparty kredensiale** wat in die huidige rekening geconfigureer is, te lees. Let daarop dat as daar byvoorbeeld sommige Github-kredensiale in 'n ander gebruiker geconfigureer is, jy nie die token van 'n ander een sal kan toegang nie.
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"

View File

@@ -7,40 +7,40 @@
**Azure Function Apps** is 'n **serverless compute service** wat jou toelaat om klein stukke kode, genoem **functions**, te loop sonder om die onderliggende infrastruktuur te bestuur. Hulle is ontwerp om kode uit te voer in reaksie op verskeie triggers, soos **HTTP versoeke, timers, of gebeurtenisse van ander Azure dienste** soos Blob Storage of Event Hubs. Function Apps ondersteun verskeie programmeertale, insluitend C#, Python, JavaScript, en Java, wat hulle veelsydig maak vir die bou van **gebeurtenis-gedrewe toepassings**, outomatisering van werksvloei, of integrasie van dienste. Hulle is kostedoeltreffend, aangesien jy gewoonlik net betaal vir die rekenaartyd wat gebruik word wanneer jou kode loop.
> [!NOTE]
> Let daarop dat **Functions 'n substel van die App Services is**, daarom sal baie van die funksies wat hier bespreek word ook deur toepassings wat as Azure Apps geskep is (`webapp` in cli) gebruik word.
> Let daarop dat **Functions 'n substel van die App Services is**, daarom sal baie van die funksies wat hier bespreek word ook deur toepassings wat as Azure Apps (`webapp` in cli) geskep is, gebruik word.
### Verskillende Planne
- **Flex Consumption Plan**: Bied **dinamiese, gebeurtenis-gedrewe skaal** met 'n betaal-vir-wat-jy-gebruik prys, wat funksie-instanties byvoeg of verwyder gebaseer op vraag. Dit ondersteun **virtuele netwerke** en **vooraf-geprovisioneerde instansies** om koue begin te verminder, wat dit geskik maak vir **veranderlike werklas** wat nie houerondersteuning benodig nie.
- **Tradisionele Consumption Plan**: Die standaard serverless opsie, waar jy **net betaal vir rekenaarbronne wanneer funksies loop**. Dit skaal outomaties gebaseer op inkomende gebeurtenisse en sluit **koue begin optimalisering** in, maar ondersteun nie houerontplooiings nie. Ideaal vir **intermitterende werklas** wat outomatiese skaal benodig.
- **Flex Consumption Plan**: Bied **dinamiese, gebeurtenis-gedrewe skaal** met 'n betaal-vir-wat-jy-gebruik prys, wat funksie-instansies byvoeg of verwyder op grond van vraag. Dit ondersteun **virtuele netwerke** en **vooraf-geprovisioneerde instansies** om koue begin te verminder, wat dit geskik maak vir **veranderlike werklas** wat nie hou van houerondersteuning vereis nie.
- **Traditional Consumption Plan**: Die standaard serverless opsie, waar jy **net vir rekenaarhulpbronne betaal wanneer funksies loop**. Dit skaal outomaties op grond van inkomende gebeurtenisse en sluit **kouestart-optimalisering** in, maar ondersteun nie houerontplooiings nie. Ideaal vir **intermitterende werklas** wat outomatiese skaal vereis.
- **Premium Plan**: Ontwerp vir **konstante prestasie**, met **voorverhitte werkers** om koue begin te elimineer. Dit bied **verlengde uitvoertye, virtuele netwerke**, en ondersteun **pasgemaakte Linux beelde**, wat dit perfek maak vir **missie-kritieke toepassings** wat hoë prestasie en gevorderde funksies benodig.
- **Gewylde Plan**: Loop op gewyde virtuele masjiene met **voorspelbare fakturering** en ondersteun handmatige of outomatiese skaal. Dit laat toe om verskeie apps op dieselfde plan te laat loop, bied **rekenaarisolering**, en verseker **veilige netwerktoegang** via App Service Omgewings, wat dit ideaal maak vir **lanklopende toepassings** wat konstante hulpbron toewysing benodig.
- **Container Apps**: Maak dit moontlik om **gecontaineriseerde funksie-apps** in 'n bestuurde omgewing te ontplooi, langs mikrodiens en API's. Dit ondersteun pasgemaakte biblioteke, erfenis app migrasie, en **GPU verwerking**, wat Kubernetes-klusterbestuur elimineer. Ideaal vir **gebeurtenis-gedrewe, skaalbare gecontaineriseerde toepassings**.
- **Dedicated Plan**: Loop op toegewyde virtuele masjiene met **voorspelbare fakturering** en ondersteun handmatige of outomatiese skaal. Dit laat toe om verskeie toepassings op dieselfde plan te loop, bied **rekenaarisolering**, en verseker **veilige netwerktoegang** via App Service Omgewings, wat dit ideaal maak vir **lanklopende toepassings** wat konstante hulpbron toewysing benodig.
- **Container Apps**: Maak dit moontlik om **gecontaineriseerde funksie-apps** in 'n bestuurde omgewing te ontplooi, langs mikrodiens en API's. Dit ondersteun pasgemaakte biblioteke, erflike app migrasie, en **GPU verwerking**, wat Kubernetes-klusterbestuur elimineer. Ideaal vir **gebeurtenis-gedrewe, skaalbare gecontaineriseerde toepassings**.
### **Stoor Emmers**
Wanneer 'n nuwe Function App geskep word wat nie gecontaineriseerd is nie (maar die kode om te loop gee), sal die **kode en ander funksie-verwante data in 'n Stoor rekening gestoor word**. Standaard sal die webkonsol 'n nuwe een per funksie skep om die kode te stoor.
Boonop, deur die kode binne die emmer te wysig (in die verskillende formate waarin dit gestoor kan word), sal die **kode van die app na die nuwe een gewysig word en die volgende keer wanneer die Funksie genoem word, uitgevoer word**.
Boonop, deur die kode binne die emmer te wysig (in die verskillende formate waarin dit gestoor kan word), sal die **kode van die app gewysig word na die nuwe een en uitgevoer** word die volgende keer dat die Funksie genoem word.
> [!CAUTION]
> Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien **skrywe toegang oor hierdie emmer** 'n aanvaller sal toelaat om **die kode te kompromitteer en bevoegdhede te verhoog** na die bestuurde identiteite binne die Function App.
> Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien **skrywe toegang oor hierdie emmer** 'n aanvaller sal toelaat om die **kode te kompromitteer en bevoegdhede te verhoog** na die bestuurde identiteite binne die Function App.
>
> Meer hieroor in die **bevoegdheid verhoging afdeling**.
Dit is ook moontlik om die **master en funksies sleutels** wat in die stoor rekening gestoor is, in die houer **`azure-webjobs-secrets`** binne die gids **`<app-name>`** in die JSON-lêers wat jy binne kan vind.
Dit is ook moontlik om die **master en funksiesleutels** wat in die stoor rekening gestoor is, in die houer **`azure-webjobs-secrets`** binne die gids **`<app-name>`** in die JSON-lêers wat jy daarbinne kan vind.
Let daarop dat Functions ook toelaat om die kode in 'n afgeleë plek te stoor deur net die URL daarna te dui.
Let daarop dat Funksies ook toelaat om die kode in 'n afgeleë ligging te stoor deur net die URL daarna te dui.
### Netwerk
Met 'n HTTP-trigger:
- Dit is moontlik om **toegang tot 'n funksie van die hele Internet te gee** sonder om enige verifikasie te vereis of toegang IAM-gebaseerd te gee. Alhoewel dit ook moontlik is om hierdie toegang te beperk.
- Dit is moontlik om **toegang tot 'n funksie van die hele Internet** te gee sonder om enige verifikasie te vereis of toegang op IAM-basis te gee. Alhoewel dit ook moontlik is om hierdie toegang te beperk.
- Dit is ook moontlik om **toegang te gee of te beperk** tot 'n Function App van **'n interne netwerk (VPC)**.
> [!CAUTION]
> Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien dit moontlik mag wees om **na interne netwerke te pivot** vanaf 'n kwesbare Funksie wat aan die Internet blootgestel is.
> Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien dit moontlik mag wees om **te pivot na interne netwerke** vanaf 'n kwesbare Funksie wat aan die Internet blootgestel is.
### **Function App Instellings & Omgewing Veranderlikes**
@@ -56,25 +56,25 @@ In 'n **Windows** funksie wat NodeJS gebruik, was die kode geleë in **`C:\home\
### **Bestuurde Identiteite & Metadata**
Net soos [**VMs**](vms/), kan Functions **Bestuurde Identiteite** van 2 tipes hê: Stelsel toegeken en Gebruiker toegeken.
Net soos [**VMs**](vms/index.html), kan Funksies **Bestuurde Identiteite** van 2 tipes hê: Stelsel toegewy en Gebruiker toegewy.
Die **stelsel toegeken** een sal 'n bestuurde identiteit wees wat **net die funksie** wat dit toegeken het, kan gebruik, terwyl die **gebruiker toegeken** bestuurde identiteite bestuurde identiteite is wat **enige ander Azure diens kan gebruik**.
Die **stelsel toegewy** een sal 'n bestuurde identiteit wees wat **net die funksie** wat dit toegewy het, kan gebruik, terwyl die **gebruiker toegewy** bestuurde identiteite bestuurde identiteite is wat **enige ander Azure diens kan gebruik**.
> [!NOTE]
> Net soos in [**VMs**](vms/), kan Functions **1 stelsel toegeken** bestuurde identiteit en **verskeie gebruiker toegeken** hê, so dit is altyd belangrik om te probeer om al hulle te vind as jy die funksie kompromitteer omdat jy dalk bevoegdhede kan verhoog na verskeie bestuurde identiteite vanaf net een Funksie.
> Net soos in [**VMs**](vms/index.html), kan Funksies **1 stelsel toegewy** bestuurde identiteit en **verskeie gebruiker toegewy** hê, so dit is altyd belangrik om te probeer om al hulle te vind as jy die funksie kompromitteer omdat jy dalk bevoegdhede kan verhoog na verskeie bestuurde identiteite vanaf net een Funksie.
>
> As 'n geen stelsel bestuurde identiteit gebruik word nie, maar een of meer gebruiker bestuurde identiteite aan 'n funksie geheg is, sal jy standaard nie in staat wees om enige token te kry nie.
Dit is moontlik om die [**PEASS skripte**](https://github.com/peass-ng/PEASS-ng) te gebruik om tokens van die standaard bestuurde identiteit van die metadata eindpunt te kry. Of jy kan hulle **handmatig** kry soos verduidelik in:
Dit is moontlik om die [**PEASS skripte**](https://github.com/peass-ng/PEASS-ng) te gebruik om tokens van die standaard bestuurde identiteit van die metadata eindpunt te kry. Of jy kan dit **handmatig** kry soos verduidelik in:
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
Let daarop dat jy 'n manier moet vind om **alle Bestuurde Identiteite wat 'n funksie het, te kontroleer** aangesien as jy dit nie aandui nie, die metadata eindpunt **net die standaard een sal gebruik** (kyk na die vorige skakel vir meer inligting).
Let daarop dat jy 'n manier moet vind om **al die Bestuurde Identiteite wat 'n funksie het, te kontroleer** aangesien as jy dit nie aandui nie, die metadata eindpunt **net die standaard een sal gebruik** (kyk na die vorige skakel vir meer inligting).
## Toegang Sleutels
> [!NOTE]
> Let daarop dat daar geen RBAC toestemmings is om toegang aan gebruikers te gee om die funksies aan te roep nie. Die **funksie aanroep hang af van die trigger** wat gekies is toe dit geskep is en as 'n HTTP Trigger gekies is, mag dit nodig wees om 'n **toegang sleutel** te gebruik.
> Let daarop dat daar nie RBAC toestemmings is om toegang aan gebruikers te gee om die funksies aan te roep nie. Die **funksie-aanroep hang af van die trigger** wat gekies is toe dit geskep is en as 'n HTTP Trigger gekies is, mag dit nodig wees om 'n **toegang sleutel** te gebruik.
Wanneer 'n eindpunt binne 'n funksie geskep word met 'n **HTTP trigger** is dit moontlik om die **toegang sleutel outorisatienvlak** aan te dui wat nodig is om die funksie te aktiveer. Drie opsies is beskikbaar:
@@ -84,10 +84,10 @@ Wanneer 'n eindpunt binne 'n funksie geskep word met 'n **HTTP trigger** is dit
**Tipe sleutels:**
- **Funksie Sleutels:** Funksie sleutels kan of standaard of gebruiker-gedefinieerd wees en is ontwerp om toegang eksklusief tot **spesifieke funksie eindpunte** binne 'n Function App te verleen wat 'n meer fyngekorreleerde toegang oor die eindpunte toelaat.
- **Gasheer Sleutels:** Gasheer sleutels, wat ook standaard of gebruiker-gedefinieerd kan wees, bied toegang tot **alle funksie eindpunte binne 'n Function App met FUNKSIE toegang vlak**.
- **Funksie Sleutels:** Funksie sleutels kan of standaard of gebruiker-gedefinieer wees en is ontwerp om toegang eksklusief tot **spesifieke funksie eindpunte** binne 'n Function App te verleen wat 'n meer fyngekorrelde toegang oor die eindpunte toelaat.
- **Gasheer Sleutels:** Gasheer sleutels, wat ook standaard of gebruiker-gedefinieer kan wees, bied toegang tot **alle funksie eindpunte binne 'n Function App met FUNKSIE toegang vlak**.
- **Meester Sleutel:** Die meester sleutel (`_master`) dien as 'n administratiewe sleutel wat verhoogde toestemmings bied, insluitend toegang tot alle funksie eindpunte (ADMIN toegang vlak ingesluit). Hierdie **sleutel kan nie herroep word nie.**
- **Stelsel Sleutels:** Stelsel sleutels word **bestuur deur spesifieke uitbreidings** en is nodig vir toegang tot webhook eindpunte wat deur interne komponente gebruik word. Voorbeelde sluit die Event Grid trigger en Durable Functions in, wat stelsel sleutels gebruik om veilig met hul onderskeie API's te kommunikeer.
- **Stelsel Sleutels:** Stelsel sleutels word **deur spesifieke uitbreidings bestuur** en is nodig vir toegang tot webhook eindpunte wat deur interne komponente gebruik word. Voorbeelde sluit die Event Grid trigger en Durable Functions in, wat stelsel sleutels gebruik om veilig met hul onderskeie API's te kommunikeer.
> [!TIP]
> Voorbeeld om toegang tot 'n funksie API eindpunt te verkry met 'n sleutel:
@@ -96,10 +96,10 @@ Wanneer 'n eindpunt binne 'n funksie geskep word met 'n **HTTP trigger** is dit
### Basiese Verifikasie
Net soos in App Services, ondersteun Functions ook basiese verifikasie om te verbind met **SCM** en **FTP** om kode te ontplooi met 'n **gebruikersnaam en wagwoord in 'n URL** wat deur Azure verskaf word. Meer inligting daaroor in:
Net soos in App Services, ondersteun Funksies ook basiese verifikasie om te verbind met **SCM** en **FTP** om kode te ontplooi met 'n **gebruikersnaam en wagwoord in 'n URL** wat deur Azure verskaf word. Meer inligting daaroor in:
{{#ref}}
az-app-service.md
az-app-services.md
{{#endref}}
### Github Gebaseerde Ontplooiings
@@ -199,7 +199,7 @@ Boonop, 'n **Gemanagte Identiteit** word ook geskep sodat die Github Aksie van d
### Hou gebaseerde Ontplooiings
Nie al die planne laat toe om houers te ontplooi nie, maar vir diegene wat dit doen, sal die konfigurasie die URL van die houer bevat. In die API sal die **`linuxFxVersion`** instelling iets soos hê: `DOCKER|mcr.microsoft.com/...`, terwyl die webkonsol, die konfigurasie die **beeldinstellings** sal wys.
Nie al die planne laat toe om houers te ontplooi nie, maar vir diegene wat dit doen, sal die konfigurasie die URL van die houer bevat. In die API sal die **`linuxFxVersion`** instelling iets soos hê: `DOCKER|mcr.microsoft.com/...`, terwyl die webkonsol se konfigurasie die **beeldinstellings** sal wys.
Boonop sal **geen bronkode in die stoor** rekening wat met die funksie verband hou, gestoor word nie, aangesien dit nie nodig is nie.