Skip to content

fix: with-ai-dev のアカウントグループが default のままで、withjp アカウントの認証情報が nyle 系プロジェクトと共有されている #133

Description

@takemi-ohama

概要

#116 でアカウントグループ単位の永続化ボリューム分離が実装されましたが、with-ai-dev プロジェクトにはグループの指定が入っておらず、default グループのまま起動しています。

その結果、withjp.inc のアカウントで認証した情報が、nyle.co.jp 系のプロジェクトと同じボリュームへ書き込まれます。#116 の問題2として挙げられていたアカウントの混線が、このプロジェクトで実際に起きている状態です。

実態

稼働中のコンテナで確認した内容です。

項目 #116 での想定 実際の値
DEVBASE_ACCOUNT_GROUP with default
AWS_PROFILE with default
GCP_ACTIVE_PROFILE with default
/persistent/group のボリューム devbase_home_with devbase_home_default
$ docker inspect <container> --format '{{range .Mounts}}{{.Name}} -> {{.Destination}}{{"\n"}}{{end}}'
devbase_home_ubuntu  -> /persistent/ai
devbase_home_default -> /persistent/group
devbase_work_1       -> /work

グループ別ボリュームの一覧です。devbase_home_with は作成されていません。

$ docker volume ls | grep devbase_home
devbase_home_default
devbase_home_kkg
devbase_home_ubuntu

kk-generation 側は devbase_home_kkg が作られており、仕組み自体は動いています。設定が入っていないのは with-ai-dev だけです。

同じ devbase_home_default を、稼働中の次のコンテナが共有しています。

ideabase-dev-1 / ideabase-dev-2
ai-plugins-dev-1
carmo-system-console-dev-1 / carmo-system-console-dev-2

何が起きるか

グループ別ボリュームに置かれる認証情報が、企業をまたいで共有されます。実際に次の事象を確認しました。

1. Google Workspace CLI の認証が上書きされる。 with-ai-dev のコンテナで withjp.inc のアカウントにログインしたところ、/persistent/group/gws/credentials.enc が置き換わりました。このファイルは nyle 系プロジェクトのコンテナからも同じパスで参照されるため、そちらの認証も withjp.inc のものに変わります。

2. OAuth クライアントのプロジェクトが合わない。 /persistent/group/gws/client_secret.json は nyle 側の GCP プロジェクトで作られたものです。withjp.inc のアカウントでログインすると、API 呼び出し時にクォータプロジェクトの権限エラーになります。

Caller does not have required permission to use project <nyle側のプロジェクト>.
Grant the caller the roles/serviceusage.serviceUsageConsumer role ...

環境変数でクォータプロジェクトを差し替えても解消しません。OAuth クライアントが属するプロジェクトが使われるため、グループごとに別のクライアントを持つ必要があります。

3. 別グループのトークンが残っている。 /persistent/group/gcloud/ に kk-generation 向けのアクセストークンのファイルが残っていました。分離前の共有状態の名残と見られます。

4. アクセストークンのキャッシュが認証情報より優先される。 再ログイン後も古いアカウントで API が呼ばれる事象がありました。credentials.enc は更新されている一方、token_cache.json が前のアカウントのまま残っていたためです。ログイン時にキャッシュを破棄する挙動になっていると、切り替え直後の混乱を避けられます。

対処案

projects/with-ai-dev/env に #116 の記載どおり 3 行を追加し、コンテナを再作成する。

DEVBASE_ACCOUNT_GROUP=with
AWS_PROFILE=with
GCP_ACTIVE_PROFILE=with

再作成すると devbase_home_with が新規に作られ、空の状態でマウントされます。

再作成後に必要な再認証

グループ別ボリュームが空になるため、#116 の分類 B に当たるものを取り直します。

対象 方法
Claude Code の認証と MCP 接続 起動時に再ログイン。Atlassian / Google Drive などの MCP も繋ぎ直す
gcloud のユーザー認証 withjp.inc のアカウントで gcloud auth login
Google Workspace CLI withjp 側の GCP プロジェクトで作った OAuth クライアントを配置して gws auth login

確認したい点

  • 他プロジェクトのグループ指定。 default のまま動いているコンテナが 5 つあります。nyle 案件であれば default が正しい想定ですが、意図した状態かを確認したいです。
  • GCP プロジェクト系の環境変数。 GOOGLE_CLOUD_PROJECT / GOOGLE_APPLICATION_CREDENTIALS / BIGQUERY_KEY_FILE が default グループの値のままです。グループごとに切り替わる仕組みがあるか、projects/*/env で個別に指定する運用かを整理したいです。
  • OAuth クライアントの配布方法。 グループごとに別の OAuth クライアントが要ります。環境変数で配って entrypoint が復元する形にするか、グループボリュームへ手で置く運用にするかを決めたいです。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions