Trong bài đăng này, tôi sẽ chỉ cho bạn cách cung cấp kết nối chi tiết hơn và an toàn hơn đến và từ nền tảng SaaS. Kết quả cuối cùng là một giải pháp toàn diện trông giống như một phần mở rộng tự nhiên của nền tảng SaaS và được cung cấp dưới dạng tính năng cho các kế hoạch tập trung vào doanh nghiệp hoặc như một điểm khác biệt mang tính cạnh tranh cho tất cả khách hàng của bạn. Tổng thời gian cần thiết để chạy bản demo chỉ là vài phút. Tôi cũng sẽ đi sâu vào những gì đang diễn ra ở hậu trường để giải thích cách thức hoạt động của phép thuật.
Đầu tiên, hãy để tôi đưa ra một số thông tin cơ bản về lý do tại sao nhu cầu cụ thể này lại nảy sinh và nêu bật những thiếu sót trong cách triển khai truyền thống. Vì những cách làm cũ đó không còn hiệu quả nữa.
Bạn cần bắt đầu nghĩ về bảo mật như một tính năng. Nếu bạn là Phó chủ tịch kỹ thuật, nếu bạn là người quản lý sản phẩm, chủ sở hữu sản phẩm, hãy dành thời gian cho vấn đề bảo mật, hãy để các nhà phát triển của bạn tạo ra cơ sở hạ tầng tốt hơn, an toàn hơn.
— Joel Spolsky , Người sáng lập Stack Overflow
Những sản phẩm thành công nhất trong thập kỷ tới sẽ là những sản phẩm nhận ra rằng các phương pháp tiếp cận hiện trạng không còn đủ tốt nữa. Bạn cũng không cần phải tin lời Joel; hãy đọc thông tin chi tiết về Điện toán đám mây riêng tư được Apple công bố gần đây. Một trong những công ty thành công nhất trong hai thập kỷ qua đang đưa ra tuyên bố rõ ràng rằng bảo mật, quyền riêng tư và sự tin cậy sẽ là điểm khác biệt cốt lõi.
Họ thậm chí còn thảo luận về việc việc sử dụng các giao thức hiện tại như TLS không thể cung cấp sự đảm bảo về quyền riêng tư và bảo mật từ đầu đến cuối mà khách hàng mong đợi như thế nào.
Tôi đã nghiên cứu việc kết nối các hệ thống với nhau từ nhiều năm trước, một công việc tốn nhiều công sức trong giai đoạn đầu của sự nghiệp. Công ty của chúng tôi đang phát triển và chúng tôi sẽ kết nối phòng máy chủ trong tòa nhà hiện tại với hệ thống mà chúng tôi vừa lắp đặt ở tòa nhà mới. Văn phòng mới cách đó vài dãy nhà và chúng tôi đang làm việc với công ty viễn thông địa phương để lắp đặt một đường dây chuyên dụng.
Vào thời điểm đó, việc kết nối hai mạng riêng biệt có một thực tế rõ ràng và hữu hình về mặt vật lý.
Tất cả chúng tôi đều bước tiếp từ những ngày đó. Giờ đây, các nhóm công nghệ hiện đại phức tạp hơn; một loạt ứng dụng được kết nối với nhau trải rộng trên toàn cầu, được chạy trên đám mây bởi các công ty sản xuất sản phẩm 'tốt nhất'. Qua nhiều thập kỷ, chúng tôi đã phát triển. Ngày nay, hiếm khi có hai công ty riêng biệt thực sự muốn kết nối toàn bộ mạng của họ với nhau—đó là những ứng dụng và khối lượng công việc cụ thể trong mỗi mạng cần liên lạc với nhau.
Tuy nhiên, chúng tôi vẫn tiếp tục sử dụng các phương pháp cũ như một cách để kết nối "an toàn" các hệ thống của mình.
Việc chạy dây cáp thực tế đã bị loại bỏ, nhưng chúng tôi hầu như đang làm điều tương tự. Những cách tiếp cận cũ này đưa bạn đến vô số mạng, đây là một bề mặt tấn công khổng lồ đã chín muồi để khai thác.
Ý nghĩa của mọi người khi nói "đám mây" hoặc "tại chỗ" đã trở nên mờ nhạt trong những thập kỷ trước. Để tránh mọi nhầm lẫn, tôi sẽ tạo một tình huống giả định cho chúng ta:
Khi xây dựng phiên bản đầu tiên của Nền tảng Initech, có rất nhiều khách hàng tiềm năng cần hợp tác để chứng minh sự phù hợp của sản phẩm với thị trường. Nó sẽ tích hợp với các API công khai của các nhà cung cấp hệ thống kiểm soát phiên bản chính (ví dụ: GitHub, GitLab, Bitbucket, v.v.), sử dụng cam kết/webhooks để phản ứng với các sự kiện, đưa kết quả vào quy trình làm việc và mọi thứ hoạt động như mong đợi.
Điều này thật tuyệt vời khi sản phẩm mang tính thụ động và chỉ phản ứng với các sự kiện do ai đó tại ACME Corp khởi xướng. Nhiều dịch vụ muốn cung cấp giá trị bằng cách đánh giá những thay đổi bên ngoài trên thế giới và chủ động thúc đẩy cải tiến cho khách hàng của họ.
Hãy nghĩ đến nhiều dịch vụ quét bảo mật hoặc phụ thuộc—nếu có phát hiện lỗ hổng bảo mật mới, họ muốn tạo yêu cầu kéo/hợp nhất trên tất cả các kho lưu trữ bị ảnh hưởng càng nhanh càng tốt. Các dịch vụ VCS được quản lý hoàn toàn với các API công khai cung cấp các cách để kích hoạt tính năng này, tuy nhiên, các phiên bản tự lưu trữ của các sản phẩm này không có API có thể truy cập công khai.
Những khách hàng chọn tự lưu trữ các hệ thống này thường nghiêng về các doanh nghiệp lớn, vì vậy hiện tại chúng tôi phải đối mặt với một số quyết định khó khăn: Liệu Initech có thể bán sản phẩm của họ cho những khách hàng có giá trị cao này không? Khách hàng có phải mua phiên bản rút gọn của sản phẩm thiếu một trong những tính năng có giá trị nhất không? Hay chúng ta yêu cầu họ đánh giá lại một số khía cạnh về tình hình bảo mật và kết nối mạng của họ để cấp quyền truy cập cho Initech?
Initech cần truy vấn cơ sở dữ liệu để hiển thị giải pháp báo cáo tùy chỉnh của mình. Đây không phải là vấn đề riêng của Initech vì hầu hết mọi Nền tảng dữ liệu khách hàng (CDP) hoặc công cụ trực quan đều có cùng một vấn đề: khách hàng không muốn dữ liệu riêng tư của họ có thể truy cập được từ Internet công cộng, vì vậy dữ liệu đó thường ở dạng cơ sở dữ liệu trong một mạng con riêng tư.
Như tôi đã nói trước đó, nhóm công nghệ hiện đại đã phát triển thành một loạt ứng dụng được kết nối với nhau. Tuy nhiên, cách chúng ta kết nối các ứng dụng này chỉ thay đổi một chút so với cách chúng ta kết nối mạng cách đây nhiều thập kỷ. Mặc dù những cách tiếp cận này thuận tiện và quen thuộc nhưng chúng chưa bao giờ được thiết kế cho các trường hợp sử dụng mà chúng ta có ngày nay.
Thay vào đó, họ đang cố gắng thực hiện những điều chỉnh nhỏ nhất có thể đối với cách mọi thứ đã từng hoạt động để cố gắng tiến gần đến cách chúng ta cần mọi thứ hoạt động ngày nay.
Tùy chọn triển khai mặc định cho hầu hết các hệ thống riêng tư là định vị chúng trong mạng riêng, với mạng con riêng, không có địa chỉ IP công cộng. Có những lý do rất chính đáng cho việc này! Tùy chọn dễ dàng nhất để Initech kết nối với hệ thống riêng này là yêu cầu ACME Corp cung cấp địa chỉ IP hoặc tên máy chủ công cộng có thể truy cập được từ internet.
Thật tệ.
Tất cả những lý do chính đáng cho việc ban đầu đặt một hệ thống vào một mạng riêng bị ngắt kết nối với thế giới ngay lập tức biến mất. Toàn bộ mạng Internet công cộng hiện có thể truy cập hệ thống này, cho phép hàng nghìn tin tặc có thể liên tục cố gắng xâm nhập vào hệ thống hoặc đơn giản là DoS. Bạn có một thông tin xác thực bị rò rỉ, CVE hoặc vấn đề khác không thể được sở hữu.
Một cách tiếp cận khác là đặt proxy ngược phía trước hệ thống. Tôi không chỉ nói về những thứ như nginx và HA Proxy; có cả danh mục dịch vụ được lưu trữ hoặc quản lý phù hợp với mô tả này.
Điều này có lợi thế là ACME Corp không còn đưa hệ thống riêng tư trực tiếp lên internet công cộng nữa. Proxy ngược cũng bổ sung khả năng giới hạn tỷ lệ hoặc tinh chỉnh các hạn chế truy cập để giảm thiểu các cuộc tấn công DoS tiềm ẩn. Đây là biện pháp phòng thủ được cải thiện theo chiều sâu nhưng ACME Corp vẫn cho phép toàn bộ mạng internet công cộng tiếp cận và cố gắng tấn công proxy.
Nếu bị xâm phạm, nó sẽ thực hiện chức năng của proxy: cho phép lưu lượng truy cập đi đến đích đã định.
Một cải tiến gia tăng là Initech sẽ cung cấp danh sách IP mà họ sẽ gửi yêu cầu và yêu cầu ACME Corp quản lý các quy tắc định tuyến và tường lửa của họ để chỉ cho phép các yêu cầu từ những địa chỉ IP đó. Tuy nhiên, đây không phải là một cải tiến nhiều.
Tại Initech, bạn sẽ không muốn có sự kết hợp chặt chẽ giữa phiên bản ứng dụng hiện tại và địa chỉ IP; bạn sẽ muốn sự linh hoạt để có thể mở rộng quy mô cơ sở hạ tầng theo yêu cầu mà không cần phải liên tục thông báo cho khách hàng về địa chỉ IP mới.
Vì vậy, các địa chỉ IP rất có thể sẽ thuộc về cổng NAT hoặc máy chủ proxy. ACME Corp có thể cho rằng việc khóa quyền truy cập chỉ vào một hoặc hai địa chỉ IP nguồn có nghĩa là chỉ một hoặc hai máy từ xa có quyền truy cập vào mạng của họ.
Thực tế là mọi thứ trên mạng từ xa có thể gửi yêu cầu thông qua cổng NAT hoặc proxy giờ đây cũng sẽ được cấp quyền truy cập vào mạng ACME Corp. Điều này không cho phép một ứng dụng hoặc máy nào tham gia; bạn đã cho phép toàn bộ mạng từ xa.
Điều đáng lo ngại hơn nữa là các địa chỉ nguồn IP bị giả mạo một cách tầm thường . Kẻ tấn công tiềm năng có thể tạo một yêu cầu hợp lệ, giả mạo địa chỉ nguồn và gửi dữ liệu hoặc hướng dẫn vào mạng ACME Corp. Các nhà cung cấp SaaS, bao gồm cả Initech, chắc chắn cũng phải ghi lại danh sách các địa chỉ IP hiện tại để có danh sách IP được tạo sẵn để thử và mạo danh.
Cách tiếp cận lọc IP của bạn càng phức tạp thì kẻ tấn công càng cần phải tinh vi hơn để xâm phạm nó, nhưng không có cách nào trong số đó là hoàn hảo. Trước đây, tôi đã nghe mọi người khẳng định rằng việc giả mạo IP thực sự chỉ dành cho các cuộc tấn công DDoS vì trong hầu hết các trường hợp, kẻ tấn công không thể nhận được phản hồi và vì vậy chúng không thể làm được điều gì hữu ích.
Hãy nghĩ về các hệ thống mà chúng tôi đang kết nối - bạn tự tin đến mức nào khi không có lệnh gọi API kích hoạt và quên nào sẽ không tạo/cập nhật/hủy dữ liệu có giá trị một cách nghiêm túc? Bảo mật tốt không chỉ ngăn chặn việc lộ dữ liệu mà còn bảo vệ và đảm bảo tính toàn vẹn của dữ liệu.
Nếu bạn là mục tiêu có giá trị, chẳng hạn như một tổ chức tài chính lớn, những kẻ tấn công có động cơ sử dụng các phương pháp như thế này để khởi động các cuộc tấn công MitM và chặn các luồng liên lạc . Nếu khách hàng, khách hàng tiềm năng và mục tiêu có giá trị của bạn, điều đó cũng khiến bạn trở thành mục tiêu có giá trị.
VPN là giải pháp phổ biến ở nhiều công ty nhằm cho phép nhân viên kết nối với “mạng công ty” khi họ ở bên ngoài văn phòng. Chúng cũng được sử dụng để cho phép các hệ thống khác kết nối với mạng hiện có.
Trường hợp sử dụng mà chúng ta đang nói đến ở đây là khác nhau. Đó là việc cho phép hai công ty riêng biệt, một sản phẩm SaaS và (các) khách hàng của họ, có thể giao tiếp với nhau.
Trong nhiều trường hợp, chỉ có một hệ thống ở mỗi đầu kết nối có thể giao tiếp với nhau. Thay vào đó, chúng tôi hướng đến một công cụ được thiết kế để kết nối toàn bộ mạng. Nó giống như chạy một bản vá ảo dẫn từ bộ định tuyến của công ty này sang bộ định tuyến của công ty khác.
Nếu tôi yêu cầu bạn thực hiện phiên bản vật lý của việc đó, cắm cáp từ môi trường sản xuất của bạn trực tiếp vào môi trường sản xuất của một công ty khác, bạn có thể sẽ tạm dừng nó một chút. Rất nhiều tạm dừng. Và vì lý do tốt. Nhưng VPN là "ảo" và "riêng tư" và rất dễ dàng (so với việc chạy cáp) và phổ biến đến mức chúng tôi không nghĩ nhiều về nó.
Nếu tất cả những gì bạn cần làm là kết nối một thứ trong mỗi mạng, thì bạn đã sử dụng một công cụ rất cùn cho những gì được coi là một nhiệm vụ rất chính xác.
Bạn vẫn có thể thực hiện tác vụ chính xác bằng cách sử dụng VPN, nhưng có các lớp kiểm soát cấp độ mạng và quy tắc định tuyến mà bạn cần đảm bảo sẵn sàng để đóng tất cả các cánh cửa chỉ đến cánh cửa bạn muốn mở trong mỗi mạng. Đó là một ví dụ khác về cách chúng tôi có các công cụ và phương pháp tiếp cận phù hợp với mục đích thiết kế của chúng, nhưng chúng tôi đang thực hiện các bước tăng dần về cách sử dụng chúng để buộc chúng hoạt động phù hợp với nhu cầu ngày càng phát triển của chúng tôi.
Làm điều đó một cách an toàn có nghĩa là phân lớp phức tạp hơn và hy vọng rằng chúng tôi luôn nhận được tất cả các chi tiết trong tất cả các lớp đó một cách chính xác. Làm sai sẽ mang lại rủi ro về khả năng tiếp cận mang tính bắc cầu ngoài ý định ban đầu.
Điều gì sẽ xảy ra nếu tôi nói với bạn rằng bất kể bạn đầu tư bao nhiêu thời gian, con người và tiền bạc vào chương trình bảo mật của mình thì mạng của bạn gần như chắc chắn có lỗ hổng bảo mật dễ bị khai thác? …
dữ liệu ngành cho thấy chưa đến 1% doanh nghiệp lớn nhất thế giới vẫn chưa thực hiện bất kỳ bước nào để bảo vệ mạng của họ khỏi mối đe dọa mới và đang nổi lên này…
Lịch sử đã dạy chúng ta rằng điều đúng đắn phải làm phải là điều dễ dàng thực hiện nhất. Điều này đặc biệt quan trọng với các nhà phát triển phần mềm và việc bảo vệ khỏi các thành phần độc hại có chủ ý. Đường cong áp dụng công nghệ bảo mật chậm này… đã cho phép những kẻ xấu nhìn thấy tiềm năng, đổi mới và thúc đẩy sự phát triển ngoạn mục của tội phạm mạng một cách hiệu quả
— Mitchell Johnson , Sonatype
Vấn đề với mỗi cách tiếp cận này là để giả định rằng nó an toàn đòi hỏi nhiều giả định bổ sung: rằng không ai trên internet sẽ cố gắng xâm phạm bạn, rằng bạn có thể tin tưởng vào IP nguồn của các yêu cầu, rằng mạng từ xa chỉ bao gồm các tác nhân tốt. , rằng những giả định này sẽ tiếp tục đúng cả hiện tại và vô tận trong tương lai… và rằng tất cả những giả định này cũng đúng với mọi mạng mà bạn đã kết nối cũng như mọi mạng mà chúng đã kết nối và bất kỳ mạng nào…
Hãy xem điều này có thể trông như thế nào từ quan điểm của ACME Corp:
Giờ đây không chỉ có hai mạng và hai công ty được kết nối với nhau; đó là nhiều mạng. Mỗi nhà cung cấp SaaS sẽ có bộ dịch vụ riêng mà họ sử dụng để nhân rộng điều này hơn nữa. Bạn không những không thể tin tưởng vào mạng mà còn không thể tin tưởng vào mạng của bất kỳ ai khác. Bất kỳ người tham gia nào trong bức tranh này chỉ là một mạng bị cấu hình sai hoặc sự phụ thuộc bị xâm phạm để tránh truyền rủi ro đó qua (các) mạng.
Và bức ảnh này là ví dụ phóng to nhất về một phần nhỏ của vấn đề này! Thu nhỏ và mỗi nhà cung cấp được kết nối với nhóm khách hàng của riêng họ, với nhà cung cấp của riêng họ, với khách hàng của riêng họ... diện tích bề mặt rủi ro tăng theo cấp số nhân.
Chúng tôi có thể tích hợp bảo mật như một tính năng vào sản phẩm của mình trong vòng vài phút! Chúng tôi sẽ nâng cao mức độ bảo mật bằng cách cung cấp giải pháp tập trung và chi tiết hơn. Chúng tôi cũng sẽ ngừng đẩy vấn đề lên những khách hàng như ACME Corp bằng cách yêu cầu họ thực hiện các thay đổi ở cấp độ mạng.
Thay vào đó, chúng tôi sẽ chuyển kết nối an toàn sang mối quan tâm ở cấp ứng dụng và cung cấp trải nghiệm sản phẩm toàn diện bằng cách mở rộng Nền tảng Initech đến những nơi cụ thể cần thiết.
Ví dụ ở đây sẽ hướng dẫn cách Initech Platform có thể thiết lập kết nối với máy chủ GitHub Enterprise tự lưu trữ do ACME Corp quản lý. Kết quả cuối cùng sẽ như sau:
Chỉ mất vài phút để quay tất cả các phần cần thiết! Để tìm hiểu cách thực hiện, hãy xem chuyến tham quan mã của chúng tôi để xây dựng cơ sở cho một đại lý tự lưu trữ .