# DO - Basiese Inligting

{{#include ../../banners/hacktricks-training.md}}

## Basiese Inligting

DigitalOcean is 'n **cloud computing platform wat gebruikers 'n verskeidenheid dienste bied**, insluitend virtuele privaat bedieners (VPS) en ander hulpbronne vir die bou, ontplooiing en bestuur van toepassings. **DigitalOcean se dienste is ontwerp om eenvoudig en maklik om te gebruik te wees**, wat hulle **gewild maak onder ontwikkelaars en klein besighede**.

Sommige van die sleutelkenmerke van DigitalOcean sluit in:

- **Virtuele privaat bedieners (VPS)**: DigitalOcean bied VPS aan wat gebruik kan word om webwerwe en toepassings te huisves. Hierdie VPS is bekend vir hul eenvoud en gebruiksgemak, en kan vinnig en maklik ontplooi word met 'n verskeidenheid voorafgeboude "droplets" of pasgemaakte konfigurasies.
- **Berging**: DigitalOcean bied 'n reeks bergingsopsies aan, insluitend objekberging, blokberging en bestuurde databasisse, wat gebruik kan word om data vir webwerwe en toepassings te stoor en te bestuur.
- **Ontwikkeling en ontplooiing gereedskap**: DigitalOcean bied 'n reeks gereedskap aan wat gebruik kan word om toepassings te bou, ontplooi en bestuur, insluitend API's en voorafgeboude droplets.
- **Sekuriteit**: DigitalOcean plaas 'n sterk klem op sekuriteit, en bied 'n reeks gereedskap en kenmerke om gebruikers te help om hul data en toepassings veilig te hou. Dit sluit versleuteling, rugsteun en ander sekuriteitsmaatreëls in.

Algeheel is DigitalOcean 'n cloud computing platform wat gebruikers die gereedskap en hulpbronne bied wat hulle nodig het om toepassings in die wolk te bou, ontplooi en bestuur. Sy dienste is ontwerp om eenvoudig en maklik om te gebruik te wees, wat hulle gewild maak onder ontwikkelaars en klein besighede.

### Hoofverskille van AWS

Een van die hoofverskille tussen DigitalOcean en AWS is die **reeks dienste wat hulle bied**. **DigitalOcean fokus op die verskaffing van eenvoudige** en maklik om te gebruik virtuele privaat bedieners (VPS), berging, en ontwikkeling en ontplooiing gereedskap. **AWS**, aan die ander kant, bied 'n **veel breër reeks dienste**, insluitend VPS, berging, databasisse, masjienleer, analise, en baie ander dienste. Dit beteken dat AWS meer geskik is vir komplekse, ondernemingsvlak toepassings, terwyl DigitalOcean meer geskik is vir klein besighede en ontwikkelaars.

Nog 'n sleutelverskil tussen die twee platforms is die **prysstruktuur**. **DigitalOcean se pryse is oor die algemeen meer reguit en makliker** om te verstaan as AWS, met 'n reeks prysplanne wat gebaseer is op die aantal droplets en ander hulpbronne wat gebruik word. AWS, aan die ander kant, het 'n meer komplekse prysstruktuur wat gebaseer is op 'n verskeidenheid faktore, insluitend die tipe en hoeveelheid hulpbronne wat gebruik word. Dit kan dit moeiliker maak om koste te voorspel wanneer AWS gebruik word.

## Hiërargie

### Gebruiker

'n Gebruiker is wat jy verwag, 'n gebruiker. Hy kan **Spanne skep** en **'n lid van verskillende spanne wees.**

### **Span**

'n Span is 'n groep **gebruikers**. Wanneer 'n gebruiker 'n span skep, het hy die **rol eienaar op daardie span** en hy stel aanvanklik die **faktuurinligting op**. **Ander** gebruikers kan dan **uitgenooi** word na die span.

Binne die span kan daar verskeie **projekte** wees. 'n Projek is net 'n **stel dienste wat saamloop**. Dit kan gebruik word om **verskillende infrastruktuurstadiums te skei**, soos prod, staging, dev...

### Projek

Soos verduidelik, is 'n projek net 'n houer vir al die **dienste** (droplets, spaces, databasisse, kubernetes...) **wat saam binne dit loop**.\
'n Digital Ocean projek is baie soortgelyk aan 'n GCP projek sonder IAM.

## Toestemmings

### Span

Basies het alle lede van 'n span **toegang tot die DO hulpbronne in al die projekte wat binne die span geskep is (met meer of minder voorregte).**

### Rolle

Elke **gebruiker binne 'n span** kan **een** van die volgende drie **rolle** binne dit hê:

| Rol        | Gedeelde Hulpbronne | Faktuurinligting | Spaninstellings |
| ---------- | ------------------- | ---------------- | ---------------- |
| **Eienaar**| Volle toegang       | Volle toegang    | Volle toegang    |
| **Faktuur**| Geen toegang        | Volle toegang    | Geen toegang     |
| **Lid**    | Volle toegang       | Geen toegang      | Geen toegang     |

**Eienaar** en **lid kan die gebruikers lys** en hul **rolle** nagaan (faktuur kan nie).

## Toegang

### Gebruikersnaam + wagwoord (MFA)

Soos in die meeste platforms, om toegang tot die GUI te verkry, kan jy 'n stel **geldige gebruikersnaam en wagwoord** gebruik om **toegang** tot die cloud **hulpbronne** te verkry. Sodra jy ingeteken is, kan jy **al die spanne waarvan jy deel is** sien in [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\
En jy kan al jou aktiwiteit in [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity) sien.

**MFA** kan **geaktiveer** word in 'n gebruiker en **afgedwing** word vir alle gebruikers in 'n **span** om toegang tot die span te verkry.

### API sleutels

Om die API te gebruik, kan gebruikers **API sleutels genereer**. Hierdie sal altyd met Lees toestemmings kom, maar **Skryf toestemming is opsioneel**.\
Die API sleutels lyk soos volg:
```
dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836
```
Die cli-gereedskap is [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Begin dit (jy het 'n token nodig) met:
```bash
doctl auth init # Asks for the token
doctl auth init --context my-context # Login with a different token
doctl auth list # List accounts
```
Standaard sal hierdie token in duidelike teks in Mac geskryf word in `/Users/<username>/Library/Application Support/doctl/config.yaml`.

### Spaces toegang sleutels

Dit is sleutels wat **toegang tot die Spaces** gee (soos S3 in AWS of Storage in GCP).

Hulle bestaan uit 'n **naam**, 'n **keyid** en 'n **secret**. 'n Voorbeeld kan wees:
```
Name: key-example
Keyid: DO00ZW4FABSGZHAABGFX
Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM
```
### OAuth Toepassing

OAuth toepassings kan **toegang oor Digital Ocean** verkry.

Dit is moontlik om **OAuth toepassings te skep** in [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) en al **toegelate OAuth toepassings** te kontroleer in [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access).

### SSH Sleutels

Dit is moontlik om **SSH sleutels aan 'n Digital Ocean Span** toe te voeg vanaf die **konsol** in [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security).

Op hierdie manier, as jy 'n **nuwe droplet skep, sal die SSH sleutel** daarop gestel word en jy sal in staat wees om te **log in via SSH** sonder wagwoord (let daarop dat nuut [opgelaaide SSH sleutels nie in reeds bestaande droplets gestel word nie weens veiligheidsredes](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)).

### Funksies Verifikasie Token

Die manier **om 'n funksie via REST API** te aktiveer (altyd geaktiveer, dit is die metode wat die cli gebruik) is deur 'n versoek met 'n **verifikasie token** te aktiveer soos:
```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="
```
## Logs

### User logs

Die **logs van 'n gebruiker** kan gevind word in [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity)

### Team logs

Die **logs van 'n span** kan gevind word in [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security)

## References

- [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}}
