DO - Functions

Support HackTricks

Informazioni di base

DigitalOcean Functions, noto anche come "DO Functions", è una piattaforma di computing serverless che ti consente di eseguire codice senza doverti preoccupare dell'infrastruttura sottostante. Con DO Functions, puoi scrivere e distribuire il tuo codice come "funzioni" che possono essere attivate tramite API, richieste HTTP (se abilitate) o cron. Queste funzioni vengono eseguite in un ambiente completamente gestito, quindi non devi preoccuparti di scalabilità, sicurezza o manutenzione.

In DO, per creare una funzione devi prima creare uno spazio dei nomi che raggrupperà le funzioni. All'interno dello spazio dei nomi puoi quindi creare una funzione.

Attivatori

Il modo per attivare una funzione tramite REST API (sempre abilitato, è il metodo utilizzato dal cli) è attivare una richiesta con un token di autenticazione come:

curl -X POST "https://faas-lon1-129376a7.doserverless.co/api/v1/namespaces/fn-c100c012-65bf-4040-1230-2183764b7c23/actions/functionname?blocking=true&result=true" \
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="

Per vedere come lo strumento cli doctl ottiene questo token (in modo da poterlo replicare), il seguente comando mostra l'intera traccia di rete:

doctl serverless connect --trace

Quando il trigger HTTP è abilitato, una funzione web può essere invocata attraverso questi metodi HTTP GET, POST, PUT, PATCH, DELETE, HEAD e OPTIONS.

Nelle funzioni DO, le variabili di ambiente non possono essere criptate (al momento della scrittura di questo documento). Non sono riuscito a trovare alcun modo per leggerle dalla CLI, ma dalla console è semplice.

Gli URL delle funzioni sembrano così: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumerazione

# Namespace
doctl serverless namespaces list

# Functions (need to connect to a namespace)
doctl serverless connect
doctl serverless functions list
doctl serverless functions invoke <func-name>
doctl serverless functions get <func-name>

# Logs of executions
doctl serverless activations list
doctl serverless activations get <activation-id> # Get all the info about execution
doctl serverless activations logs <activation-id> # get only the logs of execution
doctl serverless activations result <activation-id> # get only the response result of execution

# I couldn't find any way to get the env variables form the CLI

Non c'è un endpoint di metadata dal sandbox delle Funzioni.

Supporta HackTricks

Last updated