Notariumドキュメント
ドキュメントのバージョン: latest

認証

Notarium の認証は組み込みで、すべてメタデータデータベース上で完結します。外部 IdP も JWT も SMTP も使いません。モードは AUTH_MODE 変数で選び、そもそもログインを設けるかどうかもこれで決まります。

password モード(デフォルト)

デフォルトで安全 — 本格的なマルチユーザー認証です。

  • 初回起動。 まっさらなインスタンスでは、最初の訪問者が初回セットアップ画面からオーナーを作成します(ホスト管理者であり、かつ設定済みスペースのオーナー)。あらかじめ用意されたパスワードはありません。このアカウントを登録した時点で、セットアップは二度と開きません。
  • セッション。 ログインすると サーバーサイドセッション が作られます。JWT ではなく、データベース上の 1 行です。これは HttpOnly の nt_session クッキーに載り、スライディング方式で TTL 30 日、HTTPS の背後では Secure フラグが付きます。アクセスの取り消しは即時です。ユーザーの無効化やパスワード変更は、生きているセッションをその場で切断します。
  • メタデータデータベースが必要です。 デフォルトで用意されています — DATA_DIR 配下の SQLite で、設定は不要です。META_DB_URL に触れるのは外部 Postgres へ移行するときだけです。データベース を参照してください。

none モード

すべてにアクセスできる単一のプリンシパル。オペレーターがこのモードを意図的に有効化するのは、デスクトップ、ローカル開発、あるいは信頼済みのイントラネットのためです。認証ルートは 404 を返し、ログイン UI は存在せず、認証用のメタデータデータベースも不要です。

none インスタンスをネットワークに公開しないでください

none モードでは、ポートに到達できる者は誰でもすべてのデータに完全アクセスできます — エージェント向けの MCP エンドポイントも含めてです。隔離された、または信頼できるネットワークでのみ使用してください。

ロールとアクセス

データへのアクセスはスペースのメンバーシップによって付与され、ロールは 3 つあります。

ロール権限
readerスペース内のすべてを読む。
writerノートを編集する。
ownerメンバーシップを管理する。

ホスト管理者 フラグはユーザーとスペースの制御権を付与しますが、特定スペースの データを読む にはそのスペースのメンバーシップが依然として必要です。モデルの詳細は アクセスモデル を参照してください。

招待とパスワードリセット

Notarium に SMTP はありません — アカウントの最初の受け渡しは、管理者が手渡しで伝える ワンタイムリンク です。仕組みは 1 つ、用途は 2 つ。

  • 招待 — パスワードなしでユーザーを追加します。リンクの有効期間は 7 日です。
  • パスワードリセット — リンクの有効期間は 24 時間です。リセットを完了すると古いセッションは終了します。

トークンは URL フラグメント(/invite#<token>)に載るため、アクセスログには決して残りません。ユーザーが同時に持てるこの種のリンクは 1 つだけで、他人のパスワードを管理者が知ることは一切ありません。

エージェント向けトークン

AI エージェントは Authorization: Bearer ntp_… の形式の個人アクセストークン(PAT)で認証します。スコープは read または write で、任意で特定のスペースに絞り込めます。シークレットが表示されるのは 一度きり です。トークンの発行やその他の管理操作はセッション内でのみ可能なため、漏洩した PAT で権限を昇格させることはできません。詳細は エージェントを接続するセキュリティと可視性 を参照してください。

アクセスの復旧

リセットリンクを発行できるのは管理者だけなので、唯一の管理者がパスワードを失えばアクセスも失われることになります。その打開策が、メタデータデータベースに直接作用する 管理 CLI です。イメージに組み込まれたコマンドの一つなので、稼働中のコンテナに向けて短く呼び出せます。

docker compose exec notarium admin create-admin <user> --random

# 素の docker run の場合:
docker exec -it notarium admin create-admin <user> --random

サーバーを止める必要はありません。WAL モードの SQLite は 2 つめの書き込みプロセスを許容しますし、Postgres ならなおさらです。メタデータデータベースの場所は CLI が自分で見つけます — サーバーと同じロジック(META_DB_URL、または DATA_DIR から導かれるルート)です。パスが誤っていれば、「ユーザーがいない」空のデータベースを黙って作るのではなく、エラーで終了します。

使用できるコマンド:

コマンド動作
listユーザーを一覧表示する。
passwd <user> [--password <pw> | --random]パスワードを変更する。
create-admin <user> [--random] [--display "Name"]管理者を作成する。
grant <user> <space> <owner|writer|reader>スペース内のロールを付与する。

フラグを付けない場合、パスワードはエコーを抑制した状態で stdin から読み込まれるため、コマンド履歴には残りません。setPassword/createAdminCLI からのみ 利用でき、HTTP 経路は存在しません。これがホストのオペレーター境界です。イメージのその他のコマンドは イメージCLI のページで扱っています。