Bảo mật cho dịch vụ SaaS

Hiện nay, các dịch vụ SaaS đang ngày càng phổ biến. Vậy nhưng, SaaS là gì? SSL là gì? Tại sao lại cần SSL cho SaaS? Trong bài viết hôm nay HBLAB sẽ giải thích về SaaS, SSL, ưu và nhược điểm cũng như cách để bảo vệ dịch vụ SaaS cho khách hàng của mình.

1. SSL là gì?

Chắc chắn chúng ta thường nghe SSL certificate trên các website, vậy chứng chỉ SSL là gì? Tại sao lại cần nó?

 

SSL là viết tắt của từ Secure Sockets Layer. SSL là tiêu chuẩn của công nghệ bảo mật, truyền thông mã hoá giữa máy chủ Web server và trình duyệt. Tiêu chuẩn này hoạt động và đảm bảo rằng các dữ liệu truyền tải giữa máy chủ và trình duyệt của người dùng đều riêng tư và toàn vẹn. SSL hiện tại cũng là tiêu chuẩn bảo mật cho hàng triệu website trên toàn thế giới, nó bảo vệ dữ liệu truyền đi trên môi trường internet được an toàn.

 

SSL đảm bảo rằng tất cả các dữ liệu được truyền giữa các máy chủ web và các trình duyệt được mang tính riêng tư, tách biệt với môi trường internet chung.

Về cơ bản SSL certificate là giấy phép xác minh được tính xác thực, tin cậy của website, đảm bảo mọi dữ liệu, thông tin trao đổi giữa website và khách hàng được mã hóa, tránh nguy cơ bị can thiệp.

2. Tìm hiểu về SaaS

2.1 Khái niệm về SaaS

SaaS (Software-as-a-Service) là một dịch vụ điện toán đám mây dựa trên việc cấp phép và phân phối dịch vụ ứng dụng phần mềm. Trong đó nhà cung cấp không bán sản phẩm phần mềm mà bán dịch vụ dựa trên phần mềm đó, tức là không tải về và cài đặt trong từng máy tính mà sẽ phân phối chúng trên nền tảng internet. Đơn giản hơn thì khách hàng muốn sử dụng dịch vụ chỉ cần truy cập website và trả một khoản phí định kỳ để sử dụng dịch vụ.

Nghe thì có vẻ rất xa lạ nhưng chúng ta đang sử dụng dịch vụ này rất nhiều. Các nhà cung cấp dịch vụ hàng đầu có thể kể đến như Amazon Web Services, Oracle, Adobe Creative Cloud, Slack, Dropbox, Google, IBM, Microsoft,… 

2.2 Ưu điểm

SaaS đi cùng vớii việc loại bỏ nhu cầu cài đặt, chạy dịch vụ trên máy tính hoặc trung tâm dữ liệu của riêng mình. Điều này giúp người sử dụng dịch vụ có nhiều lợi ích hơn.

2.2.1 Tiết kiệm chi phí

Sử dụng SaaS có thể giúp doanh nghiệp tiết kiệm được đáng kể chi phí, thời gian và nhân lực đồng thời gia tăng được hiệu quả vận hành, hoạt động.

Nếu không sử dụng SaaS, doanh nghiệp có thể phải trả một khoản tiền rất lớn cho việc thiết kế, mua phần mềm cũng như quá trình cài đặt, xây dựng cơ sở dữ liệu. Bên cạnh đó, mỗi năm bạn còn phải trả thêm một khoản cho việc bảo trì định kỳ. Trong khi đó, chi phí cho SaaS thấp hơn và có thể đáp ứng được hầu hết nhu cầu sử dụng.

Các dịch vụ SaaS đều có gói free trial để khách hàng có thể yên tâm trải nghiệm dịch vụ trước khi sử dụng.

2.2.2 Khả năng truy cập mọi lúc

Vì các nhà cung cấp SaaS triển khai dịch vụ qua internet nên người dùng dễ dàng truy cập phần mềm từ bất kỳ thiết bị và trình duyệt nào có kết nối internet.

Khi sử dụng SaaS, chỉ cần tạo thêm tài khoản và cung cấp cho mọi nhân viên. Như vậy, nhân viên có thể lựa chọn làm việc ở những không gian linh hoạt hơn. Đặc biệt, trong trường hợp có phát sinh mà họ không có mặt tại công ty, các nhân viên vẫn có thể truy cập vào dữ liệu chung, tìm kiếm các tài liệu cần thiết và thực hiện nhiệm vụ được giao.

2.2.3 Triển khai nhanh chóng

SaaS loại bỏ quá trình cài đặt và cấu hình liên quan đến phần mềm tại chỗ, có nghĩa là bạn có thể triển khai phần mềm ngay sau khi đăng ký gói sử dụng.

2.2.4 Khả năng mở rộng và tích hợp

Một ưu điểm lớn của dữ liệu đám mây nói chung và SaaS nói riêng là khả năng mở rộng. Bạn dễ dàng tăng gấp đôi, gấp 3,… số lượng tài khoản hoặc tích hợp thêm các phần mềm mới mà không ảnh hưởng tới cơ sở hạ tầng hay cơ sở dữ liệu có sẵn của doanh nghiệp. Điều này đặc biệt quan trọng đối với các doanh nghiệp đang trên đà tăng trưởng nóng hoặc đang có dự định mở rộng quy mô trong tương lai.

2.2.5 Dữ liệu và phân tích

Báo cáo hiện trạng sử dụng phần mềm là điều mà doanh nghiệp nào cũng quan tâm. Câu hỏi thường xuyên được đặt ra là: liệu việc sử dụng phần mềm có hiệu quả hay không? Với phần mềm truyền thống, để đo lường được điều này cũng là cả một vấn đề.

Với các ứng dụng SaaS, các doanh nghiệp sử dụng thường có quyền truy cập vào các công cụ báo cáo trực quan bằng hình ảnh. Điều này cung cấp thông tin chi tiết có giá trị về hoạt động kinh doanh, cho phép quy trình công việc được sắp xếp hợp lý, tiết kiệm và hiệu quả.

2.3 Nhược điểm

2.3.1 Phụ thuộc vào internet

Người dùng cần phải kết nối internet để đăng nhập và sử dụng phần mềm SaaS. Nếu bạn đến những vùng không có mạng, lên máy bay hoặc gặp trục trặc về đường truyền thì hoạt động và công việc đều bị ảnh hưởng nghiêm trọng.

Ngay cả trong tình huống mạng không bị ngắt nhưng đường truyền kém ổn định hoặc tốc độ chậm thì việc sử dụng cũng gặp nhiều trở ngại.

2.3.2 Tính bảo mật

Việc sử dụng dịch vụ bên thứ 3 đồng nghĩa với việc bạn chấp nhận những chính sách do nhà cung cấp đặt ra. Điều này tạo nên nguy cơ về bảo mật dữ liệu vì toàn bộ dữ liệu đều được lưu trữ trên điện toán đám mây – một vị trí không đem lại cảm giác an toán cho nhiều công ty, doanh nghiệp.

Tuy nhiên khi nền tảng điện toán đám mây càng phát triển thì bảo mật không còn là vấn đề quá đáng lo ngại. Đó là nhờ các nhà cung cấp SaaS chú trọng hơn vào mã hoá dữ liệu và có các điều khoản cam kết bảo mật chặt chẽ hơn trong Cam kết mức độ dịch vụ (SLA). Bạn nên kiểm tra lại một lượt về bảo mật trước khi đưa ra bất cứ quyết định triển khai phần mềm SaaS nào.

3. SSL for SaaS

Phần này chính là chủ đề chính của bài viết hôm nay: việc cung cấp bảo mật cho dịch vụ SaaS. Tất nhiên, không phải chúng ta cần xây dựng một hệ thống cung cấp bảo mật cho dịch vụ SaaS, mà sẽ sử dụng dịch vụ có sẵn và ứng dụng nó cho hệ thống SaaS của mình.

