# DO - Informazioni di Base {{#include ../../banners/hacktricks-training.md}} ## Informazioni di Base DigitalOcean è una **piattaforma di cloud computing che fornisce agli utenti una varietà di servizi**, inclusi server virtuali privati (VPS) e altre risorse per costruire, distribuire e gestire applicazioni. **I servizi di DigitalOcean sono progettati per essere semplici e facili da usare**, rendendoli **popolari tra sviluppatori e piccole imprese**. Alcune delle caratteristiche principali di DigitalOcean includono: - **Server virtuali privati (VPS)**: DigitalOcean fornisce VPS che possono essere utilizzati per ospitare siti web e applicazioni. Questi VPS sono noti per la loro semplicità e facilità d'uso, e possono essere rapidamente e facilmente distribuiti utilizzando una varietà di "droplets" pre-costruiti o configurazioni personalizzate. - **Storage**: DigitalOcean offre una gamma di opzioni di storage, inclusi storage a oggetti, storage a blocchi e database gestiti, che possono essere utilizzati per memorizzare e gestire dati per siti web e applicazioni. - **Strumenti di sviluppo e distribuzione**: DigitalOcean fornisce una gamma di strumenti che possono essere utilizzati per costruire, distribuire e gestire applicazioni, inclusi API e droplets pre-costruiti. - **Sicurezza**: DigitalOcean pone una forte enfasi sulla sicurezza e offre una gamma di strumenti e funzionalità per aiutare gli utenti a mantenere i propri dati e applicazioni al sicuro. Questo include crittografia, backup e altre misure di sicurezza. In generale, DigitalOcean è una piattaforma di cloud computing che fornisce agli utenti gli strumenti e le risorse di cui hanno bisogno per costruire, distribuire e gestire applicazioni nel cloud. I suoi servizi sono progettati per essere semplici e facili da usare, rendendoli popolari tra sviluppatori e piccole imprese. ### Principali Differenze da AWS Una delle principali differenze tra DigitalOcean e AWS è la **gamma di servizi offerti**. **DigitalOcean si concentra sulla fornitura di server virtuali privati (VPS)** semplici e facili da usare, storage e strumenti di sviluppo e distribuzione. **AWS**, d'altra parte, offre una **gamma di servizi molto più ampia**, inclusi VPS, storage, database, machine learning, analisi e molti altri servizi. Questo significa che AWS è più adatto per applicazioni complesse a livello enterprise, mentre DigitalOcean è più adatto per piccole imprese e sviluppatori. Un'altra differenza chiave tra le due piattaforme è la **struttura dei prezzi**. **I prezzi di DigitalOcean sono generalmente più chiari e facili** da comprendere rispetto a AWS, con una gamma di piani tariffari basati sul numero di droplets e altre risorse utilizzate. AWS, d'altra parte, ha una struttura dei prezzi più complessa basata su una varietà di fattori, inclusi il tipo e la quantità di risorse utilizzate. Questo può rendere più difficile prevedere i costi quando si utilizza AWS. ## Gerarchia ### Utente Un utente è ciò che ti aspetti, un utente. Può **creare Team** e **essere membro di diversi team.** ### **Team** Un team è un gruppo di **utenti**. Quando un utente crea un team, ha il **ruolo di proprietario di quel team** e inizialmente **imposta le informazioni di fatturazione**. **Altri** utenti possono quindi essere **invitati** nel team. All'interno del team possono esserci diversi **progetti**. Un progetto è semplicemente un **insieme di servizi in esecuzione**. Può essere utilizzato per **separare diverse fasi infrastrutturali**, come prod, staging, dev... ### Progetto Come spiegato, un progetto è semplicemente un contenitore per tutti i **servizi** (droplets, spaces, database, kubernetes...) **in esecuzione insieme al suo interno**.\ Un progetto di Digital Ocean è molto simile a un progetto GCP senza IAM. ## Permessi ### Team Fondamentalmente, tutti i membri di un team hanno **accesso alle risorse DO in tutti i progetti creati all'interno del team (con più o meno privilegi).** ### Ruoli Ogni **utente all'interno di un team** può avere **uno** dei seguenti tre **ruoli** al suo interno: | Ruolo | Risorse Condivise | Informazioni di Fatturazione | Impostazioni del Team | | ---------- | ----------------- | --------------------------- | --------------------- | | **Proprietario** | Accesso completo | Accesso completo | Accesso completo | | **Fatturatore** | Nessun accesso | Accesso completo | Nessun accesso | | **Membro** | Accesso completo | Nessun accesso | Nessun accesso | **Il Proprietario** e **il membro possono elencare gli utenti** e controllare i loro **ruoli** (il fatturatore non può). ## Accesso ### Nome utente + password (MFA) Come nella maggior parte delle piattaforme, per accedere alla GUI puoi utilizzare un insieme di **nome utente e password validi** per **accedere** alle **risorse** cloud. Una volta effettuato l'accesso, puoi vedere **tutti i team di cui fai parte** in [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\ E puoi vedere tutta la tua attività in [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity). **MFA** può essere **abilitato** per un utente e **imposto** per tutti gli utenti in un **team** per accedere al team. ### Chiavi API Per utilizzare l'API, gli utenti possono **generare chiavi API**. Queste avranno sempre permessi di lettura, ma **i permessi di scrittura sono opzionali**.\ Le chiavi API hanno questo aspetto: ``` dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836 ``` Lo strumento cli è [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Inizializzalo (hai bisogno di un token) con: ```bash doctl auth init # Asks for the token doctl auth init --context my-context # Login with a different token doctl auth list # List accounts ``` Per impostazione predefinita, questo token verrà scritto in chiaro su Mac in `/Users//Library/Application Support/doctl/config.yaml`. ### Chiavi di accesso agli Spaces Queste sono chiavi che danno **accesso agli Spaces** (come S3 in AWS o Storage in GCP). Sono composte da un **nome**, un **keyid** e un **secret**. Un esempio potrebbe essere: ``` Name: key-example Keyid: DO00ZW4FABSGZHAABGFX Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM ``` ### OAuth Application Le applicazioni OAuth possono essere concesse **accesso su Digital Ocean**. È possibile **creare applicazioni OAuth** in [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) e controllare tutte le **applicazioni OAuth consentite** in [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access). ### SSH Keys È possibile aggiungere **chiavi SSH a un Team di Digital Ocean** dalla **console** in [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security). In questo modo, se crei un **nuovo droplet, la chiave SSH sarà impostata** su di esso e potrai **accedere via SSH** senza password (nota che le [chiavi SSH caricate di recente non sono impostate nei droplet già esistenti per motivi di sicurezza](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)). ### Functions Authentication Token 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: ```bash 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=" ``` ## Log ### Log utente I **log di un utente** possono essere trovati in [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity) ### Log di squadra I **log di una squadra** possono essere trovati in [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security) ## Riferimenti - [https://docs.digitalocean.com/products/teams/how-to/manage-membership/](https://docs.digitalocean.com/products/teams/how-to/manage-membership/) {{#include ../../banners/hacktricks-training.md}}