Tải bản đầy đủ (.pdf) (26 trang)

Báo cáo thực tập xây dựng API cho hệ thống PIPELINE SECURITY và PLUGIN URL FILTERING

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.22 MB, 26 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

XÂY DỰNG API CHO HỆ THỐNG
PIPELINE SECURITY VÀ PLUGIN URL
FILTERING

Công ty thực tập

: TMA Solutions

Người phụ trách

: Phạm Hoàng Tuấn Kiệt

Thực tập sinh

: Lộc Đức Thắng

TP. Hồ Chí Minh, tháng 1 năm 2021
1


LỜI MỞ ĐẦU
Ngày nay, chúng ta chứng kiến sự phát triển chóng mặt của ngành cơng nghệ thơng
tin và mạng internet, hàng loạt ứng dụng của internet đã được ra đời, kéo theo đó là trào
lưu chuyển đổi các nghiệp vụ cũ sang nền tảng này. Điều đó có nghĩa là khơng loại trừ
nghiệp vụ quản lí. Cần thừa nhận việc bảo mật trên internet khơng cao, nhưng khi tích hợp
bán hàng và quản lí cùng lúc, các thơng tin lưu trữ khơng q nhạy cảm thì website lại trờ


thành lợi thế và nhu cầu thiết yếu của mọi doanh nghiệp .
Ngành lập trình web gần như được sinh ra cùng với internet, ngay cả môi trường
internet cũng đang phát triển và hoàn thiện, người dùng mới vẫn liên tục gia tăng. Điều đó
chứng minh rằng lĩnh vực này vẫn chưa bao giờ là lỗi thời. Được tiếp cận từ sớm và lớn
lên với chúng, giới trẻ sẽ là nguồn nhân lực quan trọng cho sự phát triển của ngành lập
trình web sau này. Vì lý do này, em quyết định chọn lập trình web làm định hướng cho
việc học tập của mình
Để có thêm trải nghiệm thực tế mơi trường làm việc công ty, em đã quyết định chọn
TMA – Solutions một trong những công ty lớn hàng đầu Việt Nam để thực tập, học hỏi,
tích lũy thêm kinh nghiệm.

2


LỜI CẢM ƠN
Đầu tiên em xin gửi lời tới công ty TMA đã tạo điều kiên cho em học tập, trau dồi
thêm kiến thức và hoàn thành tốt thực tập.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các mentor, nhóm
thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể xây dựng API
cho hệ thống Pipeline Security và Plugin Url Filtering. Chân thành cảm ơn các anh chị
trong nhóm mentor đã bỏ ra nhiều thời gian,công sức để hướng dẫn chúng em hoàn thành
đợt thực tập này.
Đặc biệt cảm ơn anh Phạm Hoàng Tuấn Kiệt, đã training các kiến thức cơ bản để
xây dựng API với Golang cũng như các bước xây dựng 1 plugin web, hướng dẫn, giúp đỡ
cho chúng em tận tình cả những khó khăn trong cơng việc, đến những khó khăn việc làm
quen với mơi trường mới.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo
điều kiện em làm bài báo cáo này.
Em xin chân thành cảm ơn.
Sinh viên thực hiện

Lộc Đức Thắng
TpHCM, ngày 13 tháng 1 năm 2021

3


Mục lục
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP ................................................................ 6
1. Giới thiệu Công ty TMA Solutions ............................................................................................ 6
2. Sản phẩm của công ty ................................................................................................................ 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP ....................................................................................... 8
1.

Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty .................................................... 8

2.

Nghiên cứu kỹ thuật .............................................................................................................. 8

3.

Thực hiện project ................................................................................................................ 11

4.

Lịch làm việc ........................................................................................................................ 11

CHƯƠNG 3: CHI TIẾT VỀ PROJECT ................................................................................ 13
1.
1.1.


Giới thiệu về dự án .............................................................................................................. 13
Nội dung ........................................................................................................................... 15

1.2. Một số hình ảnh trong hệ thống ........................................................................................ 17
2.

Thực hiện ............................................................................................................................. 24

TỔNG KẾT ................................................................................................................................. 25
TÀI LIỆU THAM KHẢO .......................................................................................................... 26

4


NHẬN XÉT CỦA KHOA
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................

...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................

5


CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP

