# DO - Osnovne informacije {{#include ../../banners/hacktricks-training.md}} ## Osnovne informacije DigitalOcean je **platforma za cloud računarstvo koja korisnicima pruža razne usluge**, uključujući virtuelne privatne servere (VPS) i druge resurse za izgradnju, implementaciju i upravljanje aplikacijama. **Usluge DigitalOcean-a su dizajnirane da budu jednostavne i lake za korišćenje**, što ih čini **popularnim među programerima i malim preduzećima**. Neke od ključnih karakteristika DigitalOcean-a uključuju: - **Virtuelni privatni serveri (VPS)**: DigitalOcean pruža VPS koji se mogu koristiti za hostovanje veb sajtova i aplikacija. Ovi VPS su poznati po svojoj jednostavnosti i lakoći korišćenja, i mogu se brzo i lako implementirati koristeći razne unapred pripremljene "droplete" ili prilagođene konfiguracije. - **Skladištenje**: DigitalOcean nudi niz opcija za skladištenje, uključujući skladištenje objekata, blok skladištenje i upravljane baze podataka, koje se mogu koristiti za skladištenje i upravljanje podacima za veb sajtove i aplikacije. - **Alati za razvoj i implementaciju**: DigitalOcean pruža niz alata koji se mogu koristiti za izgradnju, implementaciju i upravljanje aplikacijama, uključujući API-je i unapred pripremljene droplete. - **Bezbednost**: DigitalOcean stavlja veliki naglasak na bezbednost i nudi niz alata i karakteristika koje pomažu korisnicima da drže svoje podatke i aplikacije sigurnim. Ovo uključuje enkripciju, rezervne kopije i druge mere bezbednosti. Sve u svemu, DigitalOcean je platforma za cloud računarstvo koja korisnicima pruža alate i resurse potrebne za izgradnju, implementaciju i upravljanje aplikacijama u oblaku. Njegove usluge su dizajnirane da budu jednostavne i lake za korišćenje, što ih čini popularnim među programerima i malim preduzećima. ### Glavne razlike u odnosu na AWS Jedna od glavnih razlika između DigitalOcean-a i AWS-a je **raspon usluga koje nude**. **DigitalOcean se fokusira na pružanje jednostavnih** i lakih za korišćenje virtuelnih privatnih servera (VPS), skladištenja i alata za razvoj i implementaciju. **AWS**, s druge strane, nudi **mnogo širi spektar usluga**, uključujući VPS, skladištenje, baze podataka, mašinsko učenje, analitiku i mnoge druge usluge. To znači da je AWS pogodniji za složene, aplikacije na nivou preduzeća, dok je DigitalOcean više prilagođen malim preduzećima i programerima. Još jedna ključna razlika između dve platforme je **struktura cena**. **Cene DigitalOcean-a su generalno jednostavnije i lakše** za razumevanje od AWS-a, sa nizom planova cena koji se zasnivaju na broju dropleta i drugih korišćenih resursa. AWS, s druge strane, ima složeniju strukturu cena koja se zasniva na raznim faktorima, uključujući tip i količinu korišćenih resursa. Ovo može otežati predviđanje troškova prilikom korišćenja AWS-a. ## Hijerarhija ### Korisnik Korisnik je ono što očekujete, korisnik. On može **kreirati timove** i **biti član različitih timova.** ### **Tim** Tim je grupa **korisnika**. Kada korisnik kreira tim, on ima **ulogu vlasnika tog tima** i inicijalno **postavlja informacije o naplati**. **Ostali** korisnici mogu biti **pozvani** u tim. Unutar tima može biti nekoliko **projekata**. Projekat je samo **set usluga koje rade**. Može se koristiti za **razdvajanje različitih faza infrastrukture**, kao što su prod, staging, dev... ### Projekat Kao što je objašnjeno, projekat je samo kontejner za sve **usluge** (droplete, prostore, baze podataka, kubernetes...) **koje rade zajedno unutar njega**.\ Digital Ocean projekat je vrlo sličan GCP projektu bez IAM-a. ## Dozvole ### Tim U suštini, svi članovi tima imaju **pristup DO resursima u svim projektima kreiranim unutar tima (sa više ili manje privilegija).** ### Uloge Svaki **korisnik unutar tima** može imati **jednu** od sledeće tri **uloge** unutar njega: | Uloga | Deljeni resursi | Informacije o naplati | Podešavanja tima | | ----------- | ---------------- | --------------------- | ----------------- | | **Vlasnik** | Potpun pristup | Potpun pristup | Potpun pristup | | **Naplata** | Nema pristup | Potpun pristup | Nema pristup | | **Član** | Potpun pristup | Nema pristup | Nema pristup | **Vlasnik** i **član mogu da navedu korisnike** i provere njihove **uloge** (naplata ne može). ## Pristup ### Korisničko ime + lozinka (MFA) Kao i na većini platformi, da biste pristupili GUI-u, možete koristiti set **važećeg korisničkog imena i lozinke** za **pristup** cloud **resursima**. Kada se prijavite, možete videti **sve timove kojima pripadate** na [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\ I možete videti sve svoje aktivnosti na [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity). **MFA** može biti **omogućena** za korisnika i **nametnuta** za sve korisnike u **timu** da pristupe timu. ### API ključevi Da bi koristili API, korisnici mogu **generisati API ključeve**. Ovi ključevi će uvek imati Read dozvole, ali **Write dozvole su opcione**.\ API ključevi izgledaju ovako: ``` dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836 ``` Alat za komandnu liniju je [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Inicijalizujte ga (potreban vam je token) sa: ```bash doctl auth init # Asks for the token doctl auth init --context my-context # Login with a different token doctl auth list # List accounts ``` Podrazumevano, ovaj token će biti zapisan u čistom tekstu na Mac-u u `/Users//Library/Application Support/doctl/config.yaml`. ### Ključevi za pristup Spaces Ovo su ključevi koji daju **pristup Spaces** (kao S3 u AWS-u ili Storage u GCP-u). Sastoje se od **imena**, **keyid** i **secret**. Primer bi mogao biti: ``` Name: key-example Keyid: DO00ZW4FABSGZHAABGFX Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM ``` ### OAuth aplikacija OAuth aplikacije mogu dobiti **pristup preko Digital Ocean**. Moguće je **napraviti OAuth aplikacije** na [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) i proveriti sve **dozvoljene OAuth aplikacije** na [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access). ### SSH ključevi Moguće je dodati **SSH ključeve u Digital Ocean tim** iz **konsole** na [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security). Na ovaj način, ako kreirate **novi droplet, SSH ključ će biti postavljen** na njemu i moći ćete da **se prijavite putem SSH** bez lozinke (napomena da novouploadovani [SSH ključevi nisu postavljeni na već postojeće droplete iz bezbednosnih razloga](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)). ### Token za autentifikaciju funkcija Način **da se pokrene funkcija putem REST API** (uvek omogućen, to je metoda koju koristi cli) je slanjem zahteva sa **tokenom za autentifikaciju** kao: ```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=" ``` ## Logovi ### Logovi korisnika **Logovi korisnika** mogu se pronaći na [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity) ### Logovi tima **Logovi tima** mogu se pronaći na [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security) ## Reference - [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}}