운영자에게 넘길 값
Microsoft Entra ID 앱 등록 + DNS 준비 완료 후, 귀사 IT 가 채택한 옵션에 따라 운영자 ([email protected]) 에게 전달합니다.
| 옵션 | 회신 형식 | 채널 |
|---|---|---|
| Option A (CLI 1줄, 권장) | axelabs-bootstrap-{customer}.json 파일 1 개 | 1Password Send / Bitwarden Send (view-once) |
| Option B (portal 수작업) | 아래 텍스트 템플릿 8 개 값 | 동일 안전 채널 (한 메시지에 통합) |
운영자가 ingest 완료 후 알림 보내드리면, 안전 채널 메시지를 즉시 삭제해 주세요.
⚠️ 구 docs 폐기 안내
이전 버전 (realchoice_entra_id_setup_v2.md 등) 은 Mobile/desktop platform + http://localhost + secret 없음 모델 기반이었습니다. 본 가이드 (registration.mdx 신모델) 가 정본 — Web platform + 도메인 검증된 App ID URI + mcp.access scope + client_secret 발급.
구 docs 가 검색에 잡히면 무시하시고 본 페이지 + registration + domain-prep 만 따라주세요.
Option A — JSON pack 회신 (권장)
registration §Option A 의 axelabs-bootstrap.sh 가 만든 파일:
axelabs-bootstrap-<customer_id>.json이 파일을 수정하지 말고 그대로 첨부 (1Password Send / Bitwarden Send 의 file attachment). 안에 8 개 값 + scope/redirect_uri/application_id_uri 모두 포함되어 운영자가 axe customer ingest <customer> <file> 으로 1 줄에 vault push + customers.yaml 갱신.
스키마 (axelabs-bootstrap/v1) 예시:
{
"schema": "axelabs-bootstrap/v1",
"customer": "realchoice",
"public_domain": "realchoice.axelabs.ai",
"tenant_id": "00000000-0000-0000-0000-000000000000",
"generated_by": "[email protected]",
"apps": {
"blueprint": { "client_id": "...", "client_secret": "..." },
"vaultwarden": { "client_id": "...", "client_secret": "..." },
"frame_mcp": {
"client_id": "...",
"client_secret": "...",
"application_id_uri": "https://realchoice.axelabs.ai/frame/mcp",
"scope": "mcp.access",
"redirect_uris": [
"https://claude.ai/api/mcp/auth_callback",
"https://claude.com/api/mcp/auth_callback"
]
}
}
}추가로 한 줄 회신 (메일 본문 — secret 없음):
Option A 로 axelabs-bootstrap-realchoice.json 생성 완료.
첨부는 [Bitwarden Send link, view-once 1 회 + 24h 만료] 입니다.
ADMIN_EMAIL: [email protected]
SENDER_EMAIL: [email protected]
— 리얼초이스 ITADMIN_EMAIL (첫 Blueprint admin) 과 SENDER_EMAIL (회신자) 은 JSON pack 에 없는 메타 — 메일 본문에 추가.
Option B — 텍스트 템플릿 (수작업 시)
TENANT_ID: <Directory (tenant) ID>
BLUEPRINT_CLIENT_ID: <App #1 Application (client) ID>
BLUEPRINT_CLIENT_SECRET: <App #1 Client secret VALUE>
VAULTWARDEN_CLIENT_ID: <App #2 Application (client) ID>
VAULTWARDEN_CLIENT_SECRET: <App #2 Client secret VALUE>
FRAME_MCP_CLIENT_ID: <App #3 Application (client) ID>
FRAME_MCP_CLIENT_SECRET: <App #3 Client secret VALUE>
ADMIN_EMAIL: <첫 Blueprint admin 으로 지정할 사용자 메일>
SENDER_EMAIL: <회신 보낸 분 메일 (확인 회신용)>안전 채널 권장 (필수)
*_CLIENT_SECRET 평문은 다음 경로 금지:
- ❌ 일반 이메일 (백업·archiving 영구 보관)
- ❌ Slack/Teams 채팅 (스레드 영구)
- ❌ 첨부 파일 (메일 서버 캐시)
권장:
- ✅ 1Password Send (view-once 옵션 활성화)
- ✅ Bitwarden Send (만료 + view-once)
- ✅ 회사 SSO 보호된 보안 메신저
- ✅ 직접 대면 / 음성 통화
운영자가 Keychain push 완료 통지를 보낸 직후, 안전 채널 메시지를 삭제하시기 바랍니다.
CLIENT_ID 는 평문 무방
*_CLIENT_ID 는 GUID 식별자로 비밀이 아닙니다. 이메일 평문 전송 가능. SECRET 만 안전 채널.
운영자 측 처리
운영자가 회신 받은 후 (customer-onboarding D-day TLDR 참조):
| 작업 | 명령 (2026-05-23 시점) | 시점 |
|---|---|---|
| 1. customers.yaml 에 client_id + tenant_id 채워넣기 + services 슬롯 등재 | 현재 수동 (B-onboard-customers-add 자동화 예정) | 회신 즉시 |
| 2. 3 개 client_secret → Vaultwarden push | axe secret push AZURE_..._CLIENT_SECRET --service {svc} --customer {customer} × 3 | 회신 즉시 |
| 3. Cloudflare tunnel + frame stack 부트 | axe onboard {customer} --apply | 회신 당일 |
| 4. Blueprint stack 부트 | axe deploy blueprint {customer} --apply | 회신 당일 |
| 5. 첫 로그인 검증 + admin 권한 부여 | Blueprint 첫 SSO 로그인 후 UPDATE User SET role='admin' WHERE email='...' | 1일 내 |
| 6. 직원 onboarding 가이드 전달 | 신규 직원 onboarding URL | 1일 내 |
기존 Vaultwarden 운영 중인 경우
귀사가 이미 Vaultwarden / Timshel fork 를 운영 중이고 그것을 유지하기로 결정 시 — axec stack 의 신규 axe-vaultwarden 신설을 skip 하고 기존 vault 에 OIDC SSO 만 추가합니다. 절차는 배포 협의 §Vault OIDC SSO 통합 참조 (11 key env + 4-block + view-once secret 전달).
만료·회전 정책
| Secret | 기본 만료 | 회전 시점 |
|---|---|---|
| Blueprint | 180일 | 만료 30일 전 |
| Vaultwarden | 180일 | 만료 30일 전 |
| Frame MCP | 24개월 | 만료 60일 전 |
만료 30일 전 운영자가 귀사 IT 에게 새 secret 요청 → 받아서 swap. 직원 측은 영향 없음 (claude.ai 측 캐시 자동 갱신).
신규 직원 추가 시
배포 후 신규 직원 (entity 권한) 추가:
- 귀사 측 Microsoft 365 에서 회사 메일 발급 + tenant 활성 사용자 등록
- 운영자에게 알림:
신규 직원: firstname.lastname@{customer}.com 업무: 회계 필요 권한: axec read+write - 운영자가
customers.yaml > user_entity_map에 추가 + 컨테이너 재기동
추가 후 직원은 신규 직원 온보딩 따라 본인 setup.
퇴사 시
- 귀사 측 Microsoft 365 에서 사용자 비활성 (그것만으로도 모든 access 차단됨 — Entra ID 측 검증 통과 못 함)
- 운영자에게 알림 →
user_entity_map에서 제거 + 마지막 활동 audit log 보관