Konsola, CLI i dostęp¶
Konsola i CLI korzystają z tego samego API JSON (dokumentacja), więc współdzielą uwierzytelnianie, role i dziennik audytu.
Role¶
| Rola | Może |
|---|---|
viewer |
Przeglądać cele, kopie zapasowe, porównania, podsumowania zmian, przywracania i piaskownice. |
operator |
+ wykonać kopię teraz, zweryfikować teraz, wstrzymywać i wznawiać, przywracać do piaskownicy, wykonywać zapytania i zarządzać piaskownicami, czytać dziennik audytu. |
restorer |
+ przywracać do nowej bazy danych lub do pobrania. |
restorer-admin |
+ przywracać w miejscu, przypinać i odpinać kopie zapasowe. |
Role są mapowane w chartcie z adresów e-mail i grup 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 weryfikuje JWT Cf-Access-Jwt-Assertion (domenę zespołu i audience) przy każdym żądaniu, więc żądanie, które
omija tunel, jest odrzucane. Gdy Tenax publikuje konsolę (poniżej), sam znajduje domenę zespołu i audience; dla
aplikacji Access, którą zarządzasz sam, ustaw auth.cloudflareAccess.teamDomain i audience. Z
auth.provider: none (tylko lokalny development) każde żądanie dostaje auth.devRole.
Dostęp do konsoli¶
Są dwie drogi i można korzystać z obu jednocześnie:
-
Dla osób bez dostępu do klastra: publiczny adres za logowaniem. Ustaw nazwę hosta, a Tenax opublikuje tam konsolę przez swój tunel Cloudflare: aplikację Access, która wpuszcza te same osoby co trasy piaskownic (
expose.cloudflare.allowEmails/allowGroups), rekord DNS i trasę dotenax-api. Użytkownicy otwierająhttps://tenax.example.comw przeglądarce lub raz uruchamiajątenax login --server https://tenax.example.comi logują się adresem e-mail; nigdy nie potrzebują kubeconfig. Ich rola pochodzi zauth.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 }Kontroler utrzymuje trasę i zapisuje domenę zespołu i audience aplikacji w Secret
tenax-console-access, który czyta tenax-api; dopóki go nie ma, konsola odpowiada "console login not ready". Aby odczytać domenę zespołu, token API potrzebuje uprawnienia Access: Organizations, Identity Providers, and Groups: Read; bez niego Tenax odczytuje ją z przekierowania logowania konsoli, albo ustawauth.cloudflareAccess.teamDomain. -
Dla osób z dostępem do klastra:
tenax console. Przekierowuje lokalny port do konsoli przez Twój kubeconfig i otwiera ją w przeglądarce. Działa do Ctrl+C; z innego terminala pozostałe polecenia korzystają z niego przezexport TENAX_SERVER=http://127.0.0.1:8080. Zauth.provider: cloudflare-accessprzekierowanie nie wymaga logowania do Access: trafia na port, który tenax-api udostępnia tylko na127.0.0.1wewnątrz swojego poda, osiągalny wyłącznie przezkubectl port-forward, więc o tym, kto wejdzie, decyduje RBAC Kubernetes (pods/portforwardw namespace Tenax), z roląauth.portForwardRole(domyślnierestorer-admin; pusta wartość wyłącza port).
CLI¶
Instalacja i połączenie: Instalacja CLI. Wszystkie polecenia: dokumentacja CLI.
Dziennik audytu¶
Każdy zapis (kopia teraz, przywracanie, przypięcie, zmiany piaskownic) i każde zapytanie są rejestrowane z użytkownikiem, rolą, celem, wynikiem i adresem źródłowym, w ustrukturyzowanych logach tenax-api i na stronie Audyt w konsoli.