thắc mắc Authorization trong microservice như nào cho hợp lý

k biết hệ thống lớn a nói là lớn cỡ nào, nhưng nhiều hệ thống t lm toàn vậy, cỡ vài chục con service, doanh thu tầm chục triệu $ 1 tháng họ vẫn làm vậy. mạng nội bộ thì chiếm quyền kiểu gì, expose port service nội bộ ra ngoài mới là điểm yếu
Từ khi nào doanh thu với security đi cùng với nhau vậy :confused:. Security là cái chỉ khi nào incident xảy ra nó mới thể hiện thôi. Nói chả đâu xa 2 công ty có văn phòng ở VN như Quoine hay Sky Mavis, doanh thu cũng cả vài chục triệu 1 tháng, dính 1 2 security incidents là đủ để sập cả công ty. Sky Mavis còn hên là có nhà đầu tư đỡ hộ cho chứ không cũng sập như Quoine :confused: . Còn ví dụ chiếm quyền sao thì đọc comment nãy của tôi ngay ở phía trên đó.
 
Từ khi nào doanh thu với security đi cùng với nhau vậy :confused:. Security là cái chỉ khi nào incident xảy ra nó mới thể hiện thôi. Nói chả đâu xa 2 công ty có văn phòng ở VN như Quoine hay Sky Mavis, doanh thu cũng cả chục triệu 1 tháng, dính 1 2 security incidents là đủ để sập cả công ty. Sky Mavis còn hên là có nhà đầu tư đỡ hộ cho chứ không cũng sập :confused: .
thì t đang def lại ý này của a thôi
"Không một hệ thống lớn nào làm vậy cả."
còn thiết kế security như nào thì còn tùy vào mỗi dự án, a k thể phủ nhận cái gateway authen mà nói cái authen ở từng service bảo mật hơn đc, có khi nó còn có cả 2, a cứ đem lí thuyết ra chém thì nó là ngộ nhận
 
thì t đang def lại ý này của a thôi
"Không một hệ thống lớn nào làm vậy cả."
còn thiết kế security như nào thì còn tùy vào mỗi dự án, a k thể phủ nhận cái gateway authen mà nói cái authen ở từng service bảo mật hơn đc, có khi nó còn có cả 2, a cứ đem lí thuyết ra chém thì nó là ngộ nhận
Đương nhiên nó bảo mật hơn vì nó có thêm 1 lớp bảo mật :confused: . Cái tôi nói chả phải lý thuyết, công ty tôi đang làm nó không chỉ authen mà có cả authorization cho service to service communication, không có thì đừng có mơ mà gọi được service khác.
 
Cái này sai bét về nguyên tắc defense in depth, khi một service bị chiếm quyền là toàn hệ thống nát bét luôn. Không một hệ thống lớn nào làm vậy cả.

Đã vào được mạng nội bộ rồi thì nó còn thiếu quyền gì nữa mà sợ mấy cái auth token :ops:
 
Đã vào được mạng nội bộ rồi thì nó còn thiếu quyền gì nữa mà sợ mấy cái auth token :ops:
Ví dụ attacker/insider vào được service A thì attacker đó cũng không lấy được dữ liệu ở service B. Nó làm giảm blast radius của một security incident.
 
Ví dụ attacker/insider vào được service A thì attacker đó cũng không lấy được dữ liệu ở service B. Nó làm giảm blast radius của một security incident.

còn nhiều cách tấn công khác mà không cần động đến code/db của app. Bạn auth toàn bộ service nội bộ thì cũng giống như cấm bán axit để phòng ngừa người ta tạt axit vậy á.
 
còn nhiều cách tấn công khác mà không cần động đến code/db của app. Bạn auth toàn bộ service nội bộ thì cũng giống như cấm bán axit để phòng ngừa người ta tạt axit vậy á.
... Nãy giờ mình nói lý thuyết nhiều quá giờ ví dụ thật nè
https://www.coindesk.com/layer2/2022/05/17/how-not-to-run-a-cryptocurrency-exchange/
Screenshot 2023-08-13 at 12.09.45 AM.png

Vụ này nghe (đồn) là insider job, và sau vụ này có vài người bị sa thải. Khi thiết kế hệ thống không chỉ quan tâm bảo mật cho external attacker, mà phải quan tâm cả insider job. Nhất là với công ty lớn cỡ vài ngàn người trở lên.
còn nhiều cách tấn công khác mà không cần động đến code/db của app.
Chính xác, vậy nên mới có nguyên lý defense in depth, để khi 1 layer bị lọt qua thì vẫn còn vài layer khác để chặn lại.
 
