1. Tạo tài khoản OpenStack Swift.
Để tạo một tài khoản OpenStack Swift cho một người dùng, bạn cần thực hiện các bước sau:
Tạo Domain.
Một domain trong OpenStack là một cách để nhóm các dự án và người dùng. Nó hữu ích khi bạn muốn phân chia các tài nguyên và quyền truy cập giữa các tổ chức khác nhau trong cùng một hạ tầng OpenStack.
Trong trường hợp bạn đang bán dịch vụ lưu trữ object storage và muốn tạo tài khoản cho một công ty, ví dụ như CompanyA, việc tạo một domain mới cho công ty đó có thể là một lựa chọn tốt.
Việc tạo một domain riêng biệt cho mỗi công ty khách hàng sẽ giúp bạn quản lý tài nguyên và quyền truy cập một cách dễ dàng hơn. Mỗi domain sẽ chứa các dự án và người dùng của riêng công ty đó, giúp cô lập tài nguyên và dữ liệu của họ khỏi các công ty khác.
Tuy nhiên, điều này cũng phụ thuộc vào yêu cầu cụ thể và quy mô của dịch vụ của bạn. Nếu bạn chỉ cung cấp dịch vụ cho một số lượng nhỏ công ty và không cần cô lập hoàn toàn tài nguyên giữa họ, việc sử dụng một domain chung có thể đơn giản hóa quản lý.
Nhưng nếu bạn đang cung cấp dịch vụ cho nhiều công ty và muốn đảm bảo cô lập tối đa giữa các khách hàng, việc tạo một domain cho mỗi công ty là một lựa chọn tốt.
Đầu tiên hay dùng quyền admin của bạn
echo '''export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2''' > ./admin-openrc
Lệnh dưới đây để cài đặt biến môi trường theo khai báo ở trên.
ource ./admin-openrc
Để thêm domain cho Company A, bạn chạy lệnh sau:
shell> openstack domain create companya --description "Company A"
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Company A |
| enabled | True |
| id | 3ddfc84c627540bab0678d66eb1cc4df |
| name | companya |
| options | {} |
| tags | [] |
+-------------+----------------------------------+
Xác minh tạo Domain thành công.
shell> openstack domain list
+----------------------------------+----------+---------+--------------------+
| ID | Name | Enabled | Description |
+----------------------------------+----------+---------+--------------------+
| 3ddfc84c627540bab0678d66eb1cc4df | companya | True | Company A |
| default | Default | True | The default domain |
+----------------------------------+----------+---------+--------------------+
Tạo người dùng OpenStack.
Tạo người dùng OpenStack hãy sử dụng lệnh openstack user create --domain companya --password "companya_password" hoanghd
.
shell> openstack user create --domain companya --password "companya_password" hoanghd
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | 3ddfc84c627540bab0678d66eb1cc4df |
| enabled | True |
| id | 5277b67071ed4c42bfb045ca2751b767 |
| name | hoanghd |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Xác minh người dùng hoanghd đã tạo thành công
shell> openstack user list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 345048c436194f279a853b41752225c9 | admin |
| a49c73172b6a4c6e84a5ad6bf139b101 | swift |
| 5277b67071ed4c42bfb045ca2751b767 | hoanghd |
+----------------------------------+---------+
Tạo Project.
Trong OpenStack, một dự án (đôi khi còn được gọi là tenant) là một đơn vị cơ bản để phân chia và phân quyền tài nguyên. Mỗi người dùng thuộc về một hoặc nhiều dự án và tất cả các tài nguyên mà họ tạo ra (như máy ảo, mạng, vv.) thuộc về một dự án cụ thể.
Nếu bạn đã tạo một domain riêng cho mỗi công ty, việc tạo một dự án riêng cho mỗi người dùng (hoặc nhóm người dùng) trong công ty đó có thể giúp bạn quản lý tài nguyên một cách tốt hơn. Mỗi dự án sẽ có một tập hợp riêng của các tài nguyên và quyền truy cập, cho phép bạn cô lập các tài nguyên giữa các người dùng hoặc nhóm người dùng khác nhau.
Tuy nhiên, nếu mỗi công ty chỉ có một số lượng nhỏ người dùng và bạn không cần phân chia tài nguyên giữa họ, bạn có thể chọn không tạo các dự án riêng và thay vào đó chỉ quản lý tài nguyên trên cấp độ domain.
shell> openstack project create --domain companya --description "Project for hoanghd" hoanghd_project
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Project for hoanghd |
| domain_id | 3ddfc84c627540bab0678d66eb1cc4df |
| enabled | True |
| id | a91f6ea8062948188216cd5f4d171a3a |
| is_domain | False |
| name | hoanghd_project |
| options | {} |
| parent_id | 3ddfc84c627540bab0678d66eb1cc4df |
| tags | [] |
+-------------+----------------------------------+
Xác minh Project đã tạo thành công.
shell> openstack project list
+----------------------------------+-----------------+
| ID | Name |
+----------------------------------+-----------------+
| 3c3004db28b147b09fba26862491348a | admin |
| 3e4a65c20a2c4263a27b01d55510aa60 | service |
| a91f6ea8062948188216cd5f4d171a3a | hoanghd_project |
+----------------------------------+-----------------+
Tạo role cho dự án.
Một role đại diện cho một tập hợp quyền hạn mà một người dùng hoặc nhóm người dùng có thể có. Khi bạn gán một role cho một người dùng trong một dự án, bạn đang cấp quyền cho người dùng đó để thực hiện các hoạt động cụ thể trong dự án đó.
Trong trường hợp của bạn, role companya_role
được tạo ra để cung cấp một tập hợp quyền hạn cụ thể cho người dùng hoanghd
trong dự án hoanghd_project
. Các quyền hạn cụ thể này có thể bao gồm việc tạo, chỉnh sửa, hoặc xóa các tài nguyên như máy ảo, mạng, hoặc lưu trữ.
shell> openstack role create companya_role
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| domain_id | None |
| id | cc73a70280724335b96a5dae57a445cc |
| name | companya_role |
| options | {} |
+-------------+----------------------------------+
Lưu ý rằng trong OpenStack, quyền hạn được quản lý ở mức granular. Điều này có nghĩa là bạn có thể tạo nhiều roles khác nhau với các quyền hạn khác nhau và gán chúng cho các người dùng hoặc nhóm người dùng khác nhau tùy thuộc vào nhu cầu của bạn.
Xác minh role đã tạo thành công.
shell> openstack role list
+----------------------------------+---------------+
| ID | Name |
+----------------------------------+---------------+
| 0ad95151a7e040749af6d7cde5947ddc | reader |
| c1cb06d724bc48b0a84eb3b1f613b0a7 | member |
| c3642851fcd64f7b8236d948dcf3478d | admin |
| cc73a70280724335b96a5dae57a445cc | companya_role |
+----------------------------------+---------------+
Gán người dùng vào dự án với một role cụ thể.
Role quy định những gì người dùng có thể làm với tài nguyên trong dự án. Mình đã tạo một role mới (
) và bạn có thể gán role này cho người dùng trong dự án.companya_role
openstack role add --project hoanghd_project --user hoanghd companya_role
Lệnh này bạn sẽ không nhìn thấy đầu ra nhé.
Tạo một container Swift cho người dùng.
Container là nơi lưu trữ các đối tượng trong Swift.
Đầu tiên hãy tạo các biến môi trường bằng script dưới.
echo '''export OS_PROJECT_DOMAIN_NAME=companya
export OS_USER_DOMAIN_NAME=companya
export OS_PROJECT_NAME=hoanghd_project
export OS_USERNAME=hoanghd
export OS_PASSWORD=companya_password
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2''' > hoanghd-openrc
source ./hoanghd-openrc
Chạy lệnh dưới để tạo container cho người dùng hoanghd.
swift post hoanghd_container
Xác minh container đã tạo thành công.
shell> swift list
hoanghd_container
Xem thông tin tài khoản hoanghd.
shell> swift stat
Account: AUTH_a91f6ea8062948188216cd5f4d171a3a
Containers: 1
Objects: 0
Bytes: 0
Containers in policy "policy-0": 1
Objects in policy "policy-0": 0
Bytes in policy "policy-0": 0
Content-Type: text/plain; charset=utf-8
X-Timestamp: 1710822810.33346
Accept-Ranges: bytes
Vary: Accept
X-Trans-Id: txfe3193f42be44b5c8fa69-0065f915bd
X-Openstack-Request-Id: txfe3193f42be44b5c8fa69-0065f915bd
2. Xoá tài khoản OpenStack Swift.
Đầu tiên hãy xác thực với quyền admin.
source ./admin-openrc
Xoá người dùng bằng lệnh openstack <username>
.
openstack user delete hoanghd
Xoá Project bằng lệnh openstack project delete <project_name>
.
openstack project delete hoanghd_project
Xoá tài domain bằng cách disable domain cần xoá sau đó mới tiến hành xoá nó.
openstack domain set --disable companya
openstack domain delete companya
Bây giờ nếu bạn sử dụng lệnh swift stat để kiểm tra trạng thái của tài khoản hoanghd sẽ nhận được phản hồi Unauthorized. Check username/id, password, tenant name/id and user/tenant domain name/id
như dưới.
shell> source ./hoanghd-openrc
shell> swift stat
Unauthorized. Check username/id, password, tenant name/id and user/tenant domain name/id.