Tiếp phần 1
Trong các loại báo, thì Security Incidents thuộc diện chúa sơn lâm, đỉnh cao của nghệ thuật hắc ám. Nếu như làm task không xong, quality chậm nhẹ thì ăn chửi, nặng hơn thì bị kick, cũng món này chỉ ảnh hưởng đến cá nhân, chú này out, thanh niên khác vào thay là xong, còn security incidents là trảm cả team, tình cảm thì bắt giải trình, ác hơn thì cắt hợp đồng, kiện cáo đòi bồi thường, hệ lụy rất nhiều.
Data leak
CJ là một startup công nghệ AI hoạt động theo mô hình B2B, khách hàng của CJ phần lớn là ngân hàng bảo hiểm. Để giảm thiểu chi phí, CJ sử dụng kiến trúc multi-tenant để khách hàng dùng chung hạ tầng bao gồm cloud, database…
RDS Database schema của CJ Postgres có tên là bi_integration, đây là database lưu thông tin analysis, BI analytics truy cập thông tin từ schema để tạo biểu đồ phân tích user behavior…
Vì BI analytics của nhiều công ty cùng truy cập vào 1 schema thì DBA của CJ phải quản trị, thực hiện cơ chế phân quyền tốt, để đảm bảo user của cty A chỉ có thể truy cập vào dữ liệu của A mà không phải của B
DBA của CJ follow đầy đủ security best practice như Role and Permission, Audit logs, Regular Security Audít
Khái niệm RLS này, bạn có thể hỏi ChatGPT, còn giải thích đơn giản theo kiểu giaosucan’s log thì trong cùng 1 table A, user X chỉ có thể nhìn thấy các record X, không thể nhìn thấy record Y thuộc về user Y
Cơ chế này được thực hiện
ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;
Tạo Row-level Security Policies
CREATE POLICY user_select_policy ON table_name
FOR SELECT
USING (owner_id = current_user_id());
Và incidents đến từ human mistake, khi DBA tạo 1 table temporary trên schema bi_intergration chứa data của ngân hàng A, và hãng bảo hiểm B nhưng đã quên không execute RLS, dẫn tới A và B nhìn thấy dữ liệu của nhau.
Sự việc chỉ diễn ra trong 15 phút, nhưng đã sinh ra security incident data leak lớn nhất trong lịch sử công ty vì đây là 2 khách hàng lớn
Ngay lập tức A, B đã gọi điện cho CEO và CTO của CJ yêu cầu giải trình, đòi hỏi phải cung cấp audit logs để biết những user nào đã truy cập và thấy dữ liệu gì
Trên RDS của AWS có Parameter Group là nơi lưu trữ những thông số của database, một tham số quan trọng là pgAudit,
PostgreSQL Auditshared_preload_libraries = 'pgaudit'
Extension này phải được enable để collect audit logs
CREATE EXTENSION pgaudit;
Khi audit logs được enable, thì activity logs sẽ được đổ vào CloudWatch và sẽ track được user nào, địa chỉ IP nào truy cập vào DB, và họ chạy command gì
2024-10-14 10:15:27 UTC: [user=read_only_user, db=production_db, pid=1235]: AUDIT: SESSION,1,1,READ,SELECT,public.customers,"SELECT * FROM customers WHERE customer_id = 123;",<not logged>
Hậu quả của security incidents là 2 khách A và B ngay lập tức terminate contract với CJ, chú DBA bị layoff ngay trong ngày. Còn mấy ông còn lại trong team năm nay xác định treo niêu, khỏi tăng lương, thưởng
Credentials Leak
Credentials ở đây là thông tin đăng nhập vào AWS, server, SSH key, github token, API token. Những credentials này được các job automation, script sử dụng nhiều để thực hiện tác vụ như provision infra, clone code, gọi REST API đến service để query data …
Các credentials này được lưu AWS Secret Manager hoặc AWS Keyvault, không bao giờ được lưu trong script dưới dạng plantext. Một số công ty sử dụng công cụ quản lý và share credentials như
passbolt , password được encrypted và chỉ được share qua passbolt.
Để phòng tránh việc DevOps lỡ tay lưu credentials trên source code, thì
Gitleaks được tích hợp sẵn vào CI/CD để scan git repos detect được việc hardcode credentials
Ngay cả terraform code khi execution tại máy local cần AWS credentials key, key này cũng được generate the session, và expired sau thời gian nhất định
Tóm lại việc protect credentials nếu team làm đúng theo security best practices thì không hề có issue gì cả, cho đến ngày tóp đại báo thủ xuất hiện, sinh viên thực tập
Team DevOps vừa mới nhận một chú sinh viên thực tập mới vào, sau 1 tuần nào là day one, day two, được hướng dẫn, dọa nạt các thể loại về luật lệ security, kí NDA các kiểu, thanh niên cuối cùng cũng được cấp account truy cập AWS Dev
Lần đầu tiên trong cuộc đời, thanh niên chiếu mới được nhìn thấy những server của hệ thống, hàng trăm cụm server, k8s, RDS, cả một bầu trời kiến thức
Task đầu tiên là viết script aws cli để tạo mấy con ec2 instance, theo guideline cần lưu key temporary credentials tại máy local để chạy script
Tức quá, key này tí đã expired, mất công generate lại, script đang chạy thì bị access denied, đúng là phiền phức
Ngồi Google, ChatGPT một lúc thanh niên nghĩ ra một kế, vô IAM user tạo 1 user mới, rồi generate key long term, lưu trong aws credentials
Quả nhiên code chạy phè phè, khỏi mất công refresh, ôi sao tôi phục tôi quá
Nhân tiện, up luôn cái creds này lên github cá nhân, tối về còn down về làm. Mình mới vào phải làm việc bằng 2 , đóng góp cho công ty, sếp thấy mình chăm chỉ còn khi cuối năm được promote
3h sau, IT khách hàng thông báo detect được credentials leak trên Github chỉ đích day github repos, và thanh niên A được lôi ra ánh sáng
Đời nắm thằng có tóc, không ai nắm thằng trọc đầu, ông Lead chịu toàn bộ trách nhiệm vì quản giáo không nghiêm, thằng Cloud Admin liên đới vì tội phân quyền ngu sao lại cho user có quyền tạo IAM key trên AWS
Cũng may là leak creds trên Dev và detect sớm hậu quả không nghiêm trọng lắm, nên sau một loạt họp hành giải trình, khóc lóc các kiểu thì KH bỏ qua, dự án vẫn được tiếp tục, còn chú svtt chính thức kết thúc kì thực tập sớm và tên tuổi được lưu danh sử sách của HR.
Wiki Leak
Nếu như Wiki Leak của
Julian Assange chuyên đưa ra những thông tin bí mật của chính phủ Mĩ ra ánh sáng, thì báo thủ cũng đưa ra ánh sáng một loại thông tin khác đó là Wiki conf của KH.
BA team vừa mới tuyển một em svtt thực tập từ bển về, tiếng Anh nói như gió, xinh xắn dễ thương, ai cũng yêu thương coi như em gái cưng của team.
Yêu lắm thương lắm, mà KH thì cấp account muộn quá, anh lead liền share account của mình cho em để em vào Wiki conf của KH đọc thông tin.
Uilatroi, cả một bầu trời kiến thức hiện ra, hàng trăm wiki page với bao nhiêu thông tin quý giá về nghiệp vụ, quy trình, process, em đến công ty học được bao nhiêu điều mới lạ, càng đọc, em gái càng ngây ngất, đê mê, tim em đập thình thịch, người nóng ran, chịu không nổi rồi, cứ đọc liên tục thế này mình lên đỉnh mất thôi.
Phải kìm lại, phải lưu lại những khoảng khắc này cho những ngày sau, nhưng làm sao bây giờ, account thì share tạm thời. Ngày mai, anh lead sẽ lấy lại account, mình sẽ không còn được đọc những thông tin quý giá này nữa, nó sẽ vĩnh viễn mất đi
Đúng rồi, mình sẽ export những page này rồi import lên wiki conf cá nhân của mình, những tài liệu này sẽ ở lại với mình vĩnh viễn, mình sẽ gắn bó với nó đến trọn đời…
2h sau, IT KH thông báo, phát hiện tài liệu dự án xuất hiện trên wiki page của user A, link được gửi rõ ràng, khỏi cãi
Kết cục thế nào thì ai cũng biết
Cuối cùng thì em gái chính thức lên đỉnh, còn anh Lead thì mệt rã rời, thở không ra hơi…
Từ đó công ty X cấm không cho nhận fresher, svtt vào các dự án lớn
0 Nhận xét