... Nãy giờ mình nói lý thuyết nhiều quá giờ ví dụ thật nè
https://www.coindesk.com/layer2/2022/05/17/how-not-to-run-a-cryptocurrency-exchange/
View attachment 2012795
Vụ này nghe (đồn) là insider job, và sau vụ này có vài người bị sa thải. Khi thiết kế hệ thống không chỉ quan tâm bảo mật cho external attacker, mà phải quan tâm cả insider job. Nhất là với công ty lớn cỡ vài ngàn người trở lên.

Chính xác, vậy nên mới có nguyên lý defense in depth, để khi 1 layer bị lọt qua thì vẫn còn vài layer khác để chặn lại.
Devops nó có full quyền rồi thì bạn prevent kiểu gì?
 
Devops nó có full quyền rồi thì bạn prevent kiểu gì?
Devops có full quyền là ngay từ đầu làm sai về security. Mọi thay đồi liên quan tới infrastructure đều phải được tự động hoá và thông qua review (gitops/tools). Trong trường hợp khẩn cấp mới được cho phép can thiệp vào hệ thống manual. Lúc đó sẽ có cơ chế gọi là break glass, cho phép operator vượt rào. Ngay cả khi break glass cũng phải có approval của người thứ 2.

https://www.beyondtrust.com/blog/entry/provide-security-privileged-accounts-with-break-glass-process

Nghiêm túc nếu hỏi thắc mắc muốn cải thiện security thật thì mình trả lời, còn hỏi kiểu vặn vẹo thì thôi mình không trả lời đâu. Muốn tìm hiểu thì kiếm 1 cuốn sách về threat modelling, blue team red team mà đọc.
 
Devops có full quyền là ngay từ đầu làm sai về security. Mọi thay đồi liên quan tới infrastructure đều phải được tự động hoá và thông qua review (gitops/tools). Trong trường hợp khẩn cấp mới được cho phép can thiệp vào hệ thống manual. Lúc đó sẽ có cơ chế gọi là break glass, cho phép operator vượt rào. Ngay cả khi break glass cũng phải có approval của người thứ 2.

https://www.beyondtrust.com/blog/entry/provide-security-privileged-accounts-with-break-glass-process

Nghiêm túc nếu hỏi thắc mắc muốn cải thiện security thật thì mình trả lời, còn hỏi kiểu vặn vẹo thì thôi mình không trả lời đâu. Muốn tìm hiểu thì kiếm 1 cuốn sách về threat modelling, blue team red team mà đọc.
Cảm ơn thím tôi không có nhu cầu, tôi đã từng cãi nhau chán với team security về mấy vụ này rồi. Cứ mỗi api qua lại là phải chạy 1 nùi security check rồi lại dồn hết qua con auth service. Đến giờ cao điểm là bottle neck rồi phải tra 1 nùi log prod để giải thích cho các cốp lý do.
 
Cảm ơn thím tôi không có nhu cầu, tôi đã từng cãi nhau chán với team security về mấy vụ này rồi. Cứ mỗi api qua lại là phải chạy 1 nùi security check rồi lại dồn hết qua con auth service. Đến giờ cao điểm là bottle neck rồi phải tra 1 nùi log prod để giải thích cho các cốp lý do.
Thiết kế có vấn đề lại đổ cho team security, rồi lại bảo không có nhu cầu tìm hiểu rồi sau này lại thiết kế sai tiếp :sweat: . Ngay cả request từ external client lên, nếu làm stateless auth cũng không bao giờ gặp phải chuyện bottleneck ở auth service cả, vì token nó sẽ valid trong 1 khoảng thời gian tương đối dài 1-15 phút. Tương tự như vậy với service to service communication. Thậm chí cách đơn giản nhất để đảm bảo authen trong service to service communication secure là mutual tls nó cũng chả cần đụng tới service thứ 3.
 
không phải do thiết kế mà do yêu cầu của dự án thôi, đâu phải dự án nào cũng đầu tư security toàn diện, user còn chẳng biết, client request cũng không có, không chi tiền thử hỏi ai đi đâm đầu vào làm.
Còn khi đã đủ to, tiền nhiều thì cái gì chẳng được, vẽ to ăn nhiều.
Và lo bảo mật tuyệt đối thế lo từ ông cài server, lo cloud provider bóp dé, lo máy tính lượng tử bẻ hết mấy cái mã hóa tls, key encryption
Tự cân đối thôi ...
 
