데이터 복구 배포 증거를 동기화
This commit is contained in:
parent
dba9b75a38
commit
ffadc8bd49
7 changed files with 134 additions and 14 deletions
|
|
@ -983,6 +983,12 @@ DB 레벨 이중강제(`04_audit_eval_rls.sql` §5, `app/db.py` `acquire()`):
|
|||
`AUTH_EMAIL_COHORT_MAP`과 `AUTH_DOMAIN_COHORT_MAP` 설정, SAML fixture의 `cohort` claim을 합쳐
|
||||
`cohort_ids`로 세션에 저장한다. 관리 사용자 `app_user.external_id`는 provider subject 기반
|
||||
(`google:`/`saml:`/`dev:`)으로 저장해 email 변경 리스크를 줄인다.
|
||||
- 한 사람이 복수 Google subject를 가져야 할 때는 소유자가 검증한 `app.auth_identity_alias`만
|
||||
provider subject를 canonical `app_user`에 연결한다. callback은 이메일 조회보다 이 별칭을 먼저 해석하고,
|
||||
역할·코호트·온보딩·관리자 권한과 학습 데이터는 canonical 사용자에서 읽되 `auth_session.login_email`에는
|
||||
실제 로그인에 사용한 검증 이메일을 별도로 남긴다. 같은 이메일이라는 이유만으로 계정을 자동 병합하지
|
||||
않으며 inactive/suspended canonical 대상은 fail-closed한다. 별칭 테이블은 RLS SELECT 정책만 두어 런타임
|
||||
역할의 쓰기를 막고, 연결·해제는 owner-run migration/복구 절차와 감사 로그로만 수행한다.
|
||||
- 관리자 외부 연구참여자 사전등록 `POST /admin/users`는 요청값과 무관하게 항상
|
||||
`account_status=pending`으로 정확한 이메일 계정을 만든다. 승인·정지는 별도
|
||||
`PATCH /admin/users/{user_id}`에서만 수행해 create와 승인 권한 효과를 분리한다. 이는 공개 무제한 가입
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue