# DO - Grundinformationen {{#include ../../banners/hacktricks-training.md}} ## Grundinformationen DigitalOcean ist eine **Cloud-Computing-Plattform, die Benutzern eine Vielzahl von Diensten bietet**, einschließlich virtueller privater Server (VPS) und anderer Ressourcen zum Erstellen, Bereitstellen und Verwalten von Anwendungen. **Die Dienste von DigitalOcean sind so konzipiert, dass sie einfach und benutzerfreundlich sind**, was sie **bei Entwicklern und kleinen Unternehmen beliebt macht**. Einige der Hauptmerkmale von DigitalOcean sind: - **Virtuelle private Server (VPS)**: DigitalOcean bietet VPS an, die zum Hosten von Websites und Anwendungen verwendet werden können. Diese VPS sind bekannt für ihre Einfachheit und Benutzerfreundlichkeit und können schnell und einfach mit einer Vielzahl von vorgefertigten "Droplets" oder benutzerdefinierten Konfigurationen bereitgestellt werden. - **Speicher**: DigitalOcean bietet eine Reihe von Speicheroptionen, einschließlich Objektspeicher, Blockspeicher und verwalteten Datenbanken, die zum Speichern und Verwalten von Daten für Websites und Anwendungen verwendet werden können. - **Entwicklungs- und Bereitstellungstools**: DigitalOcean bietet eine Reihe von Tools, die zum Erstellen, Bereitstellen und Verwalten von Anwendungen verwendet werden können, einschließlich APIs und vorgefertigten Droplets. - **Sicherheit**: DigitalOcean legt großen Wert auf Sicherheit und bietet eine Reihe von Tools und Funktionen, um Benutzern zu helfen, ihre Daten und Anwendungen sicher zu halten. Dazu gehören Verschlüsselung, Backups und andere Sicherheitsmaßnahmen. Insgesamt ist DigitalOcean eine Cloud-Computing-Plattform, die Benutzern die Werkzeuge und Ressourcen bietet, die sie benötigen, um Anwendungen in der Cloud zu erstellen, bereitzustellen und zu verwalten. Ihre Dienste sind so konzipiert, dass sie einfach und benutzerfreundlich sind, was sie bei Entwicklern und kleinen Unternehmen beliebt macht. ### Hauptunterschiede zu AWS Einer der Hauptunterschiede zwischen DigitalOcean und AWS ist die **Bandbreite der angebotenen Dienste**. **DigitalOcean konzentriert sich darauf, einfache** und benutzerfreundliche virtuelle private Server (VPS), Speicher und Entwicklungs- und Bereitstellungstools anzubieten. **AWS** hingegen bietet eine **deutlich breitere Palette von Diensten** an, einschließlich VPS, Speicher, Datenbanken, maschinelles Lernen, Analytik und viele andere Dienste. Das bedeutet, dass AWS besser für komplexe, unternehmensweite Anwendungen geeignet ist, während DigitalOcean besser für kleine Unternehmen und Entwickler geeignet ist. Ein weiterer wichtiger Unterschied zwischen den beiden Plattformen ist die **Preisstruktur**. **Die Preisgestaltung von DigitalOcean ist im Allgemeinen einfacher und leichter** zu verstehen als die von AWS, mit einer Reihe von Preisplänen, die auf der Anzahl der verwendeten Droplets und anderen Ressourcen basieren. AWS hingegen hat eine komplexere Preisstruktur, die auf einer Vielzahl von Faktoren basiert, einschließlich der Art und Menge der verwendeten Ressourcen. Dies kann es schwieriger machen, die Kosten bei der Nutzung von AWS vorherzusagen. ## Hierarchie ### Benutzer Ein Benutzer ist das, was Sie erwarten, ein Benutzer. Er kann **Teams erstellen** und **Mitglied verschiedener Teams sein.** ### **Team** Ein Team ist eine Gruppe von **Benutzern**. Wenn ein Benutzer ein Team erstellt, hat er die **Rolle des Eigentümers in diesem Team** und richtet zunächst **die Abrechnungsinformationen ein**. **Andere** Benutzer können dann **in das Team eingeladen** werden. Innerhalb des Teams kann es mehrere **Projekte** geben. Ein Projekt ist einfach ein **Set von Diensten, die** laufen. Es kann verwendet werden, um **verschiedene Infrastrukturphasen zu trennen**, wie Prod, Staging, Dev... ### Projekt Wie erklärt, ist ein Projekt einfach ein Container für alle **Dienste** (Droplets, Spaces, Datenbanken, Kubernetes...), die **gemeinsam darin laufen**.\ Ein Digital Ocean-Projekt ist sehr ähnlich zu einem GCP-Projekt ohne IAM. ## Berechtigungen ### Team Grundsätzlich haben alle Mitglieder eines Teams **Zugriff auf die DO-Ressourcen in allen Projekten, die innerhalb des Teams erstellt wurden (mit mehr oder weniger Berechtigungen).** ### Rollen Jeder **Benutzer innerhalb eines Teams** kann **eine** der folgenden drei **Rollen** innerhalb davon haben: | Rolle | Geteilte Ressourcen | Abrechnungsinformationen | Teameinstellungen | | ----------- | ------------------- | ----------------------- | ----------------- | | **Eigentümer** | Vollzugriff | Vollzugriff | Vollzugriff | | **Abrechner** | Kein Zugriff | Vollzugriff | Kein Zugriff | | **Mitglied** | Vollzugriff | Kein Zugriff | Kein Zugriff | **Eigentümer** und **Mitglied können die Benutzer auflisten** und ihre **Rollen** überprüfen (Abrechner kann das nicht). ## Zugriff ### Benutzername + Passwort (MFA) Wie in den meisten Plattformen können Sie, um auf die GUI zuzugreifen, ein Set von **gültigem Benutzernamen und Passwort** verwenden, um auf die Cloud-**Ressourcen** zuzugreifen. Nach dem Einloggen können Sie **alle Teams, zu denen Sie gehören**, unter [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile) sehen.\ Und Sie können alle Ihre Aktivitäten unter [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity) sehen. **MFA** kann für einen Benutzer **aktiviert** und für alle Benutzer in einem **Team** durchgesetzt werden, um auf das Team zuzugreifen. ### API-Schlüssel Um die API zu nutzen, können Benutzer **API-Schlüssel generieren**. Diese haben immer Lese-Berechtigungen, aber **Schreibberechtigungen sind optional**.\ Die API-Schlüssel sehen so aus: ``` dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836 ``` Das CLI-Tool ist [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Initialisieren Sie es (Sie benötigen ein Token) mit: ```bash doctl auth init # Asks for the token doctl auth init --context my-context # Login with a different token doctl auth list # List accounts ``` Standardmäßig wird dieses Token im Klartext auf dem Mac in `/Users//Library/Application Support/doctl/config.yaml` geschrieben. ### Spaces-Zugriffsschlüssel Dies sind Schlüssel, die **Zugriff auf die Spaces** gewähren (wie S3 in AWS oder Storage in GCP). Sie bestehen aus einem **Namen**, einer **KeyID** und einem **Geheimnis**. Ein Beispiel könnte sein: ``` Name: key-example Keyid: DO00ZW4FABSGZHAABGFX Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM ``` ### OAuth-Anwendung OAuth-Anwendungen können **Zugriff über Digital Ocean** erhalten. Es ist möglich, **OAuth-Anwendungen zu erstellen** in [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) und alle **erlaubten OAuth-Anwendungen** in [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access) zu überprüfen. ### SSH-Schlüssel Es ist möglich, **SSH-Schlüssel zu einem Digital Ocean Team** über die **Konsole** in [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security) hinzuzufügen. Auf diese Weise wird, wenn Sie einen **neuen Droplet erstellen, der SSH-Schlüssel darauf gesetzt** und Sie können sich **via SSH** ohne Passwort anmelden (beachten Sie, dass neu [hochgeladene SSH-Schlüssel aus Sicherheitsgründen nicht in bereits vorhandenen Droplets gesetzt werden](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)). ### Funktionen-Authentifizierungstoken Der Weg, **eine Funktion über die REST-API auszulösen** (immer aktiviert, es ist die Methode, die die CLI verwendet), besteht darin, eine Anfrage mit einem **Authentifizierungstoken** wie: auszulösen. ```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=" ``` ## Protokolle ### Benutzerprotokolle Die **Protokolle eines Benutzers** sind zu finden unter [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity) ### Teamprotokolle Die **Protokolle eines Teams** sind zu finden unter [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security) ## Referenzen - [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}}