không phải do thiết kế mà do yêu cầu của dự án thôi, đâu phải dự án nào cũng đầu tư security toàn diện, user còn chẳng biết, client request cũng không có, không chi tiền thử hỏi ai đi đâm đầu vào làm.
Còn khi đã đủ to, tiền nhiều thì cái gì chẳng được, vẽ to ăn nhiều.
Và lo bảo mật tuyệt đối thế lo từ ông cài server, lo cloud provider bóp dé, lo máy tính lượng tử bẻ hết mấy cái mã hóa tls, key encryption
Tự cân đối thôi ...
Hoàn toàn đồng ý, nãy giờ mình chỉ trả lời vì có bác khuyên là "không nên" có authentication trong service vì dư thừa, hay có bác bảo là làm làm gì cho phức tạp đằng nào cũng có lỗ hổng khác.

Còn nếu bác nào muốn tìm hiểu xem thực tế họ làm sao thì có thể xem ví dụ về Passport của Netflix ở đây.
https://cheatsheetseries.owasp.org/...-a-data-structures-signed-by-a-trusted-issuer
 
Hoàn toàn đồng ý, nãy giờ mình chỉ trả lời vì có bác khuyên là "không nên" có authentication trong service vì dư thừa, hay có bác bảo là làm làm gì cho phức tạp đằng nào cũng có lỗ hổng khác.

Còn nếu bác nào muốn tìm hiểu xem thực tế họ làm sao thì có thể xem ví dụ về Passport của Netflix ở đây.
https://cheatsheetseries.owasp.org/...-a-data-structures-signed-by-a-trusted-issuer
Đúng rồi bác, chẳng qua là chưa có điều kiện làm thôi chứ về bản chất nội bộ cũng cần bảo vệ. Giờ việc tấn công ngang hàng nhiều không bảo vệ thì service team khác lỗi bị tấn công thì gọi thông tuông qua team mình cũng toang.
 
bên khách hàng cũ tôi làm thì về giao tiếp giữa các service nội bộ là như này,

READ thì qua rest, có authen token riêng cho system user
WRITE thì qua message queue, 1 queue nhận message, 1 queue nhận lại message lỗi của queue kia
 
Nó không chỉ là external threats mà về cả internal threats. Giả sử 1 service về promotion chẳng hạn, service đó không nên có quyền gọi API liên quan tới report hay dữ liệu cá nhân của từng người dùng. Không có auth giữa các service thì dữ liệu nội bộ của công ty hoàn toàn có thể bị leak ra ngoài, hay hệ thống bị phá hoại. Cái đó không phải là giả thuyết đâu, mình biết vài sàn crypto bị tấn công kiểu đó rồi. Có cả trường hợp bản thân người trong công ty không có chủ định phá hoại nhưng máy tính cá nhân bị tấn công.
Chuẩn r bác ơi, em làm trong domain fintech, các hệ thống internal gọi lẫn nhau vẫn phải có cơ chế Auth
 
Nó không chỉ là external threats mà về cả internal threats. Giả sử 1 service về promotion chẳng hạn, service đó không nên có quyền gọi API liên quan tới report hay dữ liệu cá nhân của từng người dùng. Không có auth giữa các service thì dữ liệu nội bộ của công ty hoàn toàn có thể bị leak ra ngoài, hay hệ thống bị phá hoại. Cái đó không phải là giả thuyết đâu, mình biết vài sàn crypto bị tấn công kiểu đó rồi. Có cả trường hợp bản thân người trong công ty không có chủ định phá hoại nhưng máy tính cá nhân bị tấn công.
AuthN/AuthZ trên từng service/cluster là bình thường và nên làm chỉ có điều cty có chịu đầu tư đến mức nào hay không thôi.
Chả phải mà đám service mesh nó hay quảng cáo là "Zero Trust", rồi mTLS... các kiểu đó sao. Rồi RPC gọi nhau thông qua mesh phải có access control.
Bản chất microservices là scale về con người. Mỗi team own một service/cluster nên chuyện AuthN/AuthZ là bình thường, không bên nào dc tự ý chọt vào bên nào.
 
em thấy là cái api gateway nó nên là auth service luôn, nhưng chỉ xử lý phần authenication thôi, còn khi gọi sang service khác thì nên để service ý xử lý authorization
 
Nếu thêm 1 service để auth(author/authen) rồi từ gateway gọi sang service con, rồi service con gọi sang auth như vậy chắc là ổn cho mô hình deploy nhiều service lên nhiều server khác nhau đúng k mọi người
 
hì các bác, em đang làm một project cá nhân dùng api-gateway kết hợp với thằng keycloak làm bảo mật. bác nào nào qua rồi ae trao đổi nhé.
 
Back
Top