1. Giới thiệu Công ty TMA Solutions
TMA Solutions (gọi tắt TMA, tiếng Việt: Công ty TNHH Giải Pháp Phần Mềm
Tường Minh) là một công ty Việt Nam, kinh doanh các dịch vụ liên quan đến phát triển
phần mềm. TMA được thành lập từ năm 1997, hiện đang là công ty phần mềm hàng đầu
Việt Nam với 2500 kỹ sư.
Khách hàng là những tập đồn cơng nghệ cao hàng đầu thế giới đến từ 27 nước.
TMA hiện có 8 chi nhánh tại Việt Nam (7 tại thành phố HCM và 1 ở thành phố Quy
Nhơn) và 6 chi nhánh ở nước ngoài (Mỹ, Canada, Châu Âu, Nhật, Úc, Singapore). Phòng
Trung tâm Đào Tạo TMA, Phòng Trung tâm Phát triển Sinh Viên, Phòng Trung tâm sáng
tạo TMA
2. Sản phẩm của công ty
- Lĩnh vực hoạt động:
Tích hợp hệ thống. Xuất khẩu phần mềm. Giải pháp phần mềm. Cung cấp các giải pháp,
dịch vụ viễn thông Đào tạo sinh viên và nhân viên về kiến thức phần mềm và kỹ năng
mềm. Dịch vụ đánh giá an tồn thơng tin. Kiểm tra tồn diện sự an tồn thơng tin và năng
lực bảo mật của dồnh nghiệp, tìm ra những rủi ro, đề ra giải pháp khắc phục. 9 Dịch vụ
cơ sở hạ tầng thông tin. Tư vấn, lựa chọn giải pháp cho hệ thống thông tin và mạng máy

tính. Thiết kế và cài đặt hệt thống mạng máy, mạng Wifi, WAN, WPN, và điện thoại nội
bộ, Tư vấn, triển khai và đào tạo về sử dụng phần mềm mã nguồn mở.

-

Cơng nghệ chính
6


Java, .NET, C++, Mobile, AI Maching learning, PHP/Ruby, Cloud, Embedded & IoT,
Telecom/Network, Big data & analytics, Angular, Nodejs, Reactjs, blockchain,
Automation test, Network/Cloud Administration,…

7


CHƯƠNG 2: NỘI DUNG THỰC TẬP
Tham gia vào dự án Pipeline Security giúp sinh viên thực tập được đào tạo kiến
thức về xây dựng một hệ thống quản lí phía admin và kiến thức về mạng máy tính để filter
network. đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao
tiếp. Tại cơng ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi
trường phát triển phần mềm chuyên nghiệp.
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát
triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ
chức của cơng ty .
Ngồi ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công
ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong

công việc…
Kết quả : Hiểu thêm về cơng ty TMA, q trình thành lập và phát triển. Có thêm
các kỹ năng về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có kỷ luật,
có trách nhiệm hơn.

2. Nghiên cứu kỹ thuật
a. Các công cụ làm việc

Thời gian : 2 ngày
Nội dung : Tìm hiểu về các cơng cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, mentor đã hướng dẫn thực tập sinh tìm hiểu về các cơng
cụ sẽ giúp ích cho trong cơng việc sau này.
Một số phần mềm trong số đó như
- Jira - sử dụng trong làm việc nhóm quản lí task,
- GitLab/GitHub – quản lí mã nguốn. source code
- Figma – thiết kế các wireframe design,
- Zimbra- mail trao đổi trong công ty
- GoLand – trình biên dịch ngơn ngữ Golang
- Devtool – Debug web plugin
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
8


Kết quả : Lập trình sử dụng các cơng cụ miễn phí trừ Goland, giúp dễ dàng kết
hợp các cơng cụ với nhau.
b. Tìm hiểu ngơn ngữ Golang

Thời gian : 5 ngày (1 tuần)
Nội dung : Được tìm hiểu các kiến thức cơ bản và nâng cao về Goland ứng dụng
trong phát triển hệ thống Back-end.

- Các cú pháp cơ bản , cấu trúc chương trình cơ bản, các nội dung gồm:
o Variables, Types and Constants
o Functions and Packages
o Conditional Statements and Loops
o Arrays, Slices and Variadic Functions
o Pointers, Structs and Methods
o Interfaces
o Concurrency
o Object Oriented Programming
o Defer and Error Handling
o Reflection
o File Handling
-

