認証
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/createAdmin は CLI からのみ 利用でき、HTTP 経路は存在しません。これがホストのオペレーター境界です。イメージのその他のコマンドは イメージCLI のページで扱っています。