Multi-Tenancy CLI
Mục lục
- Multi-Tenancy CLI
- Multi-Tenancy and Lightbits — Multi-tenancy và Lightbits
- Key Features — Các tính năng chính
- "Projects" (tenants) support — Hỗ trợ "Projects" (tenant)
- Authentication (authN) — Xác thực
- Authorization (authZ) — Phân quyền
- Role Based Access Control (RBAC)
- Common Multi-Tenancy CLI Examples — Các ví dụ CLI multi-tenancy thường dùng
- Nguồn tham khảo
Với multi-tenancy, việc quản lý một cluster hoặc các project/tenant đòi hỏi cơ chế authentication và authorization riêng biệt. Thực thể cơ bản ở đây là security boundary; việc quản lý cluster và quản lý project là hai thực thể tách biệt.
Trong khuôn khổ authentication và authorization của multi-tenancy:
-
Tất cả các lệnh API/CLI đều có cơ chế xử lý permission nghiêm ngặt.
-
Việc truy cập API và sinh JWT token được tích hợp vào lbcli.
-
Bắt buộc phải sign-in bằng JWT bearer token (public-key).
-
Lưu lượng API bắt buộc phải được mã hóa TLS.
-
Có audit trail cho tất cả các hành động API/CLI.
Role Based Access Control (RBAC) cho multi-tenancy bao gồm các role sau:
-
Cluster Admin
-
Cluster Viewer
-
Tenant Admin
-
Tenant Viewer
Multi-Tenancy and Lightbits — Multi-tenancy và Lightbits
Multi-tenancy tích hợp chặt chẽ với Lightbits Kubernetes CSI plug-in, bao gồm:
-
Một hoặc nhiều K8s cluster cho mỗi tenant.
-
Một hoặc nhiều K8s namespace cho mỗi tenant trong một K8s cluster.
-
Phân tách tenant ở mức chi tiết dựa trên cơ chế security của K8s bên trong một K8s namespace.
Lightbits K8s plugin cũng có cơ chế xử lý CSI credential, bao gồm:
-
Hỗ trợ đầy đủ việc xử lý, xoay vòng (rotation) và thu hồi (revocation) credential của storage provider một cách tập trung và an toàn.
-
Credential (JWT) được lưu dưới dạng “secret” của K8s.
-
Các CSI sidecar cung cấp cho CSI plugin đúng JWT cho mỗi lần gọi CSI.
Lưu ý:
- Tích hợp OpenStack chỉ hỗ trợ single tenant.
- Việc phân tách multi-tenancy chỉ áp dụng cho control path (data path được quản lý qua ACL và IP ACL).
- JWT có thời hạn (mặc định là 30 ngày), và có thể được đặt theo nhu cầu.
- Với trường hợp single tenant, có thể dùng JWT của cluster admin cho mọi hành động.
Hãy ghi lại JWT system:cluster-admin được sinh ra trong quá trình cài đặt (JWT này khác nhau ở mỗi lần cài đặt; đây chỉ là ví dụ.)
$ export SYSTEMJWT=eyJhb...s4u-w
Key Features — Các tính năng chính
"Projects" (tenants) support — Hỗ trợ "Projects" (tenant)
-
Phân tách nghiêm ngặt ở mức API/CLI (tên resource, khả năng nhìn thấy).
-
Việc quản lý Lightbits API/CLI bởi admin tách biệt khỏi quyền truy cập của các tenant.
Authentication (authN) — Xác thực
-
Mọi truy cập đều được xác thực bằng JWT bearer token ký bằng pubkey.
-
Tích hợp với cơ chế quản lý secret của K8s và LB CSI plugin.
-
Việc sinh JWT token để truy cập API được tích hợp vào lbcli.
Authorization (authZ) — Phân quyền
- Mọi hành động API/CLI đều được policy module cấp quyền một cách tường minh.
Role Based Access Control (RBAC)
-
Quyền truy cập được cấp dựa trên một hoặc nhiều role gán cho một account.
-
Role được gán từ một tập hợp giới hạn các role định nghĩa sẵn.
Common Multi-Tenancy CLI Examples — Các ví dụ CLI multi-tenancy thường dùng
Tạo một project mới (với tư cách cluster-admin). Chú ý các endpoint được mã hóa (https, port 443) và việc sử dụng system jwt.
[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 create project --name myproj --description "my project"
Name Description
myproj my project
Liệt kê các project (với tư cách cluster-admin):
[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 list projects
Name Description
default This is the default project description
a a description
b b description
myproj my project
Tạo cặp khóa RSA256 public/private:
[server00]:~# mkdir -p ${HOME}/.lightos_keys && ssh-keygen -t rsa -f ${HOME}/.lightos_keys/mykey -q -N "" -m PKCS8 && openssl rsa -in ${HOME}/.lightos_keys/mykey -pubout -out ${HOME}/.lightos_keys/mykey.pem
writing RSA key
[server00]:~# ls ${HOME}/.lightos_keys
mykey mykey.pub mykey.pem
Tạo credential đầu tiên trong project (với tư cách cluster-admin):
[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 create credential --id=c1 --project-name myproj --type rsa256pubkey ${HOME}/.lightos_keys/mykey.pem
ID Type
c1 RS256PubKey
Liệt kê các credential trong project (với tư cách cluster-admin):
[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 list credentials --project-name myproj
ID Type
c1 RS256PubKey
Tạo JWT project:admin cho project mới:
[server00]:~# lbcli create jwt --key-id myproj:c1 --key ${HOME}/.lightos_keys/mykey --role myproj:admin --issuer=root@example.com --subject=tenant-1
eyJh...Nmsw
[server00]:~# export MYPROJADMINJWT=eyJh...Nmsw
Tạo một volume trong project với tư cách project:admin:
[server00]:~# lbcli --jwt $MYPROJADMINJWT --endpoint https://localhost:443 create volume --name vol1 --size 1G --replica-count 3 --acl ALLOW_NONE --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Creating Unknown 0 954 MiB 3 false values:"ALLOW_NONE"
Tạo JWT project:viewer cho project mới:
[server00]:~# export MYPROJVIEWERJWT=`lbcli create jwt --key-id myproj:c1 --key ${HOME}/.lightos_keys/mykey --role myproj:viewer`
Liệt kê các volume trong project với tư cách project:admin hoặc project:viewer:
[server00]:~# lbcli --jwt $MYPROJADMINJWT --endpoint https://localhost:443 list volumes --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Available FullyProtected 1 954 MiB 3 false values:"ALLOW_NONE" None
[server00]:~# lbcli --jwt $MYPROJVIEWERJWT --endpoint https://localhost:443 list volumes --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Available FullyProtected 1 954 MiB 3 false values:"ALLOW_NONE" None
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/multi-tenancy-cli
Nguồn tham khảo
- Multi-Tenancy CLI — https://documentation.lightbitslabs.com/lightbits-private-cloud/multi-tenancy-cli
Ghi chú về nguồn
- URL fetch thành công. Trang này hiển thị nhãn phiên bản 3.19.x (khác với phần lớn các trang khác đang ở 3.20.x), mục Lightbits Administration Guide.
- Cấu trúc heading giữ nguyên 1:1 theo bản gốc: H1 Multi-Tenancy CLI, các mục
##Multi-Tenancy and Lightbits và Key Features, cùng các mục###bên trong Key Features. - Bản gốc dùng nhãn "Notes" (số nhiều) cho một khối gồm bốn gạch đầu dòng; được dịch thành một khối
> **Lưu ý:**giữ nguyên cả bốn ý. - Trong ví dụ tạo volume, output của bản gốc hiển thị
--size 1Gnhưng kết quả là954 MiB; đây là nội dung của bản gốc và được giữ nguyên.