Tìm hiển các hiện thực OOP trong Golang :
o Structs thay vì Classes
o Composition thay vì Inheritance
o Polymorphism

Tìm hiểu cách debug với Goland cài các thư viện mã nguồn mở cho dự
án
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
-

Kết quả :
-

Nâng cao kỹ năng lập trình với ngơn ngữ Golang và debug trên Goland.

Có được những kiến thức quan trọng cho việc xây dựng API sau này.
Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho đúng
chuẩn, dễ đọc, dễ hiểu.

9


c. Tìm hiểu và sử dụng hệ quản trị cơ sở dữ liệu hướng đối tượng Postgre SQL

Thời gian : 3 ngày
Nội dung : Được tìm hiểu các kiến thức cơ bản và nâng cao về Postgre SQL ứng
dụng quản lí dữ liệu trong hệ thống Back-end.
- Cách cài đặt và sử dụng Postgre SQL, kết nối tới Database online qua
pgAdmin 4
- Tìm hiểu các kiểu dữ liệu cơ bản, các kiểu đối tượng và kiểu tự định nghĩa
trong Postgre :
- Viết các truy vấn với database mẫu có sẵn
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

Có được những kiến thức quan trọng cho việc xây dựng API sau này.
Ngoài ra còn được biết thêm một số tip cải thiện query với Postgre

d. Tìm hiểu và sử dụng Redis

Thời gian : 2 ngày
Nội dung : Cách thức lưu trữ, truy vấn dữ liệu, caching với Redis.

- Cách cài đặt và sử dụng Redis, kết nối tới Sẻver online qua Another Redis
- Tìm hiểu cách thêm,xóa,sửa data trên Redis bằng Golang sử dụng thư
viện
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

Có được những kiến thức quan trọng cho việc xây dựng API sau này.
Cache để giảm tải cho server

e. Xây dựng Plugin block Url cho Chrome, Firefox và Safari

Thời gian : 12 ngày
Nội dung : Cách xây dựng một plugin web, cách thức block url trên nền tảng
javascript .
- Tổ chức file maniest.js để cấu hình cho plugin
- Xây dựng các tệp html để dựng dao diện plugin, page block
10


- Sử dụng webBlocking để bắt và xử lí các request trên browser
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

Có được những kiến thức quan trọng cho việc xây dựng API sau này.

Biết cách up plugin lên store
Deploy plugin với Enterprise Policy

3. Thực hiện project
Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến
thực cơ bản về Golang,Postgre SQL ,Redis,. Trong tháng thứ hai, trainer đã hướng
dẫn thực tập sinh áp dụng những kiến thức đã học để tham gia vào project thực tế.
Chi tiết đồ án sẽ được nói ở phần sau.
4. Lịch làm việc
Tuần

Cơng việc
-

1

-

2

-

3
-

4

-

Tìm hiểu về cơng ty, cách tổ

chức của công ty.
Làm quen với các công cụ làm
việc trong công ty.
Học cách trao đổi, làm việc qua
email.
Tìm hiểu ngơn ngữ lập trình
Golang
Thực hành Golang
Làm bài test Golang
Tìm hiểu về Postgre SQL cài
đặt và kết nối.
Truy vấn với query tool trên
Database có sẵn.
Thực hành truy vấn dữ liệu
Postgre thơng qua thư viện
Golang
Tìm hiểu về Redis
Thực hành thêm,xóa,sửa keyvalue trong Redis

Người hướng dẫn
Phạm Hoàng Tuấn
Kiệt

Mức độ hoàn
thành
100%

Phạm Hoàng Tuấn
Kiệt


100%

Phạm Hoàng Tuấn
Kiệt

100%

Phạm Hoàng Tuấn
Kiệt

100%

11


5

6,7

7,8

8,9

10,11

12

- Kết nới Redis online
- Xây dựng Plugin
- Viết html cho UI Plugin