3.1 Bài toán về dịch vụ

Hệ thống ví dụ mà HBLAB nói đến tiếp theo đây liên quan đến một phần mềm dịch vụ marketing, cho phép người sử dụng dịch vụ có thể tạo chiến dịch bán hàng trực tuyến một cách đơn giản cùng với các dịch vụ khác như tạo tiếp thị liên kết, dịch vụ gửi email, thanh toán trực tuyến, membersite, … 

Nói một cách đơn giản, hệ thống cho phép khách hàng tạo công ty bán hàng của chính mình và sử dụng các dịch vụ của hệ thống, để bán hàng của công ty. Và các bạn biết đó, mỗi công ty thì cần có tên và một domain riêng để đánh dấu thương hiệu cho công ty đó. Lúc này, bài toán đặt ra là làm sao để mỗi công ty được tạo trong hệ thống sẽ sử dụng một domain riêng biệt. Giống với wordpress, mỗi user sẽ add được domain cho tài khoản của mình.

Về cơ bản thì chúng ta sẽ có structure như ảnh trên

  • The origin: website chính của hệ thống. Ví dụ hblab.vn
  • Fallback domain: Domain dự phòng để các custom hostname có thể trỏ đến. Ví dụ target.hblab.vn
  • Custom hostnames: Các hostname của user đăng ký vào hệ thống. Ở đây mỗi một công ty sẽ có một custom hostname hoặc nhiều tùy nhu cầu. Ví dụ có một user là khoipv và domain cần sử dụng dịch vụ là www.khoipv.com

3.2 Đặt vấn đề

3.2.1 Hiểu bài toán cần xử lý

Đầu tiên chúng ta cần xác định: Mình cần làm gì? Với ví dụ ở trên chúng ta có một domain www.khoipv.com cần sử dụng dịch vụ của hblab.vn. Chúng ta chỉ cần thêm một bản ghi DNS cho www.khopv.com như sau:

Từ đây truy cập www.khoipv.com sẽ giống với truy cập hblab.vn tức là www.khoipv.com hiện tại đã trỏ đến server của hblab.vn rồi. Tiếp đó chúng ta chỉ cần thêm xử lý kiểm tra hostname và hiển thị thông tin company của khoipv với domain là www.khoipv.com. Điều này cũng áp dụng tương tự với các hostname của công ty khác (việc này cũng khá giống trong wordpress).

Sau đó, server hblab.vn sẽ xử lý tất cả những công việc còn lại để các công ty bên ngoài có thể sử dụng dịch vụ của mình. Nhưng lúc này có vấn đề phát sinh như sau: 

  • các custom hostname của công ty sử dụng dịch vụ hblab.vn không hề có SSL bảo mật, khi đó truy cập www.khoipv.com vẫn hoạt động với HTTP mà không phải HTTPS. Rõ ràng người dùng truy cập không hề muốn truy cập một địa chỉ không được bảo mật.

Vậy vấn đề đặt ra cần xử lý SSL certificate cho các custom hostnames trỏ vào hblab.vn. Vấn đề tiếp tục xảy ra, làm sao có thể add certificate cho tất cả các hostname, vì không thể đăng ký cho mỗi hostname khác nhau. Công việc tiếp theo chúng ta cần làm là tìm dịch vụ để có thể tự động đăng ký certificate cho các hostname này.

3.2.2 Tìm kiếm các dịch vụ

Sau khi hiểu được vấn đề cần xử lý, team HBLAB đã thử tìm các dịch vụ giải quyết vấn đề này. Sau khi tìm hiểu cho ra một vài dịch vụ như BrandSSL, Qloaked, SSL-SaaS, Cloudflare,…, team HBLAB đưa ra một bảng so sánh như sau: 

 

Dịch Vụ Tính năng Pricing 

(per month)

Ghi chú
BrandSSL – Secured Hostname

– Webhooks
– RestApi

100 hostname/$29

200 hostname/$49

500 hostname/$99

