概要
#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 が復元する形にするか、グループボリュームへ手で置く運用にするかを決めたいです。
概要
#116 でアカウントグループ単位の永続化ボリューム分離が実装されましたが、
with-ai-devプロジェクトにはグループの指定が入っておらず、defaultグループのまま起動しています。その結果、withjp.inc のアカウントで認証した情報が、nyle.co.jp 系のプロジェクトと同じボリュームへ書き込まれます。#116 の問題2として挙げられていたアカウントの混線が、このプロジェクトで実際に起きている状態です。
実態
稼働中のコンテナで確認した内容です。
DEVBASE_ACCOUNT_GROUPwithdefaultAWS_PROFILEwithdefaultGCP_ACTIVE_PROFILEwithdefault/persistent/groupのボリュームdevbase_home_withdevbase_home_defaultグループ別ボリュームの一覧です。
devbase_home_withは作成されていません。kk-generation 側は
devbase_home_kkgが作られており、仕組み自体は動いています。設定が入っていないのは with-ai-dev だけです。同じ
devbase_home_defaultを、稼働中の次のコンテナが共有しています。何が起きるか
グループ別ボリュームに置かれる認証情報が、企業をまたいで共有されます。実際に次の事象を確認しました。
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 呼び出し時にクォータプロジェクトの権限エラーになります。環境変数でクォータプロジェクトを差し替えても解消しません。OAuth クライアントが属するプロジェクトが使われるため、グループごとに別のクライアントを持つ必要があります。
3. 別グループのトークンが残っている。
/persistent/group/gcloud/に kk-generation 向けのアクセストークンのファイルが残っていました。分離前の共有状態の名残と見られます。4. アクセストークンのキャッシュが認証情報より優先される。 再ログイン後も古いアカウントで API が呼ばれる事象がありました。
credentials.encは更新されている一方、token_cache.jsonが前のアカウントのまま残っていたためです。ログイン時にキャッシュを破棄する挙動になっていると、切り替え直後の混乱を避けられます。対処案
projects/with-ai-dev/envに #116 の記載どおり 3 行を追加し、コンテナを再作成する。再作成すると
devbase_home_withが新規に作られ、空の状態でマウントされます。再作成後に必要な再認証
グループ別ボリュームが空になるため、#116 の分類 B に当たるものを取り直します。
gcloud auth logingws auth login確認したい点
defaultのまま動いているコンテナが 5 つあります。nyle 案件であればdefaultが正しい想定ですが、意図した状態かを確認したいです。GOOGLE_CLOUD_PROJECT/GOOGLE_APPLICATION_CREDENTIALS/BIGQUERY_KEY_FILEが default グループの値のままです。グループごとに切り替わる仕組みがあるか、projects/*/envで個別に指定する運用かを整理したいです。