An Ninh - Bảo Mật

Token API là gì và có an toàn không

Token API là gì và có an toàn không
Chia sẻ

Một kênh API có thể có toàn quyền truy cập vào hệ thống (xem/sửa/xóa/thay đổi credit, ...) nên cơ chế bảo mật của API rất quan trọng trong thời buổi rất nhiều ứng dụng kết nối lẫn nhau. Cloudzone cấp API cho khách không chỉ một chuỗi khoá (token) duy nhất mà còn có nhiều cơ chế bảo mật đi kèm.

Khi hệ thống của quý Khách hàng tự đặt một máy ảo, tự gia hạn dịch vụ cuối tháng, hay tự tạo tài khoản lưu trữ cho khách/đối tác mới, thì thứ đứng giữa hai bên là một kênh API. Kênh đó toàn quyền từ khởi tạo, gia hạn, thanh toán dịch vụ, ... Nên câu hỏi đầu tiên không phải "gọi thế nào" mà là xác thực - "ai được gọi".

Bài này nói về cơ chế bảo mật của một kênh API nói chung, rồi liên hệ đến kênh API của Cloudzone để phân tích ngoài token còn những lớp bảo mật nào để bảo vệ các kênh đấu nối API này.

1. Hai hệ thống nói chuyện với nhau bằng gì

Một user thông thường sẽ đăng nhập bằng tên và mật khẩu. Máy móc thì không: không có ai ngồi gõ, không có màn hình để hiện ô đăng nhập, và lời gọi có thể xảy ra hàng nghìn lần một ngày.

Cách làm phổ biến là cấp phát token. Bên cung cấp dịch vụ giao cho bên tích hợp một bộ thông tin nhận dạng. Bên tích hợp dùng bộ đó đổi lấy một chuỗi gọi là token. Từ đó về sau, mỗi lời gọi mang token đi kèm, và máy chủ nhìn token để xác thực và biết ai đang gọi.

Nghe thì giống mật khẩu, nhưng khác ở chỗ quan trọng: token là thứ cấp ra được và thu hồi được mà không phải đụng tới tài khoản gốc.

2. Token là gì, và vì sao nó tốt hơn gửi mật khẩu mỗi lần

Token là một chuỗi ký tự do máy chủ sinh ra, gắn với đúng một tài khoản và đúng một phạm vi quyền. Ba lợi ích thật của nó:

  1. Mật khẩu gốc không phải đi lại trên đường truyền liên tục. Bạn dùng nó một lần để lấy token, sau đó làm việc bằng token.
  2. Thu hồi được riêng lẻ. Nghi một đoạn tích hợp bị lộ thì huỷ token đó, các đoạn khác và tài khoản đăng nhập vẫn chạy bình thường.
  3. Giới hạn được phạm vi. Một token có thể chỉ được đọc, hoặc chỉ được chạm vào một nhóm dịch vụ.

Đó là lý do gần như mọi API nghiêm túc đều đi theo hướng này, thay vì bắt hệ thống của khách lưu mật khẩu đăng nhập rồi gửi đi mỗi lần gọi.

3. Điểm yếu cố hữu: ai cầm được token là dùng được

Đây là chỗ nhiều người khi triển khai hệ thống bỏ qua. Token là thông tin mang theo: máy chủ không biết người gửi là ai, nó chỉ biết chuỗi gửi lên có đúng hay không. Nghĩa là bất kỳ ai có được chuỗi đó đều gọi được, từ bất kỳ đâu.

Token rò ra ngoài theo những đường rất thông thường: lọt vào nhật ký hệ thống, nằm trong mã nguồn đẩy lên kho chung, gửi qua tin nhắn cho đồng nghiệp, hoặc còn nguyên trong máy của người đã nghỉ việc.

Vì vậy một kênh API chỉ dựa vào token là một kênh chỉ có một lớp khoá. Mất chìa khóa dù vô tình hay cố ý có thể để cho người khác toàn quyền xâm nhập hệ thống.

4. Tại Cloudzone: API được thiết lập kết hợp nhiều cơ chế bảo mật/xác thực

Kênh API của Cloudzone không giao cho bạn một chuỗi duy nhất. Bạn nhận ba giá trị khác nhau, và chúng dùng để lấy giá trị thứ tư:

  1. Email tài khoản - gắn kênh API vào đúng tài khoản Portal của bạn.
  2. Mật khẩu API - riêng cho kênh API, không phải mật khẩu đăng nhập Portal.
  3. Khoá bí mật - giá trị thứ hai phải có, để một mình mật khẩu API không đủ.
  4. Token - đổi từ ba giá trị trên mà ra.