– Performance ổn định, nhưng cũng chưa thật sự cao
Qloaked – Secured Hostname

– RestApi

1 hostname/$1 – Giới hạn băng thông, tốc độ không được cao
SSL-SaaS – Secured Hostname Chưa rõ, ký hợp đồng chính thức mới có – Không có API, khó tích hợp
Cloudflare – Secured Hostname

– RestApi

100 hostname free.
1 hostname/$0.1
– Performance cao
– Dễ dàng tích hợp

 

Sau khi tìm hiểu và tích hợp thử thì mình đã quyết định sử dụng cloudflare vì các yếu tố sau:

  • Hỗ trợ đầy đủ các yêu cầu của hệ thống
  • Tốc độ và performance rất tốt
  • Chi phí rất rẻ
  • Ngoài ra cộng đồng sử dụng cũng rất mạnh có thể dễ dàng tìm thấy cách giải quyết tốt.

3.3 Tích hợp dịch vụ cloudflare vào hệ thống

Để bài viết được dễ hiểu chúng ta cần làm rõ một số khái niệm sẽ sử dụng, lấy ví dụ ở phần Hiểu bài toán cần xử lý. Vì lý do bảo mật nên HBLAB sẽ không công khai hệ thống và ví dụ demo. Do đó các thông tin trong bài viết chỉ là ví dụ, không thể được sử dụng.

    • Server origin: website chính của hệ thống. Ví dụ hblab.vn
    • Fallback domain: Domain dự phòng để các custom hostname có thể trỏ đến. Ví dụ target.hblab.vn
    • Custom hostnames: Các hostname của user đăng ký vào hệ thống. Ở đây mỗi một công ty sẽ có một custom hostname hoặc nhiều tùy nhu cầu. Ví dụ có một user là khoipv và domain cần sử dụng dịch vụ là www.khoipv.com
  • DNS record: (Domain Name System Record) là một bản ghi có chứa thông tin về tên miền, bao gồm địa chỉ IP tương ứng với tên miền đó.
  • CNAME record: (Canonical Name record) được biết đến với vai trò là một bản ghi bí danh. Đây là một loại bản ghi tài nguyên trong DNS. Cname record cho phép bạn gắn nhiều domain vào cùng một máy chủ. Ví dụ: hblab.khoipv.com, hblab.jp, blog.hblab.com đều có thể trỏ đến 1 server thông qua hblab.vn, bằng CNAME record.

3.3.1 Đăng ký tài khoản

3.3.2 Config domain trên cloudflare

Tiếp theo chúng ta cần thêm domain của Server origin lên cloudflare để config.

  • Click Add a site

  • Input domain server origin, ở ví dụ này là hblab.vn. Hoặc có thể chọn register a new domain để tạo một domain mới.

  • Sau khi thêm chúng ta cần verify DNS record và change nameserver hiện tại của domain sang sử dụng cloudflare

  • Sửa 2 bản ghi NS của domain trên trang quản lý domain của bạn. Ví dụ với trình quản lý DNS của DNSimple.

  • Sau khi verify thành công lúc này chúng ta có thể đến bước tiếp theo.

3.3.3 Config SSL và tạo certificate cho Domain.

Tiếp theo chúng ta đến bước Fallback domain. Mục đích của việc này là để các user đăng ký hệ thống sẽ tạo 1 CNAME cho custom hostname của họ đến hệ thống hblab.vn

  • Tại dashboard chọn domain hblab.vn

  • Click SSL/TLS > Custom Hostnames

  • Tại Fallback origin thêm target.hblab.vn. Và thêm DNS record cho target.hblab.vn. DNS này sẽ trỏ CNAME đến IP server đặt code hoặc CNAME đến chính hblab.vn.

  • Sau khi có fallback origin lúc này chúng ta có thể trỏ www.khoipv.com CNAME đến target.hblab.vn. Lúc này hostname www.khoipv.com sẽ được trỏ vào origin server giống structure ban đầu chúng ta cần xây dựng.

  • Tiếp theo chúng ta tạo SSL cho server origin ở đây là hblab.vn. Trường hợp đã có SSL cho server origin rồi thì không cần tạo nữa.
  • Tại Origin Server chọn create certificate

  • Nhập domain *.hblab.vn và hblab.vn và create. Chú ý là lưu trữ lại Origin Certificate Private Key.

