# DO - 基本情報 {{#include ../../banners/hacktricks-training.md}} ## 基本情報 DigitalOceanは、**ユーザーにさまざまなサービスを提供するクラウドコンピューティングプラットフォーム**です。これには、仮想プライベートサーバー(VPS)や、アプリケーションの構築、展開、管理のためのその他のリソースが含まれます。**DigitalOceanのサービスはシンプルで使いやすいように設計されており、**開発者や小規模ビジネスの間で**人気があります**。 DigitalOceanの主な機能には以下が含まれます: - **仮想プライベートサーバー(VPS)**:DigitalOceanは、ウェブサイトやアプリケーションをホストするために使用できるVPSを提供しています。これらのVPSは、そのシンプルさと使いやすさで知られており、さまざまな事前構築された「ドロップレット」やカスタム構成を使用して迅速かつ簡単に展開できます。 - **ストレージ**:DigitalOceanは、オブジェクトストレージ、ブロックストレージ、管理されたデータベースなど、ウェブサイトやアプリケーションのデータを保存および管理するために使用できるさまざまなストレージオプションを提供しています。 - **開発および展開ツール**:DigitalOceanは、APIや事前構築されたドロップレットを含む、アプリケーションを構築、展開、管理するために使用できるさまざまなツールを提供しています。 - **セキュリティ**:DigitalOceanはセキュリティを重視しており、ユーザーがデータやアプリケーションを安全に保つためのさまざまなツールや機能を提供しています。これには、暗号化、バックアップ、その他のセキュリティ対策が含まれます。 全体として、DigitalOceanは、ユーザーがクラウドでアプリケーションを構築、展開、管理するために必要なツールとリソースを提供するクラウドコンピューティングプラットフォームです。そのサービスはシンプルで使いやすいように設計されており、開発者や小規模ビジネスの間で人気があります。 ### AWSとの主な違い DigitalOceanとAWSの主な違いの1つは、**提供するサービスの範囲**です。**DigitalOceanはシンプルで**使いやすい仮想プライベートサーバー(VPS)、ストレージ、開発および展開ツールの提供に焦点を当てています。**AWS**は、VPS、ストレージ、データベース、機械学習、分析、その他多くのサービスを含む**はるかに広範なサービスを提供しています**。これは、AWSが複雑なエンタープライズレベルのアプリケーションにより適している一方で、DigitalOceanは小規模ビジネスや開発者により適していることを意味します。 2つのプラットフォームのもう1つの重要な違いは、**価格構造**です。**DigitalOceanの価格は一般的により明確で理解しやすい**もので、使用するドロップレットやその他のリソースの数に基づいたさまざまな価格プランがあります。一方、AWSは、使用するリソースの種類や量など、さまざまな要因に基づいたより複雑な価格構造を持っています。これにより、AWSを使用する際のコスト予測が難しくなることがあります。 ## 階層 ### ユーザー ユーザーは、あなたが期待する通りのユーザーです。彼は**チームを作成**し、**異なるチームのメンバーになることができます。** ### **チーム** チームは**ユーザーのグループ**です。ユーザーがチームを作成すると、彼はそのチームの**オーナーの役割を持ち**、最初に**請求情報を設定します**。**他の**ユーザーはそのチームに**招待される**ことができます。 チーム内にはいくつかの**プロジェクト**が存在する場合があります。プロジェクトは単に**実行中のサービスのセット**です。これは、prod、staging、devなど、異なるインフラの段階を**分離するために使用できます**。 ### プロジェクト 前述のように、プロジェクトはすべての**サービス**(ドロップレット、スペース、データベース、Kubernetesなど)が**一緒に実行されるためのコンテナ**です。\ Digital Oceanのプロジェクトは、IAMなしのGCPプロジェクトに非常に似ています。 ## 権限 ### チーム 基本的に、チームのすべてのメンバーは、**チーム内で作成されたすべてのプロジェクトのDOリソースにアクセスできます(特権の有無にかかわらず)。** ### 役割 チーム内の各**ユーザー**は、次の3つの**役割**のいずれかを持つことができます: | 役割 | 共有リソース | 請求情報 | チーム設定 | | ---------- | ------------ | --------- | ---------- | | **オーナー** | フルアクセス | フルアクセス | フルアクセス | | **ビラー** | アクセスなし | フルアクセス | アクセスなし | | **メンバー** | フルアクセス | アクセスなし | アクセスなし | **オーナー**と**メンバーはユーザーをリストし**、その**役割を確認できます**(ビラーはできません)。 ## アクセス ### ユーザー名 + パスワード(MFA) ほとんどのプラットフォームと同様に、GUIにアクセスするには、**有効なユーザー名とパスワードのセット**を使用して**クラウドリソースにアクセス**できます。ログインすると、[https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile)で**自分が参加しているすべてのチーム**を見ることができます。\ また、[https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity)で自分のすべての活動を見ることができます。 **MFA**はユーザーに**有効化**でき、**チーム**内のすべてのユーザーに**強制**してチームにアクセスさせることができます。 ### APIキー APIを使用するために、ユーザーは**APIキーを生成**できます。これらは常に読み取り権限が付与されますが、**書き込み権限はオプションです**。\ APIキーは次のようになります: ``` dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836 ``` CLIツールは[**doctl**](https://github.com/digitalocean/doctl#installing-doctl)です。これを初期化します(トークンが必要です): ```bash doctl auth init # Asks for the token doctl auth init --context my-context # Login with a different token doctl auth list # List accounts ``` デフォルトでは、このトークンはMacの`/Users//Library/Application Support/doctl/config.yaml`に平文で書き込まれます。 ### スペースアクセスキー これらは**スペースへのアクセス**を提供するキーです(AWSのS3やGCPのStorageのように)。 それらは**名前**、**keyid**、および**秘密**で構成されています。例としては次のようになります: ``` Name: key-example Keyid: DO00ZW4FABSGZHAABGFX Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM ``` ### OAuthアプリケーション OAuthアプリケーションは**Digital Oceanへのアクセスを許可**されることがあります。 [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications)で**OAuthアプリケーションを作成**し、[https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access)で全ての**許可されたOAuthアプリケーション**を確認することができます。 ### SSHキー [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security)の**コンソール**から**Digital OceanチームにSSHキーを追加**することができます。 このようにして、**新しいドロップレットを作成すると、SSHキーが設定**され、パスワードなしで**SSH経由でログイン**できるようになります(新しく[アップロードされたSSHキーはセキュリティ上の理由から既存のドロップレットには設定されません](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/))。 ### 関数認証トークン **REST API経由で関数をトリガーする方法**(常に有効で、cliが使用する方法)は、**認証トークン**を使ってリクエストをトリガーすることです。 ```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=" ``` ## ログ ### ユーザーログ **ユーザーのログ**は[**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity)にあります。 ### チームログ **チームのログ**は[**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security)にあります。 ## 参考文献 - [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}}