このページで決めること:EmDashの管理画面へのログインを、どの方式で守るか

決める前に知っておくこと

EmDashの管理画面(/_emdash/admin)には、次の3つのログイン方式があります。

方式 仕組み
パスキー 既定の方式です。パスワードを使わず、端末やパスワード管理ツールに保存した認証情報で、指紋・顔認証・PINなどを使ってログインします。認証情報はサイトのドメインに結び付くため、フィッシングに強い方式です
ログインプロバイダー GitHubとGoogleのログインがEmDashに含まれています。パスキーに追加する形で使います。Atmosphere(AT Protocol)のログインは別パッケージで追加します
Cloudflare Access Cloudflareの手前で、組織のIDプロバイダーでユーザーを認証します。本番環境では唯一の認証方式になり、パスキー、ログインプロバイダー、マジックリンク、招待、自己登録は使えなくなります。ローカルでの開発中はパスキーに戻ります

どの方式でも、EmDashのユーザーにはロール(閲覧者・寄稿者・投稿者・編集者・管理者の5段階)が付き、できる操作が決まります。最初のユーザーは必ず管理者になります。

パスキーをすべて失った場合は、別の管理者にマジックリンクを送ってもらって復旧します。マジックリンクにはメール送信の設定が必要です。管理者が1人だけで、メールも設定していない場合は、データベースを直接操作して認証を戻すことになります。

公式の推奨

  • パスキーは、ノートパソコンとスマートフォンなど、複数の端末に登録しておきます。(公式「認証」)
  • 招待やマジックリンクを使う前に、メール送信の設定をします。本番のWorkersには既定のメール送信の仕組みがありません。(公式「認証」「Cloudflareへのデプロイ」)
  • Cloudflare Accessを使う場合、Accessのアプリケーションとポリシーは /_emdash/* 全体にかけます。/_emdash/admin/* だけを守ると、REST APIにEmDashが必要とするJWTが届きません。(公式「認証」)
  • AccessのアプリケーションのAudience(AUD)タグは、astro.config.mjs に書かず、CF_ACCESS_AUDIENCE などの実行時の環境変数に入れ、pnpm wrangler secret put で登録します。(公式「認証」「Cloudflareへのデプロイ」)

選択肢の比較

A. パスキーのみ B. パスキー+ログインプロバイダー(GitHub・Google) C. Cloudflare Access
概要 EmDashの既定のまま、パスキーでログインする パスキーに加え、GitHubやGoogleのアカウントでもログインできるようにする Cloudflare Accessで /_emdash/* を守り、IDプロバイダーで認証したユーザーをEmDashのユーザーに対応させる
向いている場合 少人数で運営し、各自がパスキーを管理できる 利用者がGitHubやGoogleのアカウントを持っている 組織のIDプロバイダーでまとめて管理したい。グループごとにロールを割り当てたい
注意点 パスキーを失ったときの復旧にメール送信の設定が要る 各サービスでOAuthアプリを作り、クライアントIDとシークレットを環境変数で渡す 本番ではEmDashのログイン画面、パスキー、招待が使えなくなる。自動処理などIDプロバイダーでログインしない利用者のアクセス方法を別に考える必要がある
費用と手間 追加の費用なし。設定も最小 追加の費用なし(各サービスのOAuthアプリの設定が必要) Cloudflare Zero Trustの料金による(Cloudflare公式は、無料プランと有料プランがあると説明している)。Accessのアプリケーションとポリシーの設定が必要
根拠にした公式ページ 認証 認証、シークレットとキーの管理 認証、Cloudflareへのデプロイ、Cloudflare「Cloudflare Access」

別の選択肢が合う条件

組織のIDプロバイダーでユーザーをまとめて管理し、グループごとにロールを割り当てたい場合は、Cが合います。その場合は、本番で招待が使えなくなることと、自動処理からのアクセス方法を別に確かめる必要があることに注意します。寄稿者が多く、各自のGitHubやGoogleのアカウントでログインさせたい場合はBが合います。Bでは、提供元が確認済みのメールアドレスを返したときだけ、既存のEmDashのユーザーに自動で結び付きます。

根拠にした公式ページ

  • 認証(原文:https://docs.emdashcms.com/guides/authentication/)
  • Cloudflareへのデプロイ(原文:https://docs.emdashcms.com/deployment/cloudflare/)
  • シークレットとキーの管理(原文:https://docs.emdashcms.com/deployment/secrets/)
  • Cloudflare WorkersでのCloudflare Access(https://developers.cloudflare.com/workers/configuration/cloudflare-access/)
  • Cloudflare Accessのポリシー(サービストークン)(https://developers.cloudflare.com/cloudflare-one/access-controls/policies/)
  • Cloudflare Zero Trust(プラン)(https://developers.cloudflare.com/cloudflare-one/)
  • MCPサーバーリファレンス(原文:https://docs.emdashcms.com/reference/mcp-server/)