Như vậy chúng ta đã hoàn thành việc xử lý Server origin trên cloudflare. Tiếp theo chúng ta cần setup certificate cho server vật lý origin. Cần sử dụng đến Origin Certificate Private Key lưu trữ ở bước trên nhé.

3.3.4 Config Certificate cho server origin

Sau khi có Origin Certificate Private Key chúng ta thêm certificate vào server vật lý của hệ thống. Vì mình dùng AWS platform nên mình sẽ add lên resource Load balancer của aws, tùy server của các bạn ở đâu sẽ setup certificate theo cách khác nhau. Chú ý trường hợp domain hblab.vn đã có certificate thì không cần làm bước này nữa.

  • Tạo certificate trong AWS Certificate Manager (ACM)

  • Add Origin Certificate,Private Key vào Certificate body Certificate private key tiếp đó next, đặt tên và create certificate.
  • Chọn certificate vừa tạo trong load balancer port 443.

3.3.5 Tích hợp API cloudflare với hệ thống

Tiếp theo chúng ta sẽ tích hợp Api cloudflare để có thể tạo Custom Hostnames tự động khi một company được tạo trong hệ thống.

 

Yêu cầu: Khi user khoipv tạo tài khoản trong hệ thống và add domain www.khoipv.com vào hệ thống, hệ thống cần tạo tài khoản đăng nhập cho khoipv và thêm custom hostname www.khoipv.com lên cloudflare. 

  • Với user khoipv: Hệ thống cần yêu cầu khoipv thêm CNAME cho www.khoipv.com trỏ vào target.hblab.vn
  • Với hệ thống: Khi verify được bản ghi DNS CNAME do user khoipv thêm ở trên sẽ tạo một custom hostnames www.khoipv.com lên cloudflare

Trường hợp thêm manual cloudflare cũng cho phép, ví dụ:

  • Trên cloudflare click SSL/TLS > Custom hostnames > Add custom hostname

Tuy nhiên cách này sẽ phát sinh vấn đề vì không thể biết lúc nào user tạo tài khoản trong hệ thống. Chúng ta cần sử dụng API của cloudflare và tự động thêm khi có user tạo tài khoản.

  • Thông tin API nằm trong docs của cloudflare. chúng ta sẽ quan tâm đến API list/create/delete custom hostname.
  • Yêu cầu: 
    • API key: tạo một api key với role “Zone.DNS” trong link
    • Api email: Email tạo tài khoản cloudflare hoặc subUser
    • Zone_id: Nằm ở dashboard của domain hblab.vn trên cloudflare
  • Sử dụng các thông tin trên để tích hợp API, việc này các bạn developer có thể làm được.

Cuối cùng chúng ta sẽ thu được kết quả là www.khoipv.com trỏ vào hblab.vn và được bảo vệ bởi SSL. Tương tự với các domain của user khác, như vậy chúng ta thu được một hệ thống có thể tự động tạo cho mỗi user một domain riêng biệt như yêu cầu bài toán ở trên.

4. Tổng kết

Trên đây là kinh nghiệm của HBLAB về bài toán xử lý SSL cho các dịch vụ SaaS, vì trước đó mình chưa biết đến khái niệm này nên việc tổng hợp thông tin rất khó khăn. Chỉ biết là wordpress họ đã làm, tuy nhiên không biết tìm hiểu và config như thế nào. Qua bài viết này, hi vọng có thể giúp mọi người hiểu rõ hơn về SSl for SaaS, từ đó có thể tích hợp vào hệ thống của chính mình. 

 

Top bài viết trong tháng

Scroll to Top

FORM ỨNG TUYỂN

Click or drag a file to this area to upload.
File đính kèm định dạng .docs/.pdf/ và nhỏ hơn 5MB