dosya CLIを安全に認証する

対話形式、標準入力、DOSYA_API_KEYでサインインし、アカウントと認証情報の優先順位を確認して、保存済みのアクセスを安全に無効化します。

最終確認日

スクリーンショットは英語版の画面です。

dosya CLIはdos_ APIキーで認証します。個人のターミナルでは入力内容が表示されない対話式プロンプトを使い、セットアップスクリプトでは標準入力にキーをパイプするか、自動化環境にDOSYA_API_KEYを渡してください。再利用可能なシークレットを--keyの直後に指定しないでください。シェルの履歴やプロセス一覧に露出する可能性があります。

このCLI用のキーを作成する

プロフィール → API(APIキー)を開き、API:APIキーを作成を選択して、このマシンまたは自動化ジョブ用の名前を付けてください。実行するコマンドに必要な最小限の権限を選んでください。

  • 読み取り専用は一覧表示とダウンロードができますが、アップロード、移動、削除はできません。
  • アップロードのみはファイルを追加できますが、保存済みファイルの一覧表示やダウンロードはできません。
  • フルアクセスはワークスペースのロール権限の範囲内で、コンテンツを読み取り変更するコマンドに対応します。

CLIはRESTエンドポイントを呼び出すため、プロトコルでREST APIを含めてください。ジョブに適している場合は、ワークスペースの固定、IP範囲、利用可能時間、利用制限、有効期限を追加してください。一度だけ表示される完全なトークンを保存してください。その後、キーの一覧にはプレフィックスだけが表示されます。

非表示の入力欄、標準入力、環境シークレットを使うdosya CLIの認証方法と、その後の識別情報の確認。
環境に合う認証情報の取得元を選び、`dosya whoami`で確認し、名前付きのAPIキーレコードから無効化できるようにしてください。スクリーンショットを原寸で開く。

手順

対話式コマンドを実行し、入力内容が表示されないプロンプトが現れたらキーを貼り付けてください。

dosya auth login
dosya whoami

サインインに成功するとAuthenticated as NAME (EMAIL)が表示されます。続いてdosya whoamiはアカウント名、メールアドレス、ユーザーID、ワークスペース数を表示し、dosya whoami --jsonはスクリプト用のアカウントオブジェクトを出力します。

CLIはトークンとAPIベースを~/.dosya/config.jsonに保存します。XDG_CONFIG_HOMEが設定されている場合は$XDG_CONFIG_HOME/dosya/config.jsonに保存します。Unix系システムではフォルダーはモード0700、ファイルは0600で作成されます。キーは保護されたファイル内に平文で保存されます。復元後の権限によりグループや他のユーザーが読み取れる場合、CLIは修正用のchmod 600コマンドと共に警告します。

argvに露出させずにセットアップスクリプトを認証する

キーを標準入力にパイプしてください。

printf '%s\n' "$MY_KEY" | dosya auth login --key -
dosya whoami --json

空のパイプはNo API key on stdin.で失敗します。--key -もDOSYA_API_KEYも指定しない非対話実行はCannot prompt for API key in non-interactive mode.で失敗します。dos_で始まらない値はネットワークリクエストの前に拒否されます。

CIや短命のコンテナーでは、キーを環境シークレットとして渡し、ディスクへの書き込みを省いてください。

export DOSYA_API_KEY="$MY_KEY"
dosya whoami --json

認証情報の優先順位は--key、DOSYA_API_KEY、保存済み設定の順です。APIエンドポイントの優先順位はDOSYA_API_BASE、設定ファイル、https://api.dosya.devの順です。想定外のアカウントや環境を調査する前に、どの取得元が優先されるか確認してください。

CLIのインストールごとに識別して無効化できる、別々の名前付き認証情報を表示するdosyaのProfileのAPIキー一覧。
各CLI認証情報にはマシンやジョブに合わせた名前を付けてください。無関係な連携を変更せずに正しいキーを無効化できます。スクリーンショットを原寸で開く。

よくある認証の失敗を解決する

CLI出力対処方法
Authentication failed: invalid API key.一度だけ表示される完全なトークンをコピーしてください。元の値を取得できない場合は新しいキーを作成してください。
Not authenticated. Run: dosya auth loginDOSYA_API_KEYを指定するか、サインインして認証情報を保存してください。
Authentication failed. Run 'dosya auth login' to re-authenticate.サーバーが401を返しました。有効期限や無効化を確認し、認証情報を更新してください。
Permission denied. You don't have access to this resource (403).キーは有効ですが、スコープ、プロトコル、接続元の条件、ワークスペースの固定、または現在のロールによって操作が拒否されました。
ローカルでは使えるキーがCIでは使えない注入されたキー、DOSYA_API_BASE、接続元のIP許可リスト、利用可能時間のタイムゾーン、選択したワークスペースのメンバーシップを比較してください。

終了コード3は認証の失敗、5は有効な認証情報への権限拒否、4はネットワークの失敗、2はCLIの使い方が無効であることを示します。自動処理では終了コード5に対して繰り返しサインインし直さないでください。

サインアウトまたはキーを無効化する

dosya auth logoutはローカルの設定ファイルのみを削除します。APIキーは有効期限が切れるか無効化されるまで、他の場所では引き続き使えます。

dosya auth logout

サーバーに保存されたキーを破棄してからローカルファイルを消去するには、次を実行してください。

dosya auth logout --revoke

サーバー側の無効化は元に戻せません。キーを削除し、キャッシュの無効化を要求します。キャッシュが消去されるか期限切れになるまで、キャッシュ済みの認証が受け入れられる場合があります。アクセスが遮断されたと判断する前に、古いクライアントを停止し、拒否されることを確認してください。無効化に失敗した場合、コマンドを再試行できるようCLIはローカルの認証情報を保持します。401は保存済みキーがすでに無効であることを示すため、CLIは安全に消去します。環境変数のみのDOSYA_API_KEYはサインアウトでは管理されません。その認証情報は**プロフィール → API(APIキー)**から無効化してください。

確認できる結果

dosya whoamiはキーを表示せずに目的のアカウントを識別します。認証情報の取得元とエンドポイントが明確になり、保存ファイルを使う場合はオーナーのみが読み取れます。このCLIの使用を終了するときに、キーを個別に無効化できます。

関連ガイド

この記事は役に立ちましたか?

評価の結果を読み込んでいます…

投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。

質問と回答

このガイドの手順について質問できます。質問は確認後に公開されます。

公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。

質問を読み込んでいます…

    dosyaアカウントにサインインすると、質問を投稿できます。

    やり直す前に結果を確認

    操作をもう一度確認する必要があるときは、次の共通の確認事項をご利用ください。