Điểm khác biệt nằm ở bước sau: mọi lời gọi về sau phải mang đủ cả bốn, không phải riêng token. Bị mất token hoặc 1 trong các bí mật trên sẽ không hoàn toàn khai thác được thông tin.

Vì sao tách mật khẩu API khỏi mật khẩu Portal: hai thứ này có vòng đời khác nhau. Bạn đổi mật khẩu đăng nhập vì lý do cá nhân bất cứ lúc nào, nhưng đoạn tích hợp đang chạy thì không nên chết theo. Tách ra thì hai việc không kéo nhau.

So do qua trinh cap va dung API token cua Cloudzone
Quá trình cấp và dùng API token tại Cloudzone: đăng ký và khai IP, hệ thống sinh bộ khoá, đổi bộ khoá lấy auth-token, rồi mọi lệnh sau gửi kèm đủ bốn giá trị.

5. Danh sách IP - lớp khoá mà kẻ trộm khoá không mang theo được

Đây là lớp đáng nói nhất, vì nó bù đúng vào điểm yếu ở mục 3.

Khi đăng ký quyền API, bạn khai địa chỉ IP công cộng của máy chủ sẽ gọi API, tối đa năm địa chỉ. Lời gọi đến từ địa chỉ ngoài danh sách bị từ chối ngay, trước cả khi hệ thống xét tới bộ khoá.

Ý nghĩa thực tế: kẻ lấy được đủ bộ khoá của bạn vẫn không gọi được, trừ khi họ đứng sẵn trên chính máy chủ bạn đã khai. Khoá thì chép đi được, còn địa chỉ IP nằm trong whitelist thì không.

Ba điều nên biết trước khi khai:

  1. Phải là IP công cộng mà máy chủ của bạn đi ra Internet, không phải địa chỉ trong mạng nội bộ. Khai nhầm dải nội bộ thì hệ thống chặn ngay ở bước kết nối.
  2. Hệ thống khớp từng địa chỉ một, không nhận cả dải mạng. Chặt hơn, nhưng cũng nghĩa là mỗi máy chủ phải khai riêng.
  3. Nên dùng IP tĩnh. Đường mạng cấp IP động thì mỗi lần nhà mạng đổi là kênh ngắt cho tới khi danh sách được cập nhật lại.

Danh sách này nằm trong trang Quản lý API của Portal và bạn tự sửa được. Đổi máy chủ, thêm một máy nữa, hay nhà mạng cấp dải khác: khách hàng cần sửa ngay trong Portal, có hiệu lực lập tức, không phải gửi yêu cầu mới rồi chờ duyệt lại.

6. Quyền hẹp: đăng ký dịch vụ sử dụng trong API

Lúc đăng ký, bạn chọn nhóm dịch vụ cần dùng: VPS Việt Nam, VPS GPU, máy chủ Proxy, dịch vụ Hosting, Lưu trữ Cloudzone Box, ... Chọn đúng thứ bạn cần, không cần đăng ký hết.

Kèm theo đó, trang API trong Portal cho bạn thấy ngày được cấp quyền và lần gọi API gần nhất. Con số thứ hai là thứ nên nhìn định kỳ: một kênh lẽ ra chạy hằng ngày mà lần gọi gần nhất đã lâu thì hoặc đoạn tích hợp đã chết, hoặc có vấn đề kỹ thuật cần xem lại.

7. Token của Cloudzone không tự hết hạn

Nhiều hệ thống cho token tuổi thọ ngắn, hết hạn thì bên tích hợp tự lấy token mới. Cloudzone hiện không làm vậy: token lấy một lần rồi dùng tiếp, gọi lại lệnh lấy token thì vẫn trả về đúng giá trị cũ.

Tuy nhiên, để nâng cao bảo mật và dự phòng khả năng có thể bị lộ API token key và cần phải đổi, trang API trong Portal có nút Cấp lại khoá: bấm là hệ thống sinh mật khẩu API và khoá bí mật mới, token đổi theo, và bộ cũ ngừng hoạt động ngay lập tức.

Đánh đổi ở đây là gì: token dài hạn thì đoạn tích hợp của bạn đơn giản hơn, không phải viết cơ chế tự lấy token mới. Đổi lại, nó đặt trách nhiệm lên hai thứ khác: danh sách IP giữ cửa, và bạn chủ động cấp lại khoá khi nghi ngờ. Bấm Cấp lại khoá thì mọi hệ thống đang dùng bộ cũ sẽ ngừng gọi được cho tới khi bạn cập nhật.