- Build block url feature
- Lên kế hoạch
- Viết API URL tracking sử dụng
Golang và Gorm
- Restfull API trong Golang
- Viêt document cho API trên
Swagger
- Xây dựng giao diện cho plugin
trên Chrome
- Sử dụng thuật toán Aho
Corasick để cải thiện tốc độ
map url
- Tích họp API url tracking
- Xây dựng chức năng đồng bộ
đăng nhập với app desktop
- Xậy dụng chức năng report
threat
- Xây dựng Block Page
- Fix lỗi khi token hết hạn
- Convernt chỉnh sửa UI và chức
năng cho Firefox và Safari
- Upload plugin lên Chrome và
Firefox store
- Deploy plugin với Enterprise
Policy
- Viết Log
- Caching data cho plugin
- Tổng kết và báo cáo

Phạm Hoàng Tuấn

Kiệt

100%

Phạm Hoàng Tuấn
Kiệt

100%

Phạm Hoàng Tuấn
Kiệt

100%

Phạm Hoàng Tuấn
Kiệt
Phạm Hoàng Tuấn
Kiệt

100%

Phạm Hoàng Tuấn
Kiệt

100%

100%

12



CHƯƠNG 3: CHI TIẾT VỀ PROJECT
1. Giới thiệu về dự án
Dự án “Pipeline Security” là một dự án outsource cho khách hàng Mỹ. Dự án hơn
30 tham gia phát triển theo quy trình chuẩn, hiện đại và chuyên nghiệp. Dự án
gồm 2 phần chính là quản lí tổ chức phía admin và ngăn chặn nội dung duyệt web
phía end-user. Sản phẩm dược tách biệt các giữa các nhóm phát triển Back-end,
Front-end, BA, Testing, Mobile ….
Sản phẩm tạo ra cho doanh nghiệp tạo ra và bán các gói dịch vụ, khi đã mua có thể
chia sẽ sử dụng nội bộ (ngang hàng) hoặc tiếp tục sang nhượng tạo ra phân cấp
theo mơ hình tam giác. Tất nhiên phân chia ở đây có điểm dừng trong 5 cấp. Với
việc bán lại các gói dịch vụ phải đảm bảo tuân theo các policy của cấp trên, cũng
như bị giới hạn một số quyền quản lí.
Các cơng nghệ sử dụng trong dự án:
AGENT
Platform

Programing
language

Note

DNS Forwarder Go

Agent
Windows

Policy Updater

Go


DoH - DoT
blocking

Go

Blocking via modifying routing table

UI

Go

FYNE-IO Lib

Installer

Go

Enterprise
config

Go

Process
controller

Go

DNS Forwarder Go


Agent
MacOS

Policy Updater

Go

DoH - DoT
blocking

Go

Blocking via modifying routing table

UI

Go

FYNE-IO Lib

Installer

Go

Process
controller

Go

Launcher


TBD

13


Mobile
Platform

iOS

Android

Programing
language

UI - Program
flow

SWIFT - Native Code

DNS controller
via VPN

SWIFT - Native Code

UI - Program
flow

Java - Native Code


DNS controller
via VPN

Java - Native Code

VPN Server VPN Server

Open VPN
(Commercial
License)

Note

Control DNS details via VPN Connection and
device routing

Control DNS details via VPN Connection and
device routing
Seperate User Traffic and DNS Traffic, only DNS
Traffic will hit the VPN Server and Enterprise
Agent
Better support and reduce workload for SysAdmin
Open Source OpenVPN is possible

BackEnd
support

Support Syncing of User ID - Token - IP (From
VPN)


Go

Back End Services
Programing
language

Note

Main Database Postgre DB
Database
Back End

Caching
Database

Redis

APIs

Go

Front End Services
Programing language
Front End

Note

Angular 10


14


1.1.

Nội dung
Phân câp người ùng trong Pipeine
STT

Cấp

Mô tả

1

Fense SuperAdmin

Là người quản lí tồn quyền của
dự án Pipeline, chịu trách nhiệm
kiểm sốt tất cả sản phẩm, ở mọi
cấp bậc trong mơ hình.

2

Tenent

Người quản trị sản phẩm ở cấp
bật ngang hàng và khách hàng
của mình sau khi sang nhượng
dịch vụ.


3

Organization

Người quản trị sản phẩm ở cấp
bật ngang hàng và khách hàng
của mình sau khi sang nhượng
dịch vụ.

4

Site

Người quản trị sản phẩm ở cấp
bật ngang hàng và khách hàng
của mình sau khi sang nhượng
dịch vụ.

5

Account

Người trực tiếp sử dụng

Các chức năng của hệ thống quản lí
STT

