Thiết kế Private Cloud Tenant Model
🎯 Mục tiêu: Tạo cấu trúc domain → project → user → role trong OpenStack (hoặc mô phỏng bằng Azure Resource Group / RBAC), đảm bảo team DevOps và team Finance hoàn toàn cô lập tài nguyên.
🧰 Công cụ / nền tảng: OpenStack CLI (openstack) với DevStack/MicroStack, hoặc Azure CLI (az) cho phần mô phỏng. VS Code + Git để lưu script.
📦 Chuẩn bị: DevStack đã cài trên Ubuntu 22.04 VM; hoặc Azure subscription với quyền Owner; OpenStack CLI: pip install python-openstackclient.
▶️ Các bước — OpenStack CLI:
# Load admin credentials
source ~/devstack/openrc admin admin
# 1. Tạo Domain "hoatranlab-corp"
openstack domain create hoatranlab-corp \
--description "HoaTranLab Corporate Domain"
# 2. Tạo Project cho DevOps team
openstack project create devops-prod \
--domain hoatranlab-corp \
--description "DevOps Production Project"
# 3. Tạo Project cho Finance team
openstack project create finance-prod \
--domain hoatranlab-corp \
--description "Finance Production Project"
# 4. Tạo user cho DevOps team
openstack user create devops-user1 \
--domain hoatranlab-corp \
--password "DevOps@2026!" \
--email [email protected]
# 5. Gán role "member" cho devops-user1 trong project devops-prod
openstack role add --project devops-prod \
--project-domain hoatranlab-corp \
--user devops-user1 \
--user-domain hoatranlab-corp \
member
# 6. Xác nhận cô lập: login bằng devops-user1, thử list project finance
openstack --os-username devops-user1 \
--os-password "DevOps@2026!" \
--os-project-name finance-prod \
--os-user-domain-name hoatranlab-corp \
--os-project-domain-name hoatranlab-corp \
server list
# Output mong đợi: ERROR 403 – không có quyền truy cập finance-prod
# 7. Xem toàn bộ cấu trúc
openstack project list --domain hoatranlab-corp
openstack user list --domain hoatranlab-corp
openstack role assignment list --project devops-prod --names
▶️ Mô phỏng bằng Azure CLI (nếu không có OpenStack):
# Login Azure
az login
# 1. Tạo Resource Group cho DevOps (tương đương OpenStack Project)
az group create --name rg-devops-prod --location southeastasia
az group create --name rg-finance-prod --location southeastasia
# 2. Tạo Service Principal cho devops-user1
az ad sp create-for-rbac --name sp-devops-user1 \
--role Contributor \
--scopes /subscriptions/$(az account show --query id -o tsv)/resourceGroups/rg-devops-prod
# 3. Thử truy cập rg-finance-prod bằng service principal vừa tạo
# → Kết quả mong đợi: AuthorizationFailed
# 4. Tóm tắt cấu trúc
az group list --output table
az role assignment list --resource-group rg-devops-prod --output table
✅ Kết quả mong đợi: devops-user1 chỉ thấy tài nguyên trong devops-prod; không truy cập được finance-prod (HTTP 403); openstack project list trả về ≥2 project trong domain hoatranlab-corp.
🧹 Cleanup: openstack project delete devops-prod finance-prod và openstack user delete devops-user1; Azure: az group delete --name rg-devops-prod --yes --no-wait.