콘솔, CLI, 접근 권한¶
콘솔과 CLI는 같은 JSON API(레퍼런스)를 사용하므로 인증, 역할, 감사 로그를 공유합니다.
역할¶
| 역할 | 할 수 있는 일 |
|---|---|
viewer |
대상, 백업, 차이 비교, 변경 요약, 복원, 샌드박스 조회. |
operator |
+ 지금 백업, 지금 검증, 일시 중지와 재개, 샌드박스로 복원, 샌드박스 쿼리와 관리, 감사 로그 읽기. |
restorer |
+ 새 데이터베이스나 다운로드로 복원. |
restorer-admin |
+ 제자리 복원, 백업 고정과 고정 해제. |
역할은 차트에서 이메일과 Cloudflare Access 그룹으로 매핑합니다.
auth:
provider: cloudflare-access
roles:
viewer: ["*@example.com"]
operator: ["group:sre"]
restorer: [alice@example.com]
restorer-admin: [bob@example.com]
scopes: # optional: limit someone to some orgs or projects
contractor@example.com: { orgs: [acme] }
Tenax는 모든 요청에서 Cf-Access-Jwt-Assertion JWT(팀 도메인과 audience)를 검증하므로, 터널을 우회한 요청은
거부됩니다. Tenax가 콘솔을 게시하면(아래 참고) 팀 도메인과 audience를 스스로 찾습니다. 직접 관리하는 Access
애플리케이션이라면 auth.cloudflareAccess.teamDomain과 audience를 설정하세요. auth.provider: none(로컬 개발 전용)이면
모든 요청이 auth.devRole을 받습니다.
콘솔에 접근하기¶
접근 방법은 두 가지이며, 함께 사용할 수 있습니다.
-
클러스터 접근 권한이 없는 사람: 로그인 뒤의 공개 주소. 호스트 이름을 설정하면 Tenax가 Cloudflare 터널을 통해 그곳에 콘솔을 게시합니다. 샌드박스 경로와 같은 사람들(
expose.cloudflare.allowEmails/allowGroups)을 들여보내는 Access 애플리케이션, DNS 레코드,tenax-api로 가는 경로가 만들어집니다. 사용자는 브라우저에서https://tenax.example.com을 열거나tenax login --server https://tenax.example.com을 한 번 실행한 뒤 이메일로 로그인하며, kubeconfig는 전혀 필요하지 않습니다. 역할은auth.roles에서 정해집니다.auth: provider: cloudflare-access roles: { viewer: ["*@example.com"], restorer: [alice@example.com] } expose: provider: cloudflare cloudflare: { zone: example.com, apiTokenSecret: tenax-cloudflare-api, allowEmails: ["*@example.com"] } cloudflared: { enabled: true, consoleHostname: tenax.example.com }컨트롤러는 경로를 유지하고, 애플리케이션의 팀 도메인과 audience를 tenax-api가 읽는 Secret
tenax-console-access에 저장합니다. 이 Secret이 생기기 전까지 콘솔은 "console login not ready"로 응답합니다. 팀 도메인을 읽으려면 API 토큰에 Access: Organizations, Identity Providers, and Groups: Read 권한이 필요합니다. 이 권한이 없으면 Tenax는 콘솔의 로그인 리디렉션에서 이를 읽으며,auth.cloudflareAccess.teamDomain을 설정해도 됩니다. -
클러스터 접근 권한이 있는 사람:
tenax console. kubeconfig를 통해 로컬 포트를 콘솔로 포워딩하고 브라우저에서 엽니다. Ctrl+C를 누를 때까지 계속 실행되며, 다른 터미널에서는export TENAX_SERVER=http://127.0.0.1:8080으로 다른 명령어가 이를 사용합니다.auth.provider: cloudflare-access인 경우 이 포워딩에는 Access 로그인이 필요 없습니다. tenax-api가 파드 내부의127.0.0.1에서만 제공하는 포트에 연결되며, 그 포트는kubectl port-forward로만 접근할 수 있으므로 누가 들어올지는 Kubernetes RBAC(Tenax 네임스페이스의pods/portforward)가 결정합니다. 역할은auth.portForwardRole입니다(기본값restorer-admin, 비워 두면 포트가 꺼짐).
CLI¶
설치와 연결: CLI 설치. 모든 명령어: CLI 레퍼런스.
감사 로그¶
모든 쓰기(지금 백업, 복원, 고정, 샌드박스 변경)와 모든 쿼리는 사용자, 역할, 대상, 결과, 출발지 주소와 함께 tenax-api의 구조화된 로그와 콘솔의 감사 페이지에 기록됩니다.