8. Bốn việc cần lưu ý

Hạ tầng chỉ giữ được phần của hạ tầng. Phần còn lại nằm ở cách khách hàng sử dụng:

  1. Đừng ghi bộ khoá vào nhật ký hệ thống. Nhật ký là nơi rò rỉ phổ biến nhất, vì nó thường được chia sẻ rộng hơn mã nguồn.
  2. Đừng để khoá trong mã nguồn đẩy lên kho chung. Đặt trong biến môi trường hoặc kho bí mật riêng.
  3. Đổi người phụ trách thì cấp lại khoá, giống như đổi khoá cửa truy cập hệ thống.
  4. Gọi API từ máy chủ có IP tĩnh, đừng gọi từ máy cá nhân qua đường mạng gia đình.

Và một điều kỹ thuật khi tích hợp nên biết trước: mọi phản hồi của API Cloudzone đều trả về HTTP 200, kết quả thật nằm trong trường trạng thái của phản hồi. Nếu chỉ dựa vào mã HTTP mà kết luận thành công có thể dẫn đến nhầm lẫn.

Kênh API mở cho mọi khách hàng Cloudzone, đăng ký ngay trong Portal. Cách đăng ký và những gì đặt được qua API, mời Quý khách hàng xem bài API Cloudzone: khách hàng thêm tùy chọn đặt và quản lý dịch vụ thông qua API. Muốn nhìn rộng hơn về các nhóm lỗ hổng API theo chuẩn OWASP, mời Quý khách hàng xem bài Bảo mật API: lỗ hổng thường gặp theo OWASP API và cách phòng. Cần hỗ trợ tích hợp, mời Quý khách hàng chat với Cloudzone.

Chia sẻ

Bài viết liên quan

Xác thực đa lớp (MFA/2FA): vì sao là "khóa" quan trọng nhất

Xác thực đa lớp (MFA/2FA): vì sao là "khóa" quan trọng nhất

Phần lớn các vụ xâm nhập hệ thống không bắt đầu bằng kỹ thuật tấn công tinh vi, mà đơn giản từ một mật khẩu bị lộ. Mật khẩu có thể rò rỉ qua email lừa đảo, qua một đợt rò rỉ dữ liệu ở dịch vụ khác mà người...

Sao lưu dữ liệu phòng tránh rủi ro

Sao lưu dữ liệu phòng tránh rủi ro

Tường lửa, IPBan hay Endpoint Security đều làm nhiệm vụ ngăn ngừa các rủi ro tấn công. Nhưng không giải pháp nào toàn vẹn 100%. Khi sự cố xảy ra, sao lưu dự phòng (backup) là thứ duy nhất đưa dữ liệu trở lại hoạt động. Đây là lý do...

Chặn traffic theo ngưỡng - kiểm soát lưu lượng bất thường

Chặn traffic theo ngưỡng - kiểm soát lưu lượng bất thường

Chặn traffic theo ngưỡng là lớp bảo vệ giúp tự động giới hạn lưu lượng khi vượt ngưỡng băng thông hoặc pps. Bài viết giải thích cơ chế này và vai trò bảo vệ máy chủ tại Cloudzone.

Edge Firewall là gì? Cơ chế chặn IP tấn công Cloudzone

Edge Firewall là gì? Cơ chế chặn IP tấn công Cloudzone

Edge Firewall là lớp tường lửa ở biên mạng giúp chặn các IP tấn công cho toàn hệ thống. Bài viết giải thích Edge Firewall là gì và cơ chế chặn IP tấn công tự động tại Cloudzone.

IPBan là gì? Chống dò mật khẩu trên máy chủ Cloudzone

IPBan là gì? Chống dò mật khẩu trên máy chủ Cloudzone

Máy chủ kết nối Internet liên tục bị các đợt dò quét mật khẩu tự động nhắm vào RDP và SSH. IPBan là lớp bảo vệ giúp tự động phát hiện và khóa các IP này. Vậy IPBan là gì, hoạt động thế nào và được trang bị ra sao...

Các lớp bảo vệ máy chủ tại Cloudzone

Các lớp bảo vệ máy chủ tại Cloudzone

Bảo mật máy chủ cần nhiều lớp phối hợp. Bài viết giới thiệu mô hình bảo vệ nhiều lớp tại Cloudzone, từ hạ tầng mạng, máy chủ, dữ liệu đến quản lý tập trung.