Đồ án tốt nghiệp của ngành An toàn thông tin Học viện ký thuật mật mã đề tài "Xây dựng hệ thống quản lý tài liệu nội bộ an toàn"
Đồ án tốt nghiệp của ngành An toàn thông tin Học viện ký thuật mật mã đề tài "Xây dựng hệ thống quản lý tài liệu nội bộ an toàn" giúp sinh viên tham khảo và phục vụ nhu cầu học tập của mình
Môn: Đồ án tốt nghiệp - An toàn thông tin
Trường: Học viện kỹ thuật mật mã
Thông tin:
Tác giả:
Preview text:
lOMoARcPSD| 36477832 MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii
DANH MỤC TỪ VIẾT TẮT vi DANH MỤC HÌNH ẢNH i MỞ ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 2 1.1. Cơ sở lý thuyết 2
1.1.1. Khái niệm và phân loại 2
1.1.2. Ưu điểm của hệ thống quản lý lưu trữ tài liệu
1.1.3. Nhược điểm của hệ thống quản lý lưu trữ tài liệu
1.2. Một số ứng dụng quản lý lưu trữ tài liệu điển hình
1.2.1. Một số ứng dụng lưu trữ quản lý tài liệu Offline
1.2.2. Một số ứng dụng lưu trữ quản lý tài liệu Online
1.3. An toàn thông tin trong ứng dụng lưu trữ quản lý tài liệu
1.3.1. Các rủi ro tiềm ẩn
1.3.2. Bảo mật thông tin của các phần mềm trực tuyến hiện nay
CHƯƠNG 2. GIẢI PHÁP ĐẢM BẢO TÍNH AN TOÀN TRONG ỨNG
DỤNG QUẢN LÝ LƯU TRỮ TÀI LIỆU 6
2.1. An toàn trong lưu trữ và vấn đề đảm bảo tính riêng tư dữ liệu 6
2.1.1. Những vấn đề cơ bản trong an toàn lưu trữ tài liệu
2.1.2. Vấn đề riêng tư của dữ liệu
2.2. Giao thức đảm bảo tính riêng tư dữ liệu trong lưu trữ quản lý dữ liệu 9 2.2.1. Giao thức SSL 2.2.2 Giao thức TLS 2.2.3. Giao thức TLS Record 2.2.4. Giao thức Handshake
2.3. Giải pháp đảm bảo an toàn trong lưu trữ quản lý dữ liệu 14 i lOMoARcPSD| 36477832
2.3.1. Sử dụng SFTP Server để lưu trữ tài liệu cục bộ
2.3.2. Sử dụng JWT để bảo mật trang web
2.3.3. Xác thực hai lớp Two-Factor Authentication (2FA)
2.4. Môi trường phát triển dự án an toàn 23
2.4.1. Môi trường phát triển source code
2.4.2. Môi trường phát triển cơ sở dữ liệu
CHƯƠNG 3. PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 25
3.1 Bài toán đặt ra và phương hướng giải quyết 25
3.1.1. Mục đích thực tế của đề tài
3.1.2. Mô tả công tác quản lý lưu trữ tài liệu tại Học viện Kỹ thuật Mật mã 25
3.2. Phân tích thiết kế chức năng 26
3.2.1. Biểu đồ ngữ cảnh của hệ thống 26
3.2.2. Sơ đồ phân rã chức năng 26
3.2.3. Mô hình liên kết thực thể 28 3.2.4. Mô hình Usecase 29
3.2.5. Mô hình triển khai cơ sở hạ tầng 30
3.3. Phân tích thiết kế luồng chức năng 31
3.3.1. Thiết kế luồng chức năng đăng nhập 31
3.3.2. Thiết kế luồng quản lý nhân viên 32
3.3.3. Thiết kế luồng duyệt tài liệu 32
3.4. Mô hình cơ sở dữ liệu. 33
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG 35
4.1. Chức năng chính của hệ thống 35
4.1.1. Chức năng Đăng nhập
4.1.2. Chức năng Quản lý và duyệt tài liệu
4.1.3. Chức năng quản lý người dùng
4.1.4. Chức năng quản lý chức vụ
4.1.5. Chức năng quản lý phòng ban
4.1.6. Chức năng quản lý loại tài liệu ii lOMoARcPSD| 36477832
4.1.7. Chức năng cấu hình hệ thống KẾT LUẬN 48 TÀI LIỆU THAM KHẢO 50 PHỤ LỤC 1 52 PHỤ LỤC 2 54
DANH MỤC TỪ VIẾT TẮT Viết Tắt Tiếng Anh Tiếng Việt API Application
Programming Giao diện lập trình ứng dụng Interface World Wide Web Consortium
Tổ chức tiêu chuẩn quốc tế cho www JSON JavaScript Object Notation
Kiểu định dạng dữ liệu tuân
theo một quy luật nhất định IDE Integrated
Development Môi trường tích hợp dùng để
viết code để phát triển ứng Environment dụng JWT JSON Web Token Mã thông báo web JSON MVC Model-View-Controller
Một mẫu kiến trúc phần mềm
để tạo lập giao diện người RSA Rivest, Shamir và Adleman
Thuật toán Hệ mật mã khóa công khai HMAC Hashed
Message Mã xác thực tin nhắn dựa trên băm Authentication Code URI Uniform Resource Identifier
Mã định danh tài nguyên thống nhất iii lOMoARcPSD| 36477832 DANH MỤC HÌNH ẢNH Hình 2.1 Quá trính SSL Hanshake 13
Hình 2.2 Quá trính truyền file trong SFTP Server 15
Hình 2.3 Mô hình hoạt động của JWT 16
Hình 2.4 Ví dụ về header của JWT 17 Hình 2.5 Mẫu payload của JWT 18
Hình 2.5 Mẫu chữ ký của JWT 18
Hình 2.6 Mẫu một mã JWT 18
Hình 2.7 Định dạng tiêu đề của api 19
Hình 2.8 Cách thức mà JWT xác thực 19
Hình 2.9 Quá trình tạo mã OTP và đăng nhập bằng OTP 21
Hình 2.10 Các function xử lý OTP bằng otplib 22
Hình 2.11 Xử lý OTP token và
tạo ảnh gửi về cho client 23
Hình 2.12 Xử lý token client
gửi lên cho server xác thực 23
Hình 3.1 Biểu đồ ngữ cảnh của hệ thống 27
Hình 3.2 Sơ đồ phân rã chức năng 27
Hình 3.3 Mô hình usecase cho hệ thống 30 lOMoARcPSD| 36477832
Hình 3.4 Mô hình triển khai cơ sở hạ tầng 32
Hình 3.5 Sơ đồ chức năng đăng nhập 32
Hình 3.6 Sơ đồ chức năng quản lý nhân viên 33
Hình 3.7 Sơ đồ luồng duyệt tài liệu 33
Hình 3.8 Mô hình cơ sở dữ liệu 34 Hình 4.1 Màn hình đăng nhập 35
Hình 4.2 Dữ liệu trả về khi đăng nhập thành công 36
Hình 4.3 Đoạn code xử lý đăng nhập 36
Hình 4.4 Đoạn code xử lý đăng nhập 37 Hình 4.5 Trang chủ 37
Hình 4.6 Thông tin user được lưu ở LocalStorage 38 8
Hình 4.7 Thông tin token được lưu ở Cookies 38
Hình 4.8 Left menu của tài khoản Admin và User 39
Hình 4.9 Trang tạo mới tài liệu 40
Hình 4.10 Trang danh sách tài liệu được tạo mới 40
Hình 4.11 Trang danh sách tài liệu chờ duyệt 41
Hình 4.12 Trang danh sách tài liệu cần duyệt 41 lOMoARcPSD| 36477832
Hình 4.13 Trang danh sách tài liệu đã ban hành 41 Hình 4.14 Modal yêu cầu duyệt thêm 42
Hình 4.15 Mục xem lý do từ chối duyệt 42
Hình 4.16 Danh sách tài liệu bị từ chối duyệt 43 Hình 4.17 Trang tạo mới user 43
Hình 4.18 Danh sách users 44
Hình 4.19 Màn hình tạo mới chức vụ 44
Hình 4.20 Màn hình danh sách chức vụ 45
Hình 4.21 Màn hình tạo mới phòng ban 45
Hình 4.22 Màn hình danh sách phòng ban 46
Hình 4.23 Màn hình tạo mới loại tài liệu 46
Hình 4.24 Màn hình danh sách loại tài liệu 47
Hình 4.25 Màn hình cấu hình server 47
Hình 4.26 Các file lưu trữ cấu hình hệ thống 48
Hình 4.27 Đoạn code xử lý get
và set cấu hình hệ thống 48
Hình 4.28 Cách thức hoạt động của OAuth 2.0. 61 Hình 4.29 Chọn Drive API trong cấu hình Google Develops 61 lOMoARcPSD| 36477832 Hình 4.30 Cấu hình OAuth 2.0 62 Hình 4.31 Tạo một API Service trong Cloud Console 63
Hình 4.32 Lấy giá trị Client ID và Client Secret 63
Hình 4.33 Lấy được token khi
tạo một request trong OAuth 2.0 64
Hình 4.34 Cách thức hoạt động của SFTP 65 9 lOMoARcPSD| 36477832 MỞ ĐẦU
Với sự phát triển rất nhanh chóng của mạng Internet, các ứng dụng trực
tuyến đã trở thành một công cụ đắc lực trong việc giải quyết nhanh chóng nhiều
vấn đề trong các công việc hằng ngày của các cơ quan, doanh nghiệp. Nhiều cơ
quan, doanh nghiệp trong quá trình kinh doanh và sản xuất cần nhiều thực hiện
nhiều thủ tục pháp lý giúp cho việc quản lý dễ dàng, minh bạch và an toàn hơn.
Từ đó sinh ra việc ký kết các hợp đồng, tạo hóa đơn, văn bản quy phạm,…Việc
lưu trữ và bảo vệ các văn bản tài liệu trên trở thành việc quan trọng và cấp thiết
cho sự hoạt động trơn tru của các doanh nghiệp.
Một trong những cách thức lưu trữ tài liệu thường có tại các cơ quan, doanh
nghiệp là in các tài liệu quan trọng thành các văn bản giấy và lưu trữ chúng trong
các tủ kệ, két sắt. Việc lưu trữ truyền thống này giúp cho văn bản luôn rõ ràng
nhưng tồn tại nhiều mặt hạn chế như việc tìm văn bản trong một không gian lớn
rất khó khăn và mất thời gian nên không đáp ứng được tính sẵn sàng của tài liệu.
Hoặc như việc lưu các hóa đơn trong sổ sách cũng khó khi hằng ngày doanh
nghiệp hay cửa hàng in hàng trăm hàng nghìn hóa đơn. Chưa kể đến tài liệu lưu
trong tủ rất dễ hỏng do thời tiết hoặc các tác nhân như chuột, bọ,…
Để giải quyết được các yếu điểm của việc lưu trữ tài liệu truyền thống.
Doanh nghiệp cũng cần lưu trữ các tài liệu dưới dạng văn bản mềm vừa giúp bảo
toàn các văn bản quan trọng vừa có thể truy vấn tài liệu một chác nhanh chóng và
thuận tiện. Mục tiêu của việc nghiên cứu thực hiện đồ án tốt nghiệp với đề tài
“Xây dựng hệ thống quản lý tài liệu nội bộ an toàn” là nhằm phát triển công cụ
lưu trữ tài liệu an toàn, có tính khả dụng cao, thân thiện người dùng với chi phí
thấp, đáp ứng nhu cầu lưu trữ trao đổi tài liệu nhanh chóng, an toàn, thuận tiện.
Sinh viên thực hiện đồ án Trương Việt Hoàng 1 lOMoARcPSD| 36477832
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Cơ sở lý thuyết
1.1.1. Khái niệm và phân loại
Hệ thống Quản lý lưu trữ tài liệu là hệ thống được sử dụng để quản lý, lưu
trữ, bảo toàn và phân phối các tài liệu của tổ chức, hệ thống nhắm đến mục tiêu
làm việc quản lý thông tin trong doanh nghiệp trở nên dễ dàng hơn thông qua việc
đơn giản hóa lưu trữ, bảo mật và sử dụng. Hệ thống này giúp cho việc quản lý
thông tin trong doanh nghiệp trở nên hiệu quả hơn, giúp cho việc tìm kiếm thông
tin nhanh chóng và chính xác hơn
Hệ thống Quản lý lưu trữ tài liệu được phân loại thành một số tiêu chí như sau:
● Phân loại theo chủ đề hoặc danh mục.
● Phân loại theo độ ưu tiên hoặc mức độ quan trọng.
● Phân loại theo người sử dụng hoặc nhóm người sử dụng.
1.1.2. Ưu điểm của hệ thống quản lý lưu trữ tài liệu
● Hệ thống Quản lý lưu trữ tài liệu giúp cho việc quản lý thông tin trong
doanh nghiệp trở nên hiệu quả hơn, giúp cho việc tìm kiếm thông tin
nhanh chóng và chính xác hơn.
● Hệ thống giúp cho việc sử dụng tài liệu trở nên dễ dàng hơn thông qua
việc đơn giản hóa lưu trữ, bảo mật và sử dụng.
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp tiếp nhận và xử lý
thông tin một cách nhanh chóng, chính xác nhất. Đảm bảo được nội 2 lOMoARcPSD| 36477832
dung văn bản được truyền tải đến các cán bộ nhân viên một cách nhanh chóng nhất
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp thiết lập các khâu
xử lý tài liệu nhanh chóng và đúng thời gian.
● Với những tính năng bảo mật vượt trội, ổn định và hoàn toàn lưu trữ
được toàn bộ tài liệu.
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp tiết kiệm được ngân
sách, đảm bảo sự ổn định và phát triển thương hiệu công ty. Phát triển
và tăng cường các mối quan hệ của khách hàng và đối tác.
● Giúp doanh nghiệp phản hồi thông tin tới đối tác, khách hàng chính xác và nhanh chóng.
1.1.3. Nhược điểm của hệ thống quản lý lưu trữ tài liệu
● Do hạn chế về vấn đề lưu trữ tùy chọn trên cloud nên khó khăn trong
việc quản lý các tài liệu có kích thước lớn hoặc số lượng tài liệu quá nhiều.
● Không thể đảm bảo tính bảo mật cao cho các tài liệu quan trọng khi lưu
trữ tùy chọn trên cloud.
● Các tài liệu có thể bị mất hoặc bị hỏng do sự cố kỹ thuật hoặc do người dùng không cẩn thận. 3 lOMoARcPSD| 36477832
● Khó khăn trong việc tìm kiếm và truy xuất thông tin nếu hệ thống không
được tổ chức và phân loại đúng cách.
● Do là những thiết bị hiện đại, với nhiều tính năng nổi bật nên khi gặp sự
cố về thiết bị cần phải có kỹ thuật viên trình độ cao.
1.2. Một số ứng dụng quản lý lưu trữ tài liệu điển hình
1.2.1. Một số ứng dụng lưu trữ quản lý tài liệu Offline
● CloudOffice: phần mềm này cho phép người dùng lưu trữ tài liệu trên
máy tính cá nhân và có khả năng truy cập từ xa.
● Phần mềm quản lý tài liệu ISO Vtranet: phần mềm này có khả năng
quản lý tài liệu theo chuẩn ISO và hỗ trợ nhiều ngôn ngữ.
● Phần mềm quản lý tài liệu thông minh DocEye: phần mềm này có khả
năng tự động phân loại và gán nhãn cho các tài liệu.
● Phần mềm quản lý tài liệu VcSoft DMS: phần mềm này có khả năng
quản lý tài liệu theo chuẩn ISO và hỗ trợ nhiều ngôn ngữ.
1.2.2. Một số ứng dụng lưu trữ quản lý tài liệu Online
● Base Drive: phần mềm này cho phép người dùng lưu trữ và công tác tài
liệu hiệu quả, có giao diện trực quan, linh động và tìm kiếm file nhanh chóng.
● Workplus: phần mềm này mang tới phần mềm quản lý dữ liệu với nhiều
tính năng như toàn bộ tài liệu của doanh nghiệp được số hóa an toàn
trên đám mây, lưu trữ một cách khoa học và dễ tìm kiếm.
● Google Drive: một dịch vụ lưu trữ đám mây được cung cấp bởi
Google, cho phép người dùng lưu trữ và chia sẻ tài liệu trực tuyến. 4 lOMoARcPSD| 36477832
● OneDrive: một dịch vụ lưu trữ đám mây được cung cấp bởi Microsoft,
cho phép người dùng lưu trữ và chia sẻ tài liệu trực tuyến.
1.3. An toàn thông tin trong ứng dụng lưu trữ quản lý tài liệu
1.3.1. Các rủi ro tiềm ẩn
Các rủi ro tiềm ẩn khi sử dụng các phần mềm lưu trữ tài liệu trực tuyến bao gồm:
● Rủi ro về bảo mật: các tài liệu được lưu trữ trên đám mây có thể bị đánh
cắp hoặc bị xâm nhập bởi các hacker.
● Rủi ro về quyền riêng tư: các tài liệu được lưu trữ trên đám mây có thể
bị chia sẻ hoặc tiết lộ cho những người không được ủy quyền.
● Rủi ro về sự cố kỹ thuật: các dịch vụ lưu trữ đám mây có thể gặp sự cố
kỹ thuật, dẫn đến việc mất dữ liệu hoặc khó khăn trong việc truy cập dữ liệu.
1.3.2. Bảo mật thông tin của các phần mềm trực tuyến hiện nay
Nhiều doanh nghiệp hiện nay đang chuyển dần sang hình thức lưu trữ và
quản lý tài liệu trực tuyến với các công cụ như Google Drive, OneDrive và
Amazon. Mặc dù các ứng dụng này mang lại nhiều lợi ích, tiện lợi, dễ sử dụng và
đặc biệt là cho phép lưu trữ trực tiếp sang kỹ thuật số. Tuy nhiên, chúng cũng tạo
ra nhiều thách thức cho người dùng về vấn đề an toàn dữ liệu khi sử dụng.
Không một ứng dụng nào có khả năng an toàn một cách tuyệt đối. Ngay cả
những ứng dụng lưu trữ trực tuyến phổ biến nhất được xây dựng bởi các tổ chức
có phương pháp phát triển phần mềm chuyên nghiệp và an toàn, nhưng vẫn có thể
xảy ra lỗi như thường. 5 lOMoARcPSD| 36477832
CHƯƠNG 2. GIẢI PHÁP ĐẢM BẢO TÍNH AN TOÀN
TRONG ỨNG DỤNG QUẢN LÝ LƯU TRỮ TÀI LIỆU
2.1. An toàn trong lưu trữ và vấn đề đảm bảo tính riêng tư dữ liệu 2.1.1.
Những vấn đề cơ bản trong an toàn lưu trữ tài liệu
An toàn lưu trữ tài liệu là việc đảm bảo tài liệu được bảo vệ an toàn và
không bị mất mát. Tài liệu lưu trữ là tài sản quý giá, có giá trị đặc biệt đối với sự
phát triển của doanh nghiệp, phải được bảo quản an toàn tuyệt đối theo đúng
những yêu cầu, quy định.
Đối với an toàn lưu trữ, có bảy vấn đề cơ bản ta cần nắm bắt và hiểu biết
về chúng, bao gồm: sự xác thực, quyền cấp phép, kiểm tra (giám sát), tính bí mật,
tính toàn vẹn, tính sẵn sàng, tính chống chối bỏ.
* Sự xác thực (Authentication)
Sự xác thực liên quan đến khả năng nhận biết các nhân viên của doanh
nghiệp tham gia về việc quản lý và lưu trữ tài liệu, mỗi thành viên tham gia quản
lý và lưu trữ được xác định trong một tổ chức và doanh nghiệp.
Quá trình mà thông qua đó một thực thể này kiểm tra rằng một thực thể
khác chính là đối tượng mà mình yêu cầu được gọi là sự xác thực. Xác thực yêu
cầu bằng chứng ở các dạng khác nhau, đó cỏ thể là mật khẩu, thẻ tín dụng hoặc chữ ký điện tử…
* Quyền cấp phép (Authorization)
Một khi đã được xác thực, liệu một cá nhân hoặc một chương trình có quyền
truy cập tới một dữ liệu cụ thể, các chương trình hoặc các nguồn lực hệ thống nào
đó (files dữ liệu, các bản ghi, thư mục…) hay không? Quyền cấp phép đảm bảo
rằng một cá nhân hoặc một chương trình có quyền truy cập tới các nguồn lực, tài
nguyên nhất định. Quyền cấp phép thường được xác định bởi thông tin so sánh về
cá nhân hay chương trình với các thông tin kiểm soát truy cập liên kết với các
nguồn lực được truy cập. 6 lOMoARcPSD| 36477832
* Kiểm tra (giám sát) (Auditing)
Khi một người hoặc một chương trình truy cập vào một Website, sẽ có các
mảnh thông tin khác nhau được sẽ được ghi lại trên các file nhật ký. Khi một
người hoặc một chương trình yêu cầu cơ sở dữ liệu, hành động đó cũng được ghi
lại trên các file nhật ký. Quá trình thu thập thông tin về sự truy cập vào một nguồn
lực cụ thể, bằng cách sử dụng các quyền ưu tiên hoặc thực hiện các hoạt động an
ninh khác, được gọi là kiểm tra. Việc kiểm tra sẽ cung cấp bằng chứng, dữ liệu về
hoạt động đã xảy ra trên hệ thống, tạo ra sự thuận lợi sau này nếu có công việc
cần tới thông tin về thiết bị hay người dùng.
* Tính bí mật (confidentiality)
Tính bí mật liên quan đến khả năng đảm bảo rằng đối với các thông riêng
tư, thông tin nhạy cảm, ngoài những người có quyền truy cập, không có ai, không
có các quá trình, phần mềm máy tính nào có thể truy cập vào. Tính bí mật liên
quan chặt chẽ với tính riêng tư (bảo vệ bí mật riêng tư). Các thông tin riêng tư
thường là các bí mật về tài liệu, các văn bản công văn nội bộ, các bản ghi về luồng
truy cập và ngay cả việc một các nhân nào đó vừa truy cập vào phần mềm.
Tính riêng tư liên quan đến khả năng kiểm soát việc sử dụng các thông tin cá nhân
mà khách hàng cung cấp về chính bản thân họ.
Tính bí mật đòi hỏi cá nhân hoặc doanh nghiệp phải biết các dữ liệu và ứng
dụng nào họ cần bảo vệ và ai được quyền truy cập tới đó. Tính bí mật thường
được đảm bảo bằng công nghệ mã hóa.
* Tính toàn vẹn (Integrity)
Tính toàn vẹn đề cập đến khả năng đảm bảo an toàn cho các thông tin được
hiển thị trên một website hoặc chuyển hay nhận các thông tin trên Internet. Các
thông tin này không bị thay đổi nội dung hoặc bị phá hủy bằng bất cứ cách thức
không được phép nào. Ví dụ, nếu một kẻ cố tình xâm nhập trái phép, chặn và thay
đổi nội dung các thông tin truyền trên mạng, như thay đổi yêu cầu duyệt văn bản
và tự động duyệt văn bản khi chưa được phép. Trong những trường hợp như vậy, 7 lOMoARcPSD| 36477832
tính toàn vẹn của thông điệp đã bị xâm hại bởi việc truyền thông diễn ra không
đúng với những gì người gửi mong muốn.
Trong lưu trữ tài liệu, để đảm bảo tính toàn vẹn thông tin, trước tiên, các
quản trị viên hệ thống phải xác định chính xác danh sách những người được phép
thay đổi dữ liệu trên phần mềm. Càng có nhiều người được phép làm điều này
cũng nghĩa là càng có nhiều mối đe dọa đối với tính toàn vẹn thông tin từ cả bên
trong và bên ngoài tổ chức.
Mã hóa là một trong cách thức quan trọng để đảm bảo tính nguyên vẹn của thông tin.
* Tính sẵn sàng (Availability)
Một website trực tuyến được gọi là sẵn sàng khi một cá nhân hoặc một
chương trình có thể truy cập được vào các trang Web, các dữ liệu hoặc dịch vụ do
Website cung cấp khi cần thiết. Tính sẵn sàng liên quan đến khả năng đảm bảo
các chức năng của một phần mềm lưu trữ tài liệu được thực hiện đúng như mong
đợi. Đây cũng là vấn đề mà các website hay gặp phải và là trở ngại không nhỏ đối
với việc thực hiện các yêu cầu lưu trữ.
Các công nghệ như phần cứng và phần mềm cân bằng tải được sử dụng để
phục vụ việc đảm bảo tính sẵn sàng của Website.
* Chống chối bỏ (Nonrepudation)
Chống chối bỏ liên quan đến khả năng đảm bảo rằng các bên tham gia quản
lý không thể phủ định các hành động trực tuyến mà họ đã thực hiện. Ví dụ, một
nhân viên được quyền từ chối duyệt văn bản thao tác từ chối duyệt mà không thể
chối bỏ được hành vi trên. Trong trường hợp như vậy phải có các bản ghi lưu lại
thông tin thời gian, đối tượng và hành vi của cá nhân đó. Và tất nhiên, rủi ro sẽ
thuộc về người yêu cầu duyệt văn bản đó. Một trong các công cụ then chốt để
chống phủ định là chữ ký điện tử.
2.1.2. Vấn đề riêng tư của dữ liệu
Luồng thông tin dữ liệu được truyền từ nguồn (nơi bắt đầu gửi) đến đích
(nơi được nhận dữ liệu). Trên đường truyền công khai, dữ liệu bị tấn công bởi 8 lOMoARcPSD| 36477832
những kẻ tấn công với mục đích xấu (hoặc những người mà không được uỷ quyền
nhận dữ liệu). Dữ liệu truyền trên mạng có thể bị tấn công theo các cách như sau:
a) Tấn công ngăn chặn thông tin
Tấn công ngăn chặn thông tin (interruption) là tấn công làm cho tài nguyên
thông tin bị phá huỷ, không sẵn sàng phục vụ hoặc không sử dụng được. Đây là
hình thức tấn công làm mất khả năng sẵn sàng phục vụ của thông tin.
Ví dụ: phá huỷ đĩa cứng, cắt đứt đường truyền tin, vô hiệu hoá hệ thống quản lý tệp…
b) Tấn công chặn bắt thông tin
Tấn công chặn bắt thông tin (interception) là tấn công mà kẻ tấn công có
thể truy cập tới tài nguyên thông tin. Đây là hình thức tấn công vào tính bí mật
của thông tin. Trong một số tình huống kẻ tấn công được thay thế bởi một chương
trình hoặc một máy tính.
Ví dụ: Việc chặn bắt thông tin có thể là nghe trộm để thu tin trên mạng
(trộm mật khẩu) và sao chép bất hợp pháp các tệp tin hoặc các chương trình, keylogger…
c) Tấn công sửa đổi thông tin
Tấn công sửa đổi thông tin (modification) là tấn công mà kẻ tấn công truy
nhập, chỉnh sửa thông tin trên mạng. Đây là hình thức tấn công vào tính toàn vẹn
của thông tin. Nó có thể thay đổi giá trị trong tệp dữ liệu, sửa đổi chương trình và
sửa đổi nội dung các thông điệp truyền trên mạng.
Ví dụ: Kẻ tấn công sử dụng các đoạn mã nguy hiểm, virus, worm..
d) Chèn thông tin giả mạo
Kẻ tấn công chèn các thông tin và dữ liệu giả vào hệ thống. Đây là hình
thức tấn công vào tính xác thực của thông tin. Nó có thể là việc chèn các thông
báo giả mạo vào mang hay thêm các bản ghi vào tệp khiến hệ thống hiểu nhầm và
xảy ra lỗi. Ví dụ: Tấn công giả mạo địa chỉ IP, giả mạo ARP… 9 lOMoARcPSD| 36477832
2.2. Bộ giao thức đảm bảo tính riêng tư dữ liệu trong lưu trữ quản lý dữ liệu
2.2.1. Giao thức SSL
Trong lưu trữ tài liệu, các giao dịch được thực hiện chủ yếu thông qua mạng
Internet, một mạng truyền thông mở, vì vậy, dữ liệu dễ bị kẻ xấu lấy trộm và sử
dụng vào những mục đích bất chính. Giải pháp cơ bản giải quyết vấn đề này là sử
dụng giao thức SSL (Secure Socket Layer). Đây là giao thức mã hóa web mục
đích chung cho kênh giao tiếp hai chiều bảo mật trên mạng Internet. Cho đến nay
đã có 3 phiên bản của SSL: SSL 1.0, SSL 2.0, SSL 3.0 Giao thức SSL cung cấp
bảo mật sử dụng như sau:
• Tính riêng tư (privacy): toàn bộ dữ liệu truyền qua kết nối đều được mã hoá.
• Xác thực định danh (Identity Authentication): việc xác thực định
danh được thực hiện nhờ sử dụng chứng thư số.
• Tính tin tưởng (Reliability): duy trì tin cậy của kết nối bằng việc kiểm
tra tính toàn vẹn của thông điệp.
Kết nối SSL thường được khởi tạo cùng với trình duyệt web sử dụng một
URL đặc biệt, ví dụ HTTPS được sử dụng để chỉ ra một kết nối HTTP mã hóa
SSL. HTTPS thường được sử dụng để bảo vệ các truy vấn có tính bảo mật cao.
Chứng chỉ SSL của HTTPS còn có những ích lợi lớn đối với website lưu trữ tài liệu:
Hiện khóa xanh bảo mật, giúp tăng sự tin tưởng của người dùng.
Không bị trình duyệt (Chrome, Firefox, Safari) chặn vì thiếu bảo mật. Thông tin được mã hóa.
Khách truy cập có thể xác minh bạn là một doanh nghiệp đã
đăng ký và bạn sở hữu tên miền.
Giao thức SSL bao gồm bốn tầng giao thức: 10 lOMoARcPSD| 36477832
Record Layer: quy định định dạng của các thông điệp sử dụng bởi các giao
thức khác như: Alert, ChangeCipherSpec, và Handshake. Định dạng quy định
header cho mỗi thông điệp và giá trị băm được sinh bởi MAC. Header có độ dài
5 byte, bao gồm: Protocol Definition (1 byte), Protocol Version (2 byte) và Length (2 byte).
ChangeCipherSpec Protocol: được tạo ra bởi một tin nhắn thông báo rằng
bắt đầu truyền thông an toàn giữa máy chủ và máy khách. Mặc dù Change Cipher
Spec Protocol sử dụng định dạng quy đinh bởi Record Layer nhưng thực tế, thông
điệp chỉ có độ dài là 1 byte, tín hiệu thay đổi trong giao thức có giá trị ‘1’.
Alert Protocol: giao thức thông báo lỗi, vấn đề hoặc những cảnh báo về
kết nối giữa các thành viên. Tầng này có cấu trúc bao gồm hai trường: Severity
Level và Alert Description.
+ Severity Level: có vai trò gửi thông điệp cùng với giá trị ‘1’ hoặc
‘2’, phụ thuộc vào bản thân thông điệp. Severity Level có giá trị ‘1’ tương ứng
với thông điệp cảnh báo; có giá trị ‘2’ là khi là những cảnh báo quan trọng, yêu
cầu các bên tham gia chấm dứt phiên kết nối.
+ Alert Description: chỉ ra các lỗi cụ thể, trường này chỉ có độ dài 1 byte,
có miền giá trị từ 1 đến 12 tương ứng với 12 lỗi nghiêm trọng.
Handshake Protocol : Mọi phiên làm việc của giao thức SSL đều bắt đầu
bằng thủ tục “Handshake”, thủ tục có vai trò trao đổi thông điệp giữa các thành
viên tham gia sử dụng mã hoá công khai với mục đích tạo ra một kênh giao tiếp
an toàn, quá trình được mô tả tại Hình 2.2.
Bước 1 (ClientHello): Máy khách gửi tới máy phục vụ một yêu cầu phiên
giao tiếp an toàn, trong thông điệp bao gồm: phiên bản SSL, cipher setting
(CipherSuite), dữ liệu phiên làm việc (session-specific data) và một số thông tin
khác mà server cần để giao tiếp với client sử dụng SSL.
Bước 2 (ServerHello): Máy phục vụ gửi tới máy khách phiên bản SSL,
cipher setting, dữ liệu phiên làm việc (session-specific data) và một số thông tin
khác mà máy khách cần để giao tiếp với máy phục vụ thông quan kênh giao tiếp 11 lOMoARcPSD| 36477832
SSL. Trong bước này, máy phục vụ cũng gửi tới máy khách chứng thư số sở hữu
của mình (đây chính là SSL một chiều). Nếu máy khách yêu cầu sử dụng tài
nguyên trên máy phục vụ được cấu hình phải xác thực máy khách thì máy phục
vụ sẽ yêu cầu máy khách gửi chứng thư số sở hữu bởi máy khách (đây chính là
SSL hai chiều hoặc là mutual SSL).
Bước 3: Máy khách sử dụng thông tin được gửi bởi máy phục vụ để xác
thực máy phục vụ. Trong trường hợp việc xác thực server thất bại, người dùng sẽ
được cảnh báo và thông báo rằng kết nối mã hoá và xác thực là không thể thực
hiện, trường hợp ngược lại sẽ chuyển sang bước tiếp theo.
Bước 4: Sử dụng tất cả dữ liệu được sinh ra trong bước bắt tay trước, máy
khách tạo ra một pre-master secret cho phiên làm việc này, mã hoá bởi khoá công
khai của máy phục vụ (được lấy từ chứng thư số mà máy phục vụ gửi cho máy
khách trong Bước 2) và gửi tới máy phục vụ.
Bước 5: Nếu server yêu cầu máy khách phải xác thực, máy khách cũng phải
ký lên một mẫu dữ liệu khác (mẫu này là duy nhất và phải được thống nhất giữa
máy khách và máy phục vụ) và gửi mẫu dữ liệu này cùng chứng thư số sở hữu bởi
máy khách kèm với pre-master sercret tới máy phục vụ.
Bước 6: Khi máy phục vụ đã yêu cầu xác thực máy khách, nếu máy khách
không thể xác thực, phiên làm việc sẽ kết thúc. Nếu máy khách xác thực thành
công, máy phục vụ sẽ sử dụng private key của mình để giải mã pre-master secret
và thực hiện một chuỗi các bước để sinh master secret (tại máy khách cũng thực
hiện bước sinh master secret từ cùng một pre-master secret mà máy khách đã gửi cho máy phục vụ).
Bước 7: Cả máy khách và máy phục vụ đều sử dụng master secret để sinh
ra khoá phiên (session key – là khoá đối xứng) và sử dụng khoá này để mã hoá và
giải mã thông tin trao đổi trong suốt phiên làm việc SSL và xác thực tính toàn vẹn của dữ liệu.
Bước 8: Máy khách gửi tin nhắn (message) tới máy phục vụ thông báo rằng
các tin nhắn tiếp theo sẽ được mã hoá sử dụng khoá phiên (session key). Sau đó 12 lOMoARcPSD| 36477832
sẽ gửi một tin nhắn khác (mã hoá sử dụng khoá phiên) để thông báo vai trò của
máy khách trong thủ tục bắt tay kết thúc.
Bước 9: Máy phục vụ gửi một tin nhắn tới máy khách thông báo các tin
nhắn tiếp theo từ máy phục vụ sẽ được mã hoá sử dụng khoá phiên. Sau đó sẽ gửi
một tin nhắn khác thông báo vai trò của máy phục vụ trong thủ tục bắt tay kết thúc.
Hình 2.1 Quá trính SSL Hanshake
2.2.2. Giao thức TLS
Năm 1999, công nghệ TLS được thiết kế để tạo ra chuẩn mã hoá cho giao
tiếp nội bộ. Mục đích của TLS là ngăn chặn việc nghe trộm, giả mạo tin nhắn.
TLS được thiết kế để cung cấp tầng an ninh mã hoá hoàn chỉnh, đảm bảo tính bảo
mật cho thông tin truyền tải giữa các máy chủ. Giao thức TLS được xây dựng dựa
trên hai giao thức con. 2.2.3. Giao thức TLS Record
Giao thức Record giải quyết kết nối riêng tư được thành lập giữa máy khách
và máy chủ. Trong giao thức sử dụng khoá mã hoá đối xứng để đảm bảo kết nối
riêng. Một kết nối có thể bảo đảm bằng việc sử dụng hàm băm, và trong TLS sử
dụng thuật toán MAC (Message Authentication Code) là một dạng hàm băm. 13 lOMoARcPSD| 36477832
Thuật toán MAC cũng tương tự như các hàm băm (hash function), thuật toán
MAC cũng chỉ ra với đầu vào là một khoá bí mật (MAC secret) và một tin nhắn
có độ dài tuỳ ý cần xác thực, hàm MAC sẽ cho ra một đầu ra. Giá trị MAC có tính
năng sử dụng bảo toàn dữ liệu cũng như xác thực. Thuật toán MAC phải xử lý
yêu cầu bảo mật khác các hàm băm ở điểm: Hàm MAC phải chống lại được các
cuộc tấn công giả mạo sử dụng phương pháp chọn bản rõ (Tức là trong trường
hợp kẻ tấn công có thể truy cập CSDL chứa khoá bí mật và giá trị MAC sinh ra
cho các tin nhắn mà kẻ tấn công sử dụng, kẻ tấn công cũng không thể đoán ra giá
trị MAC cho các tin nhắn khác một cách dễ dàng). Thủ tục MAC khác so với chữ
ký số ở điểm giá trị MAC được sinh ra và kiểm tra bởi cùng một khoá bí mật, điều
này có nghĩa rằng người gửi và người nhận phải thoả thuận và thống nhất cùng
một khoá trước khi giao tiếp và đó chính là một trường hợp của mã hoá đối xứng (symetric encryption)
2.2.4. Giao thức Handshake
Giao thức Handshake (bắt tay) cho phép máy chủ và máy khách giao tiếp
hợp lệ với nhau. Giao thức đảm bảo rằng máy chủ và máy khách thoả thuận thuật
toán mã hoá và khoá trước khi gửi và nhận dữ liệu. Giao thức này tạo ra tính xác
thực giữa máy chủ và máy khách.
2.3. Giải pháp đảm bảo an toàn trong lưu trữ quản lý dữ liệu 2.3.1. Sử
dụng SFTP Server để lưu trữ tài liệu cục bộ a) Khái niệm SFTP Server
FTP hay File Transfer Protocol là một trong những giao thức phổ biến nhất để
truyền file. Người dùng muốn thực hiện chuyển file từ nơi này đến nơi khác thì
sẽ cần sử dụng đến những giao thức tương tự như FTP.
SFTP (Secure File Transfer Protocol) như đã nói ở trên là một biến thể bảo mật
hơn của FTP. SFTP giúp ngăn chặn việc chuyển giao thông tin đăng nhập mà
không được mã hóa như giao thức FTP thông thường. Đồng thời, nó cũng tạo ra
một mã định danh duy nhất và phải được truyền lại từ máy khách để hoàn thành 14 lOMoARcPSD| 36477832
việc truyền dữ liệu. Nhờ có các biện pháp này, người dùng có thể yên tâm hơn
khi việc chuyển file với SFTP sẽ có tính bảo mật cao hơn.
SFTP Server là công cụ giúp người dùng chuyển files an toàn qua các giao thức
truyền tải tập tin như SSH File Transfer Protocol hay FTP hỗ trợ SSL/TLS. Việc
chuyển có thể đạt được thông qua mô hình từ máy chủ đến máy chủ hoặc mô hình client-to-server.
Đối với, SFTP Server người dùng sẽ có toàn quyền quản lý các dữ liệu dưới
dạng tập tin và thư mục có trên host (ngoại trừ database). Ngoài ra, khi sử dụng
SFTP Server, người dùng có thể sử dụng máy tính ở xa một cách gián tiếp bằng
việc truyền tải dữ liệu với độ tin cậy và hiệu quả cao.
Hình 2.2 Quá trính truyền file trong SFTP Server
b) Ưu điểm của SFTP Server
+ Ưu điểm lớn nhất của SFTP Server chính là khả năng bảo mật an toàn +
Các thông tin truy cập sẽ được mã hoá và tránh tin tặc đánh cắp thông tin
khi được truyền qua giao thức SFTP.
+ Có thể nâng cao tính bảo mật bằng việc kết hợp xác thực bằng key pair
với tên người dùng và password. 15 lOMoARcPSD| 36477832
+ SFTP Server chỉ sử dụng một kết nối máy chủ để truyền dữ liệu và không
có cổng máy chủ nào khác cần phải mở để nó hoạt động, điều này cũng góp
phần gia tăng tính bảo mật và thân thiện với tường lửa.
c) Nhược điểm của SFTP Server
+ SFTP Server cũng có hạn chế khi khả năng quản lý khóa SSH là tương đối khó khăn.
+ Khi người dùng muốn truyền tệp tin, Private key phải cần được cài đặt
khả năng chống trộm tránh thất lạc.
+ Để kích hoạt các khoá SSH, người dùng cần phải được đào tạo kỹ càng
vì thao tác kích hoạt sẽ khá phức tạp.
2.3.2. Sử dụng JWT để bảo mật trang Web
Đối với bất kỳ một ứng dụng web, di động, desktop…vv chắc chắn các chúng
ta đều đã từng tạo tài khoản, sau đó phải đăng nhập để sử dụng các tính năng bên
trong của ứng dụng, hành động đó gọi là Authentication – xác thực người dùng.
Đầu tiên chúng ta sẽ tìm hiểu sơ qua mô hình đơn giản quá trình các trang web
phổ biến hiện nay sử dụng một Session – Cookie để Authenticate. 16 lOMoARcPSD| 36477832
Hình 2.3 Mô hình hoạt động của JWT
Server sẽ ký một mã JWT sau đó gửi về cho phía client lưu trữ, những request
tiếp theo từ client gửi lên thì phải đính kèm mã JWT này (thông thường là ở
header), server sẽ check mã này và gửi lại response thành công hoặc thất bại tương ứng ngược về client. a) Cấu trúc JSON Web Token
JSON Web Token bao gồm 3 phần, được ngăn cách nhau bởi dấu chấm (.):
Header, Payload, Signature. Vì vậy, 1 JWT sẽ có dạng: Header. Payload. Signature
Phần header sẽ chứa kiểu token (mặc định là JWT - Thông tin này cho biết
đây là một Token JWT), và thuật toán sử dụng để mã hóa ra chuỗi JWT (HMAC, SHA256 hoặc RSA). Ví dụ: 17 lOMoARcPSD| 36477832
Hình 2.4 Ví dụ về header của JWT
● “typ” (type) chỉ ra rằng đối tượng là một JWT
● “alg” (algorithm) xác định thuật toán mã hóa cho chuỗi là HS256
Phần thứ hai của mã thông báo là Payload, chứa các xác nhận quyền sở hữu..
Có ba loại xác nhận quyền sở hữu: xác nhận quyền sở hữu đã đăng ký, công khai
và riêng tư. Nôm na phần Payload chứa các thông tin mà ta muốn lữu trữ trong
JWT. Claims là một biểu thức về một thực thể (chẳng hạn user) và một số
metadata phụ trợ. Ngoài ra còn có một số trường standard fields. Payload chứa
các claims. Có 3 loại claims thường gặp trong Payload: reserved, public và private
claims. Reserved claims là một số metadata được định nghĩa trước, trong đó một
số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông
tin. Ví dụ: iss (issuer - người phát hành JWT), iat (issued at - thời gian JWT được
phát hành) exp (expiration time - thời gian hết hạn JWT), sub (subject), aud
(audience… Public Claims: được cộng đồng công nhận và sử dụng rộng rãi.
Private Claims: tự định nghĩa (không được trùng với Reserved Claims và Public
Claims), được tạo ra để chia sẻ thông tin giữa 2 bên đã thỏa thuận và thống nhất trước đó.Ví dụ: 18 lOMoARcPSD| 36477832
Hình 2.5 Mẫu payload của JWT
Payload sau đó được mã hóa Base64Url để tạo thành phần thứ hai của Mã thông báo web JSON.
Phần Signature sẽ được tạo ra bằng cách mã hóa phần header, payload kèm
theo một chuỗi khoá bí mật (secret key). Ví dụ: nếu chúng ta muốn sử dụng thuật
toán HMAC SHA256, chữ ký sẽ được tạo theo cách sau:
Hình 2.5 Mẫu chữ ký của JWT
Chữ ký được sử dụng để xác minh thông điệp không bị thay đổi trong quá
trình thực hiện và, trong trường hợp các mã thông báo được ký bằng khóa cá nhân,
nó cũng có thể xác minh rằng người gửi JWT là người mà nó nói.
⇨ Kết hợp 3 phần lại với nhau ta sẽ có một mã JWT dùng trong 1 phiên đăng nhập Format:
.payload>. Ví dụ 1 mã JWT: Hình 2.6 Mẫu một mã JWT b) Cách JWT hoạt động
Trong xác thực, khi người dùng đăng nhập thành công bằng thông tin đăng
nhập của họ, Mã thông báo web JSON sẽ được trả lại. Vì mã thông báo là thông 19 lOMoARcPSD| 36477832
tin xác thực nên cần phải hết sức cẩn thận để ngăn chặn các vấn đề bảo mật. Nói
chung, chúng ta không nên giữ các mã thông báo lâu hơn yêu cầu.
Bất cứ khi nào người dùng muốn truy cập vào một tuyến đường hoặc tài
nguyên được bảo vệ, tác nhân người dùng phải gửi JWT, thường là trong tiêu đề
Ủy quyền bằng cách sử dụng lược đồ Bearer. Nội dung của tiêu đề sẽ giống như sau:
Hình 2.7 Định dạng tiêu đề của api
Hình 2.8 Cách thức mà JWT xác thực
Nhìn vào sơ đồ, ta có thể thấy luồng đi như sau 20 lOMoARcPSD| 36477832
● User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản
mạng xã hội lên phía Authentication Server (Server xác thực)
● Authentication Server tiếp nhận các dữ liệu mà User gửi lên để phục vụ cho
việc xác thực người dùng. Trong trường hợp thành công, Authentication
Server sẽ tạo một JWT và trả về cho người dùng thông qua response.
● Người dùng nhận được JWT do Authentication Server vừa mới trả về làm
"chìa khóa" để thực hiện các "lệnh" tiếp theo đối với Application Server.
● Application Server trước khi thực hiện yêu cầu được gọi từ phía User, sẽ
verify JWT gửi lên. Nếu OK, tiếp tục thực hiện yêu cầu được gọi.
Phương thức xác thực khi nhận mã JWT của server: Chuỗi JWT có cấu
trúc H.P.S được Client gửi lên. Server sẽ làm tương tự như sau: ● Set S1 = S
● Set S2 = HMAC(SHA256(H.P) với secret key của hệ thống) (Giả sử hệ
thống sử dụng encryption algorithms SHA256) ● So sánh S1 == S2 ?
Nếu S1 và S2 khớp nhau, tức là chữ ký hợp lệ, hệ thống mới tiếp decode
payload và tục kiểm tra các data trong payload. Ví dụ trường exp (expiration date)
2.3.3. Xác thực 2 lớp Two-Factor Authentication (2FA)
Two-Factor Authentication (thường viết tắt là 2FA hoặc TFA) là một
phương pháp xác thực người dùng dựa trên 2 yếu tố, một là mật khẩu (thứ phổ
biến nhất) và thứ hai là một thứ mà người dùng sở hữu, có quyền truy cập đến, ví
dụ như dấu vân tay, tin nhắn SMS, gửi mã token tới Email hoặc tốt hơn nữa là
One-time Password (OTP) (mật khẩu một lần có giới hạn hiệu lực theo thời gian). 21 lOMoARcPSD| 36477832
One-time Password hay còn được viết tắt là OTP là một loại mã token mà
chỉ có thể được sử dụng một lần rồi sau đó nó sẽ bị hủy, không được phép sử dụng tới lần thứ hai.
HMAC-based One-Time Password – HOTP là một thuật toán sinh mã OTP
dựa trên hàm băm HMAC_SHA-1, nó sử dụng 2 thành phần: thứ nhất là một
Chuỗi Secret cố định, còn thành phần thứ hai là một bộ đếm (Counter) bộ đếm
này dùng một cái là “Moving-Factor”
Time-based One-time Password – TOTP về cơ bản chỉ khác HOTP ở chỗ
là TOTP sẽ sử dụng “thời gian” (Time) để làm bộ đếm (Counter) thay vì “Moving
Factor” như HOTP. Chính vì việc sử dụng counter là thời gian nên phía Server
lẫn Client khi đã có chung Secret Key rồi thì không cần có sự tương tác qua lại
nữa. Vì cả 2 phía đều có quyền truy cập vào thời gian.
Hình 2.9. Quá trình tạo mã OTP và đăng nhập bằng OTP
Để thực hiện xác thực 2 lớp cần 3 chức năng để xử lý OTP token. Từ đó cần sử
dụng module otplib để viết 3 function đảm nhiệm 3 chức năng độc lập. 22 lOMoARcPSD| 36477832
Hình 2.10. Các function xử lý OTP token bằng otplib
Đối với xác thực 2 lớp là không bắt buộc nên mỗi tài khoản cần cấu hình
is2FAEnabled để xác định mỗi người dùng có cần xử dụng xác thực hai lớp hay
không. Mỗi một User sẽ đi kèm với một mã secret duy nhất, và mã secret này
cũng bắt buộc phải lưu tương ứng với thông tin của user đó trong cơ sở dữ liệu
tùy theo thiết kế Database 23 lOMoARcPSD| 36477832
Hình 2.11. Xử lý OTP token và tạo ảnh gửi về cho client
Sau khi đã có được QR Code, thông qua xử lý của Google Authenticator sẽ sinh
ra một mã OTP tồn tại trong 1 phút, lúc này client sẽ gửi mã OTP về cho server kiểm tra và xác thực.
Hình 2.12. Xử lý token client gửi lên cho server xác thực
2.4. Môi trường phát triển dự án an toàn
2.4.1. Môi trường phát triển source code
Phần mềm được phát triển trên môi trường develop với 2 ngôn ngữ chính
là Vuejs và Nodejs. Với trình IDE là Visual Studio Code.
Vue.js (hay đơn giản là Vue) là một framework JavaScript mã nguồn mở,
dùng để xây dựng giao diện người dùng (UI) và các ứng dụng single-page (SPA).
Vue mở rộng HTML và CSS tiêu chuẩn để tạo ra một bộ công cụ mạnh mẽ để xây
dựng giao diện người dùng của các ứng dụng responsive web.
Hoạt động trong framework model-view-viewmodel (MVVM), thư viện
chính của Vue tập trung vào lớp viewmodel, cung cấp đồng bộ hóa reactive giữa
các lớp model và view thông qua liên kết dữ liệu hai chiều. Điều này giúp đơn
giản hóa việc tạo các ứng dụng web hiện đại dựa trên mô hình ứng dụng
singlepage (SPA). Một số ứng dụng web phổ biến dựa vào Vue.js để tạo ra các
giao diện người dùng mạnh mẽ như: Netflix, Chess.com, GitLab, Grammarly, Statista… 24 lOMoARcPSD| 36477832
Với ưu điểm kích thước nhỏ gọn, dễ dàng để tìm hiểu và phát triển ứng
dụng, tích hợp đơn giản, có tính linh hoạt và giao tiếp 2 chiều là lý do chọn Vuejs trong dự án.
NodeJS vốn là môt JavaScript runtime được chạy theo hướng sự kiệ ṇ
không đồng bô. Đơn vị thiết kế và phát triển NodeJS được thiết kế để xây dựng ̣
lên các ứng dụng khác nhau. Và có thể mở rông chúng nhanh, tiết kiệ m chi phí ̣
nhất. NodeJS chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiêṇ
Event-dtiven. Cùng với đó là cơ chế non-blocking I/O làm cho nó nhẹ và hiêụ quả
hơn so với các lựa chọn khác có chức năng tương tự.
2.4.2. Môi trường phát triển Cơ sở dữ liệu
Hệ thống sử dung cơ sử dữ liệu MongoDB. MongoDB là một database
hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh
cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON
có một schema rất linh hoạt gọi là BSON. MongoDB sử dụng lưu trữ dữ liệu dưới
dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document
khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.
Các tính năng của MongoDB gồm có:
● Các ad hoc query: hỗ trợ search bằng field, các phép search thông
thường, regular expression searches, và range queries.
● Indexing: bất kì field nào trong BSON document cũng có thể được index.
● Replication: có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt
phiên bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ
lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị mất mát trước những sự cố
ngoài dự đoán là rất cao. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”, 25 lOMoARcPSD| 36477832
tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và
lưu trữ ở một nơi khác, đề phòng có sự cố.
● Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và
trả về kết quả đã được tính toán. Các phép toán tập hợp nhóm các giá trị
từ nhiều Document lại với nhau, và có thể thực hiện nhiều phép toán đa
dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong
SQL, count(*) và GROUP BY là tương đương với Aggregation trong MongoDB.
● Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng
những function trên và hoạt động như một cách phân phối qua sharding. 26 lOMoARcPSD| 36477832
CHƯƠNG 3. PHÂN TÍCH, THIẾT KẾ HỆ THỐNG
3.1 Bài toán đặt ra và phương hướng giải quyết
3.1.1. Mục đích thực tế của đề tài
Tìm hiểu thực tế quá trình lưu trữ tài liệu ở Học viện Kỹ thuật Mật mã từ
đó xây dựng một phần mềm quản lý lưu trữ tài liệu để hỗ trợ cán bộ của nhà
trường trong công tác quản lý và tổ chức công tác văn thư lưu trữ. 3.1.2. Mô tả
công tác quản lý lưu trữ tại Học viện Kỹ thuật Mật mã
Lưu trữ tài liệu là công việc thường xuyên được tiến hành mỗi tại phòng
lưu trữ của Học viện Kỹ thuật Mật mã và có thể được mô tả sơ bộ như sau:
Hàng năm phòng lưu trữ tiến hành thu thập tài liệu theo quy định của nhà
nước. Sau đó đưa vào bảo quản tập trung thống nhất tại kho lưu trữ. Sau khi đơn
vị nộp giao tài liệu cho phòng lưu trữ, nhân viên lưu trữ sẽ ghi lại vào sổ nhập tài
liệu và 2 bên giao nhận tài liệu là đơn vị nộp giao tài liệu và lưu trữ hiện hành sẽ
phải ký vào biên bản giao nhận tài liệu. Sau đó nhân viên hai trữ sẽ tiến hành
chỉnh lý phân loại để lập hồ sơ tài liệu. Có hồ sơ rồi thì thống kê mục lục để tra
cứu phục vụ khai thác hàng ngày.
Người đến khai thác, sử dụng tài liệu lưu trữ vì mục đích công vụ phải có
văn bản đề nghị hoặc giấy giới thiệu của cơ quan, tổ chức nơi công tác sau đó
chuyển cho nhân viên phòng lưu trữ. Nhân viên phỏng lưu trữ sẽ dựa vào thông
tin ghi trong giấy giới thiệu để tìm kiếm thường dựa vào số ký hiểu văn bản, ngày
tháng năm phát hành văn bản hoặc cơ quan tổ chức ban hành văn ban để xác định
xem tài liệu đó thuộc hồ sơ nào. Sau khi tìm thấy văn bản nhân viên lưu trữ sẽ
photocopy văn bản đó và chuyển đến người khai thác tài liệu. Người mượn tài
liệu sẽ phải ký nhận vào số phục vụ khác thác tài liệu.
Ngoài các văn bản tài liệu được lưu trữ, cũng có văn bản ban hành thông
tin đến các cán bộ có thẩm quyền hoặc tới toàn bộ các cán bộ đang công tác trong nhà trường. 27 lOMoARcPSD| 36477832
Thông thường các văn bản này thường được soạn thảo và gửi đến cấp trên xem
xét. Tuy nhiên văn bản cần trả qua các quy trình duyệt và sửa đổi khắt khe trước
khi được ký bởi Giám đốc học viện và ban hành trên website của nhà trường.
3.2 Phân tích thiết kế hệ thống
3.2.1. Biểu đồ ngữ cảnh của hệ thống
Hình 3.1. Biểu đồ ngữ cảnh của hệ thống Mô tả tương tác: -
Quản trị viên: Yêu cầu các cập nhật và tra cứu các danh mục quản
trị,thông tin các tài khoản tới hệ thống, hệ thống sẽ gửi lại các thông tin, trạng thái
theo yêu cầu của quản trị viên. -
Cán bộ nhà trường: Gửi thông tin về tài liệu yêu cầu tới hệ thống
vànhận lại thông tin về tài liệu đó. Ngoài ra cán bộ nhà trường còn có thể ban
hành các văn bản tài liệu thông qua sự chấp nhận của các cán bộ khác có thẩm quyền liên quan. 28 lOMoARcPSD| 36477832
3.2.2. Sơ đồ phân rã chức năng
Hình 3.2. Sơ đồ phân rã chức năng
Mô tả chi tiết các chức năng a) Cập nhật
- Cập nhật tài liệu: Cán bộ sẽ tiến hành cập nhật tài liệu hoặc cập
nhật trạng thái của tài liệu trong luồng duyệt.
- Cập nhật tài khoản: Chức năng này được thực hiện khi Phòng văn
thư có sự thay đổi về nhân sự.
- Cập nhật chức vụ: Chức năng này ít khi được sử dụng chủ yếu
khi mới khởi tạo hệ thống hoặc có sự thay đổi về chức vụ.
- Cập nhật phòng ban: Chủ yếu sử dụng khi khởi tạo hệ thống hoặc
cập nhật phòng ban mới.
- Cập nhật loại tài liệu: Chủ yếu sử dụng khi khởi tạo hệ thống hoặc
cập nhật loại tài liệu mới. b) Tra cứu 29 lOMoARcPSD| 36477832
- Tra cứu tài liệu: Khi muốn xem thông tin của bất ký văn bản nào
đó thì có thể tìm qua chức năng Tra cứu của văn bản. Có thể tìm
kiếm bằng tên văn bản.
- Tra cứu tài khoản: Chức năng này được thực hiện khi muốn tìm
kiếm tài khoản để xem hoặc cập nhật thông tin của tài khoản.
- Tra cứu chức vụ: Chức năng này được thực hiện khi muốn tìm
kiếm chức vụ để xem hoặc cập nhật thông tin của chức vụ.
- Tra cứu phòng ban: Chức năng này được thực hiện khi muốn tìm
kiếm phòng ban để xem hoặc cập nhật thông tin của phòng ban.
- Tra cứu loại tài liệu: Chức năng này được thực hiện khi muốn tìm
kiếm loại tài liệu để xem hoặc cập nhật thông tin của loại tài liệu. c) Báo cáo
- Báo cáo về văn bản ban hành: Hệ thống sẽ cung cấp báo cáo số
lượng về các văn bản được ban hành.
- Báo cáo về văn bản từ chối duyệt: Hệ thống sẽ cung cấp báo cáo
số lượng về các văn bản từ chối duyệt.
- Báo cáo về văn bản chờ duyệt: Hệ thống sẽ cung cấp báo cáo số
lượng về các văn bản được chờ duyệt.
3.2.3. Mô hình liên kết thực thể a) Các loại thực thể
- Tài liệu (Mã tài liệu, Tên tài liệu, Loại tài liệu, Trạng thái, link
SFTP, link GoogleDrive, Tên file, Phiên bản, Luồng duyệt, Mã chủ sở hữu)
- Tài khoản (Mã tài khoản, Họ và tên, username, Email, Giới tính,
Ngày sinh, Số điện thoại, Mật khẩu, Trạng thái, Mã chức vụ, Quyền)
- Phòng ban (Mã phòng ban, Tên phòng ban)
- Chức vụ (Mã chức vụ, Tên chức vụ, Mã phòng ban, Cấp độ) 30 lOMoARcPSD| 36477832
- Loại tài liệu (Mã loại tài liệu, Tên loại tài liệu, Mô tả)
b) Mối quan hệ phụ thuộc
Một tài khoản có thể tạo ra được nhiều tài liệu trên hệ thống.
Mỗi tài khoản chỉ được phép mang một chức vụ.
Mỗi phòng ban sẽ có các chức vụ khác nhau, thể hiện quyền hạn khác nhau.
Mỗi tài liệu thuộc một loại tài liệu để phân loại các văn bản tài liệu cho mục đích sử dụng khác nhau.
Trong quá trình duyệt nhiều người có thể tham gia duyệt tài liệu đồng thời một
người có thể duyệt được nhiều tài liệu. 3.2.4. Mô hình Usecase 31 lOMoARcPSD| 36477832
Hình 3.3 Mô hình Usecase cho hệ thống
Trong mô hình xây dựng hệ thống cơ bản có 2 actor chính là người dùng và admin.
Với những vai trò dành cho admin như dưới đây: -
Quản lý tài liệu: admin có thể xem, sửa xóa và thay đổi các trạng
tháicủa tài liệu của bản thân nhưng actor Admin không tham gia vào luồng duyệt
tài liệu chính mà chỉ mang tính quản lý các tài liệu. -
Quản lý loại tài liệu: Người dùng có thể thêm sửa xóa các loại tài
liệuphục vụ cho việc quản lý các tài liệu. -
Đăng nhập: chức năng này dùng để xác thực người dùng (có tích hợp JWT để xác thực) -
Xem trang chủ: về cơ bản trang này mới chỉ phục vụ chức năng
xemthông tin đăng nhập và xem số lượng các tài liệu ở các trạng thái. 32 lOMoARcPSD| 36477832 -
Quản lý chức vụ: Người dùng có thể thêm sửa xóa các chức vụ phục
vụcho việc quản lý người dùng. -
Quản lý phòng ban: Người dùng có thể thêm sửa xóa các phòng
banphục vụ cho việc quản lý người dùng và duyệt tài liệu. 3.2.5. Mô hình triển
khai cơ sở hạ tầng
Về công nghệ áp dụng trong ứng dụng thì sẽ có: -
Nodejs: Một framework chịu trách nhiệm cho phần backend, xây
dựngapi để frontend có thể kết nối tới. -
Vuejs: Ta sẽ dùng framework này cho việc xây dựng frontend. -
JWT: được tích hợp luôn trong backend(Rails) - SFTP server: dùng
để lưu trữ các file trên máy chủ. -
Google Drive: dùng để lưu trữ các file trên cloud.
Mô hình triển khai cơ sở hạ tầng cho ứng dụng: 33 lOMoARcPSD| 36477832
Hình 3.4 Mô hình triển khai cơ sở hạ tầng
Qua mô hình trên, có thể thấy có 5 yếu tố chính, đó là Vuejs để hiển thị
giao diện người dùng, Nodejs để thực hiện các request từ Vuejs đồng thời tương
tác dữ liệu qua lại với MongoDB, SFTP Server, Google Drive, MongoDB để lưu
dữ liệu chính trên web và SFTP Server và Google Drive để lưu các file tài liệu.
3.3 Phân tích thiết kế luồng chức năng
3.3.1. Thiết kế chức năng đăng nhập
Hình 3.5. Sơ đồ chức năng đăng nhập
Khi người dùng vào trang đăng nhập sẽ cần phải thực hiện nhập username và
password vào form nhập. Hệ thống sẽ kiểm tra thông tin đó nếu trùng với dữ liệu
trong cơ sở dữ liệu sẽ cho đăng nhập, ngược lại sẽ thông báo lỗi.
3.3.2. Thiết kế luồng quản lý nhân viên
Hình 3.6. Sơ đồ chức năng quản lý nhân viên
Người dùng để có thể cập nhật được một tài khoản cần tìm kiếm thông tin tài
khoản đó. Nếu có tài khoản trùng khớp với thông tin nhập sẽ thực hiện di chuyển
sang màn hình cập nhật tài khoản. Sau đó có thể chỉnh sửa thông tin và lưu lại trên hệ thống. 34 lOMoARcPSD| 36477832
3.3.3. Thiết kế luồng duyệt tài liệu
Hình 3.7. Sơ đồ luồng duyệt tài liệu
Luồng duyệt trên cơ bản là quá trình của một tài liệu từ lúc mới tạo đến lúc được
ban hành. Khi tài liệu được yêu cầu tới người cần duyệt, nếu tài liệu không hợp
lệ vì một vài lý do nào đo, người duyệt có thể từ chối duyệt kèm theo lý do từ
chối. Lúc này người tạo tài liệu ban đầu phải chỉnh sửa lại tài liệu. Trong trường
hợp tài liệu hợp lệ nhưng người duyệt chưa đủ thẩm quyền có thể yêu cầu thêm
người khác xem xét và duyệt cùng. Nếu tài liệu được duyệt bởi người có đủ thẩm
quyền họ có thể ban hành tài liệu cho các nhân viên. Lúc này tài liệu đã được hoàn tất quá trình duyệt. 35 lOMoARcPSD| 36477832
3.4 Mô hình cơ sở dữ liệu
Hình 3.8 Mô hình cơ sở dữ liệu
Theo sơ đồ trên, chúng ta sẽ có 6 bảng trong cơ sở dữ liệu, đó là bảng Document,
documentType, User, Department, Position và Role. Các bảng được liên kết với
nhau thông qua các khóa ngoại, tạo ra sự móc nối dữ liệu trong ứng dụng.
Bảng Document lưu thông tin, link tài liệu, và luồng quá trình duyệt của tài liệu.
Bảng User lưu thông tin người dùng để đăng nhập vào hệ thống. Bảng phân Role
để phân quyền cho các User tham gia hệ thống và các bảng khác bổ trợ cho quá
trình lưu trữ, chức năng và luồng duyệt chính của tài liệu.
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG 36 lOMoARcPSD| 36477832
4.1. Chức năng chính của hệ thống
4.1.1. Chức năng Đăng nhập
Phần đầu tiên khi mới truy cập vào trang web là chức năng đăng nhập. Chức
năng sử dụng bảng User tương tác qua nodejs và xác thực qua phương thức JWT.
Ta nên chọn phương thức này cho việc xác thực đăng nhập cho ứng dụng vì nó
khá phổ biến và có tính bảo mật cao.
Hình 4.1 Màn hình đăng nhập
Khi đăng nhập vào ứng dụng thì backend sẽ kiểm tra user và password xác
thực, nếu đúng sẽ trả về 1 token JWT, nếu sai sẽ trả về status 401 Unauthorized: 37 lOMoARcPSD| 36477832
Hình 4.2 Dữ liệu trả về khi đăng nhập thành công
Token được đặt trong phần Authorization trong response trả về sau khi đăng
nhập, nắm vai trò xác thực khi phía frontend muốn truy cập vào api. Từ giờ, khi
mà frontend hay bất kỳ đối tượng nào truy cập vào api cũng cần phải có đoạn
token này. Một trong những đoạn code cần JWT để xác thực: 38 lOMoARcPSD| 36477832
Hình 4.3 Đoạn code xử lý đăng nhập
Hình 4.4 Đoạn code xử lý đăng nhập
Tiếp theo là giao diện của trang chủ sau khi đã được. Trang chủ hiển thị nội
dung tổng quan các tài liệu và thông tin người đăng nhập. Hình 4.5 Trang chủ
Các thông tin của người đăng nhập sau khi login được lưu trong
LocalStorage và thông tin token được lưu trong Cookie. 39 lOMoARcPSD| 36477832
Hình 4.6 Thông tin user được lưu ở LocalStorage
Hình 4.7 Thông tin token được lưu ở Cookies
Sau khi đăng nhập tùy vào role của người login là gì thì menu hiển thị các chức
năng người đó có quyền hạn sử dụng trong hệ thống.
Với quyền là ROLE_ADMIN người dùng có tất cả quyền truy cập và thao tác và
với quyền ROLE_USER người dùng chỉ có quyền xem trang chủ và tạo, chỉnh
sửa, xem các tài liệu của mình tạo ra. 40 lOMoARcPSD| 36477832
Hình 4.8 Left menu của tài khoản Admin và User
Với mỗi một loại tài khoản sẽ có các quyền sử dụng chức năng nhất định trong
hệ thống. Ứng với mỗi quyền đó sẽ hiển thị cho họ các mục được phép truy cập
trong hệ thống. Như ở trên hình 4.8, tài khoản Admin có tất cả quyền trong khi
đó tài khoản user chỉ có quyền thao tác với tài liệu của chính họ.
4.1.2. Chức năng Quản lý và duyệt tài liệu
Trong phần quản lý tài liệu, người dùng có thể tạo các tài liệu với các thông tin
cơ bản như Tên tài liệu, Loại tài liệu, Người sở hữu, tải tệp tài liệu ở dạng docx,
pdf, pptx, xls. Ngoài ra tài liệu có thể đưa vào luồng duyệt để ban hành tới các
nhân viên trong hệ thống. File tài liệu có thể lưu trong FSTP Server hoặc Google Drive hoặc là cả 2. 41 lOMoARcPSD| 36477832
Hình 4.9 Trang tạo mới tài liệu
Khi tài liệu được tạo thành công sẽ được hiển thị trên màn hình danh sách tạo mới.
Việc quản lý luồng duyệt tài liệu phát sinh nhiều thao tác tới duyệt tài liệu. Từ đó
tạo ra các màn hình danh sách để việc quản lý trở nên chặt chẽ và dễ dàng hơn.
Hình 4.10 Trang danh sách tài liệu được tạo mới
Sau khi tạo mới có thể yêu cầu người có thẩm quyền duyệt bằng cách ấn nút Yêu
cầu duyệt. Lúc này Tài liệu được đưa vào trong quá trình duyệt. 42 lOMoARcPSD| 36477832
Hình 4.11 Trang danh sách tài liệu chờ duyệt
Đối với người được yêu cầu duyệt tài liệu này có thể thấy được văn bản xuất hiện
trong màn hình Danh sách chờ duyệt của họ kèm theo người sở hữu của tài liệu đó.
Hình 4.12 Trang danh sách tài liệu cần duyệt
Lúc này người duyệt văn bản sẽ xem văn bản này và sẽ phát sinh một vài hành động để xử lý.
Trường hợp 1: Văn bản đã hợp lệ và người duyệt là người có đủ thẩm quyền thì
có thể ấn nút Duyệt. Mặt khác văn bản nếu đủ điều kiện để ban hành cho các cấp
đơn vị người duyệt có thể ấn nút Duyệt và ban hành. Trong trường hợp chỉ ấn nút
Duyệt văn bản sẽ chờ chủ sở hữu ban hành.
Hình 4.13 Trang danh sách tài liệu đã ban hành
Trường hợp 2: Văn bản hợp lệ nhưng một số hạng mục chưa rõ dàng hoặc bản
thân người duyệt chưa có đủ thẩm quyền hoặc năng lực cần người có vị trí cao
hơn xử lý tiếp, người duyệt có thể ấn nút Duyệt và yêu cầu duyệt để yêu cầu một
người khác đánh giá và duyệt tiếp văn bản này. 43 lOMoARcPSD| 36477832
Hình 4.14 Modal yêu cầu duyệt thêm
Hệ thống sẽ mở lên một modal để người duyệt có thể chọn một người duyệt thêm
cho văn bản này. Khi đó văn bản sẽ được chuyển đến người tiếp theo.
Trường hợp 3: Văn bản không hợp lệ hoặc cần chỉnh sửa, người duyệt có thể từ
chối duyệt bằng cách ấn nút Từ chối.
Hệ thống sẽ mở lên một modal để người duyệt nhập lý do tạo sao từ chối duyệt
văn bản này. Khi đó văn bản sẽ được chuyển về chủ sở hữu kèm nội dung từ chối.
Hình 4.15 Mục xem lý do từ chối duyệt
Khi chủ sở hữu chỉnh sửa và cần người duyệt xem xét và duyệt lại thi ấn nút Yêu cầu duyệt lại. 44 lOMoARcPSD| 36477832
Hình 4.16 Danh sách tài liệu bị từ chối duyệt
Luồng duyệt của văn bản này cứ tiếp diễn cho đến khi được duyệt và ban hành.
Khi đó văn bản có thể được thấy bởi các user trong hệ thống.
4.1.3. Chức năng quản lý người dùng
Cũng là một trong các chức năng chính của hệ thống. Các tài khoản tham
gia vào hệ thống cần được quản lý với quyền ROLE_ADMIN.
Admin sẽ tạo các tài khoản User để đăng nhập và thao tác với văn bản.
Tài khoản sẽ bao gồm Họ và tên, Username, Email, Số điện Thoại, Giới
tính, Ngày sinh, Trạng thái và Chức vụ. Chức năng sẽ được liên kết với bảng User.
Hình 4.17 Trang tạo mới user
Khi thêm mới một user thành công, họ có thể tham gia vào hệ thống nếu Trạng
thái được active. Người dùng mới sẽ hiện trên danh sách user. 45 lOMoARcPSD| 36477832 Hình 4.18 Danh sách users
4.1.4. Chức năng quản lý chức vụ
Mỗi user sẽ mang một chức vụ nhất định và dựa vào đó có thể biết được vai trò
của họ trong việc thẩm quyền duyệt tài liệu.
Chức vụ sẽ bao gồm Tên chức vụ, Phòng ban và cấp độ.
Hình 4.19 Màn hình tạo mới chức vụ
Khi thêm mới chức vụ thành công sẽ hiển thị trên danh sách chức vụ và admin có
thể thao tác Sửa hoặc Xóa chức vụ đó. 46 lOMoARcPSD| 36477832
Hình 4.20 Màn hình danh sách chức vụ
4.1.5. Chức năng quản lý phòng ban
Phòng ban là một phần trong tổ chức, doanh nghiệp hoặc cơ quan nhà nước,
với nhiệm vụ đặc trưng và trách nhiệm riêng để đóng góp cho mục tiêu chung của
tổ chức đó. Mỗi phòng ban thường có một số lượng nhân viên và lãnh đạo được
bổ nhiệm để quản lý hoạt động của phòng ban đó.
Mỗi phòng ban có chức năng, nhiệm vụ và mục tiêu cụ thể có thể phụ thuộc
vào loại cấu hình tổ chức. Ví dụ, phòng ban kế toán phụ trách việc ghi chép và
giám sát viên tài chính của tổ chức, trong khi phòng ban sản xuất chịu trách nhiệm
sản xuất sản phẩm hoặc cung cấp dịch vụ.
Phòng ban của hệ thống sẽ bao gồm Tên phòng ban và cấp độ. 47 lOMoARcPSD| 36477832
Hình 4.21 Màn hình tạo mới phòng ban
Khi thêm mới phòng ban thành công sẽ hiển thị trên danh sách phòng ban và
admin có thể thao tác Sửa hoặc Xóa phòng ban đó.
Hình 4.22 Màn hình danh sách phòng ban
4.1.6. Chức năng quản lý loại tài liệu
Mỗi tài liệu có thể mang các đặc tính khác nhau và mục đích sử dụng cũng
khác nhau nên cần có một thuộc tính để phân biệt giữa các loại tài liệu đó. Loại
tài liệu sẽ bao gồm Tên loại tài liệu và mô tả. 48 lOMoARcPSD| 36477832
Hình 4.23 Màn hình tạo mới loại tài liệu
Khi thêm mới loại tài liệu thành công sẽ hiển thị trên danh sách loại tài liệu và
admin có thể thao tác Sửa hoặc Xóa loại tài liệu đó.
Hình 4.24 Màn hình danh sách loại tài liệu
4.1.7. Chức năng cấu hình hệ thống
Hệ thống quản lý và lưu trữ tài liệu đang sử dụng lưu trữ bằng hai hình thức là
SFTP Server và Google Drive. Việc cấu hình trong tương lai có thể thay đổi do
nhiều yếu tố nên phát sinh nhu cầu cần lưu cấu hình và sửa đổi một cách nhanh chóng và dễ dàng. 49 lOMoARcPSD| 36477832
Hình 4.25 Màn hình cấu hình server
Cấu hình các server được lưu dưới dạng JSON và lưu trực tiếp trong file hệ source
nên không cần một bảng trên cơ sở dữ liệu để lưu trữ.
Hình 4.26 Các file lưu trữ cấu hình hệ thống
Và khi cần có một Controller thực hiện việc lưu và lấy dữ liệu cấu hình khi cần
như trong trường hợp lưu file trong hạng mục Thêm tài liệu hay get file trong hạng mục xem tài liệu. 50 lOMoARcPSD| 36477832
Hình 4.27 Đoạn code xử lý get và set cấu hình hệ thống KẾT LUẬN
Sau một quá trình với em là rất dài dành ra để nghiên cứu và thực hiện đồ
án dưới sự chỉ dẫn của ThS. Lê Đức Thuận. Em cũng đã phần nào đạt được các
yêu cầu đề ra của đồ án, cụ thể như sau:
Chương 1 đã hiểu rõ ràng về khái niệm quản lý lưu trữ tài liệu cũng như
tầm quan trọng của những ứng dụng này. Hơn thế nữa là khả năng bảo mật của
những ứng dụng như thế này đang có thực trang ra sao để có thể đưa ra giải pháp
cụ thể cho việc xây dựng ứng dụng quản lý lưu trữ tài liệu.
Chương 2 đã tìm hiểu và nghiên cứu sâu hơn về SFTP, cấu trúc của SFTP,
cách thức nó hỗ trợ cũng như các giao thức nhằm bảo đảm an toàn bảo mật cho
các ứng dụng sử dụng. 51 lOMoARcPSD| 36477832
Chương 3 em đã tổng hợp những kiến thức mình nghiên cứu được kết hợp
với những kiến thức mình đã có để xây dựng lên một ứng dụng quản lý lưu trữ tài
liệu có yếu tố an toàn bảo mật
Chương 4 em đã nêu lên việc cấu hình và triển khai ứng dụng đó như thế
nào hướng tới vấn đề thực tế của dự án trong việc triển khai sau này
Mặc dù vậy thì tại đồ án lần này em mới chỉ triển khai tích hợp ứng dụng
với một số công nghệ cơ bản, vẫn còn rất nhiều vấn đề về nâng cao về khả năng
bảo mật, đảm bảo tính an toàn của hệ thống khi tích hợp các công nghệ này. Đây
cũng là một động lực giúp em cố gắng học tập và phát triển bản thân hơn trong
tương lại để có thể tạo ra những sản phẩm bảo mật chất lượng hơn thế nữa.
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt: [1].
Nguyễn Hồng Sơn – JWT - Từ cơ bản đến chi tiết:
https://viblo.asia/p/JWT-tu-co-ban-den-chi-tiet-LzD5dXwe5jY
[2]. Trung Quân - NodeJS triển khai xác thực 2 lớp Two-Factor
Authentication (2FA): https://trungquandev.com/nodejs-trien-khai-xac-thuc-2-
lop-two-factorauthentication-2fa
Tài liệu tiếng Anh: [1] SFtp Node.js Reference Documentation, Online:
https://www.chilkatsoft.com/refdoc/nodejsSFtpRef.html
[2] Protocol Negotiation Extensions to Secure FTP:
https://datatracker.ietf.org/doc/draft-bonachea-sftp/ [3] React.js Security Guide:
https://relevant.software/blog/react-js-security-guide/
[4] Docs JWT – Introduction to JSON Web Tokens: https://JWT.io/introduction
PHỤ LỤC 1: CẤU HÌNH SOLARWIND SFTP SERVER 52 lOMoARcPSD| 36477832
Máy chủ SFTP / SCP từ SolarWinds là một hệ thống truyền tệp an toàn.
Mặc dù mã hóa được bao gồm trong dịch vụ này có thể giúp tiện ích này phù hợp
để truyền tệp qua internet, SolarWinds xem Máy chủ SFTP / SCP như một công
cụ dành cho quản trị viên mạng thay vì người dùng cuối.
Cần cấu hình cho SFTP để hệ thống có thể kết nối được:
Trước tiên cần cấu hình thư mục Root lưu các file tài liệu trong trong Root
Directory. Chấp nhận cả 2 SCp và SFTP bằng cách chọn Both trong Allowed Protocols .
Hình 3.8 Cấu hình thư mục và phương thức cho SFTP Server
Sau đó cấu hình port cho server thành 22 trong tab TCP/IP Settings. 53 lOMoARcPSD| 36477832
Hình 3.9 Cấu hình cổng cho SFTP Server
Và cuối cùng cấu hình username để truy cập vào SFTP Server ở tab Users.
Hình 3.10 Cấu hình tài khoản cho SFTP Server
PHỤ LỤC 2: CẤU HÌNH TÀI KHOẢN GOOGLE DRIVE 54 lOMoARcPSD| 36477832
Việc sao lưu trên cloud rất thuận tiện do cơ chế linh hoạt, tiện lợi và dễ dang
truy xuất nếu cần thiết. Việc thiết lập thông qua giao thức OAuth 2.
OAuth 2 là một phiên bản tiếp theo của giao thức OAuth (Open Authorization),
là một tiêu chuẩn được thiết kế để cho phép một trang web hoặc ứng dụng truy
cập vào tài nguyên được lưu trữ bởi các ứng dụng web khác thay mặt cho người dùng.
Ở cấp độ cơ bản nhất, trước khi có thể sử dụng OAuth 2.0, Client phải có thông
tin đăng nhập riêng, client ID và client secret từ Authorization Server để nhận
dạng và xác thực chính nó khi yêu cầu mã Access token.
Sử dụng OAuth 2.0, các yêu cầu truy cập do client khởi tạo, ví dụ như ứng
dụng dành cho thiết bị di động, trang web, ứng dụng TV thông minh, ứng dụng
dành cho máy tính để bàn,… yêu cầu mã token, trao đổi và phản hồi tuân theo quy trình chung sau:
Client yêu cầu ủy quyền (Authorization Request) từ Authorization Server,
cung cấp client ID và secret làm nhận dạng. Đồng thời, cũng cung cấp các scope
và endpoint URI (redirect URI) để gửi Access Token hoặc Authorization Code.
Authorization Server xác thực client và xác minh rằng scope yêu cầu được cho phép.
Resource owner tương tác với Authorization Serve để cấp quyền truy cập.
Authorization Server chuyển hướng trở lại client bằng Authorization Code hoặc
Access Token, tùy thuộc vào loại. Refresh Token cũng có thể được return. Với
Access Token, client yêu cầu quyền truy cập vào tài nguyên từ máy Resource server. 55 lOMoARcPSD| 36477832
Hình 4.28 Cách thức hoạt động của OAuth 2.0.
Để cấu hình cho hệ thống bằng OAuth của Google ta truy cập vào link
https://developers.google.com/oauthplayground/ và đăng nhập tài khoản Google.
Trên màn hình Google Develop, chọn Drive API v3 rồi chọn
https://www.googleapis.com/auth/drive 56 lOMoARcPSD| 36477832
Hình 4.29 Chọn Drive API trong cấu hình Google Develops
Sau đó chúng ta cấu hình các thông số tài khoản Google của chúng ta và mục setting của màn hình.
Hình 4.30 Cấu hình OAuth 2.0
Có hai thông số quan trọng cần phải cài đặt là OAuth Client ID và OAuth Client
secret, để lấy được hai thông số này cần phải Console Cloud của Google. Tạo một Api bằng APIs vs Services. 57 lOMoARcPSD| 36477832
Hình 4.31 Tạo một API Service trong Cloud Console
Ở đây đã tạo sẵn một API mang tên DMS (Document manager system), sau đó
tạo mới một Secret bằng nút Add secret, lúc này ta đã có OAuth Client ID và
OAuth Client secret cho OAuth Google
Hình 4.32 Lấy giá trị Client ID và Client Secret
Sau bước Authorization và cấp quyền cho hệ thống chúng ta đã có access_token và refresh_token. 58 lOMoARcPSD| 36477832
Hình 4.33 Lấy được token khi tạo một request trong OAuth 2.0 59