Chức năng


1

Đăng nhập và quản lí tài Cho phép người dùng truy cập vào
khoản
hệ thống. Sửa đổi mật khẩu hoặc
thông tin cá nhân cũng như ngôn
ngữ phù hợp.

Mô tả

15


2

Roles and Permission

Phân quyền cho tài khoản đi kèm
với các mức độ truy cập, quản lí
của tài khoản đó

3

Dashboard

Thống kê các kết quả quản lí dưới
nhiều dạng đồ thị.

4


Group Management

Quản lí các nhóm người dùng có
cùng gói dịch vụ.

5

Corporation
Management

Chức năng quản lí các gói dịch vụ,
tùy chỉnh hiển thị theo phân quyền

6

User Management

Quản lí thơng tin khách hàng và
các sản phẩm họ đang sử dụng.

7

Policy Management

Các chính sách đi kèm với gói dịch
vụ được bán.

8

Category Management


Quản lí các danh mục url và
domain

9

Subscription
Management

Quản lí việc mua bán gồm sản
phẩm, khách hàng và chi tiết các
thơng tin giao dịch

Chức năng phía end user
STT

Chức năng

1

Đăng nhập và quản lí tài Cho phép người dùng truy cập vào
khoản
hệ thống. Sửa đổi mật khẩu hoặc

Mô tả

16


thông tin cá nhân cũng như ngôn

ngữ phù hợp.
2

Block url theo category

Chặn người dùng truy cập các url
trong từ điển theo danh mục

3

Report threat

Report hoặc feedback ủl muốn truy
cập

4

Thay đổi profile

Chỉnh sử profile cá nhân

1.2. Một số hình ảnh trong hệ thống
Hình 1: Một số API trong hệ thống:

17


Hình 2: Code và Debug trên Goland

Hình 3: Caching trên Redis Server


18


Hình 4: FollowChart hoạt động Plugin

Hình 5: Design Plugin trên Figma

19


Hình 6: Tổ chức thư mục và xây dựng file manifest cho Plugin

20


Hình 7: Giao diện và chức năng plugin trên Chrome và Firefox

21


Hình 8: Giao diện và chức năng plugin trên Safari

Hình 9: Người dùng bị chặn trang web không được truy cập

22


Hình 10: Plugin được đưa lên trên Store


23


2. Thực hiện
2.1.

Người thực hiện
Thực tập sing Lộc Đức Thắng dưới sự hướng dẫn của anh Phạm Hàng Tuấn Kiệt.
Cùng 30 thanh viên trong dự án Pipeline

2.2.

Quá trình thực hiện
Giai đoạn Thảo luận
o Trao đổi với mentor để thống nhất về cơng nghệ sử dụng
o Tìm hiểu về cơng nghệ
Giai đọn phát triển:
o Dưới sự chỉ dẫn của leader và mentor xây dựng các chức năng được giao
o Meeting hằng ngày để báo cáo tiến độ
Giai đoạn kiểm thử và fix bug
o Sau khi Developer hoàn thành phần cài đặt dịch vụ, QC sẽ thực hiện test
dịch vụ. Lúc này PM sẽ liên hệ đối tác để lấy các thông tin test, giải đáp
thắc mắc cho QC nếu có.
o Sau khi QC hoàn thành test, sẽ gửi ngược lại cho PM nghiệm thu. Sau khi
PM xác nhận nghiệm thu thành công sẽ quay về giai đoạn thảo luận cho
Sprint tiếp theo.

2.3.

Kết quả

Hồn thành cơng việc được giao đúng tiến độ

24


TỔNG KẾT
Trong vòng 3 tháng thực tập tại TMA em đã được học rất nhiều kiến thức cũng
như trải nghiệm dự án thực tê. Tứ đó cải thiện các kĩ năng ở bản thân, làm việc có
nề nếp hơn.
Về cơng nghệ em đã được tiếp thu với ngôn ngữ Golang để phát triển hệ thống
Back-end API và Javascript để phát triển Plugin. Ngồi ra cịn sử dụng các cơng
cụ như Figma, Gitlab, Jira thành thạo hơn. Biết về về Postgre SQL và Redis
caching.
Khi tham gia vào dự án em đã hoàn thành tốt nhiệm vụ được giao đúng thời hạn
và đặt kết quả tốt.

25


×