0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Quản lý bí mật trong Dev Tools mà không bị chỉ trích

Đăng vào 5 tháng trước

• 8 phút đọc

Giới thiệu

Chào các lập trình viên! Đã từ lâu tôi không viết bài nào, và hôm nay tôi muốn trở lại với một chủ đề thực sự hữu ích cho tất cả các nhà phát triển. Trong bài viết này, chúng ta sẽ khám phá cách quản lý bí mật trong mã nguồn mà không rơi vào những cạm bẫy thường gặp.

Vấn đề quản lý bí mật

Nếu bạn đang đọc bài viết này, có thể bạn đã nhận ra vấn đề chỉ qua tiêu đề. Chúng ta, những lập trình viên, thường có thói quen khó bỏ là nhúng các bí mật vào mã nguồn chỉ để đảm bảo mọi thứ hoạt động. "Nó chỉ ở môi trường phát triển, chúng ta sẽ xóa nó trước khi đưa vào kho chứa", chúng ta nghĩ vậy. Nhưng thực tế là, rất nhiều khi chúng ta không xóa nó. Các bí mật bị nhúng vào mã nguồn, không được phát hiện và cuối cùng rơi vào tay kẻ xấu.

Việc onboarding dự án cũng rất phức tạp. Khi chúng ta thêm một thành viên mới vào nhóm, chúng ta phải gửi cho họ tệp .env qua email, discord, slack, thậm chí là tin nhắn, điều này không phải là một thực hành an toàn. Và vấn đề không chỉ dừng lại ở đó. Nếu chúng ta cập nhật OPEN_AI_API_KEY, chúng ta cần thông báo cho cả nhóm và cũng phải gửi cho họ các bí mật. Các máy chủ cũng cần giá trị mới để tránh lỗi 500.

Tại sao điều này lại quan trọng?

Bạn có thể nghĩ rằng đây chỉ là những sai lầm ngớ ngẩn mà chúng ta mắc phải. Rằng việc kiểm tra PR cần phải cẩn thận hơn, rằng cần có sự giao tiếp thường xuyên khi có vấn đề xảy ra. Nhưng chúng ta là con người và con người sẽ mắc lỗi.

AI sẽ không ngu ngốc như vậy!

Đúng, nhưng nếu người đứng sau các lệnh lại không có kinh nghiệm như vậy thì sao? Họ có thể không hiểu rằng nội dung của một tệp .env là rất nhạy cảm.

Nếu bạn đã đọc đến đây, có lẽ tôi đã thu hút được sự chú ý của bạn và bạn đang mong chờ một giải pháp. Để không làm bạn thất vọng, hãy cùng xem một số số liệu thống kê.

Theo báo cáo của GitGuardian về tình trạng lạm dụng bí mật năm 2025, có tới 23 triệu bí mật dạng plain text được phát hiện trong các commit trên GitHub, 70% trong số đó vẫn còn hiệu lực cho đến nay. Và con số này vẫn đang tăng! Nó đã tăng lên 23.8 triệu vào năm 2024 từ 19.1 triệu vào năm 2023. Các vi phạm tiềm tàng từ những lỗ hổng này có thể tiêu tốn lên đến 4.4 triệu đô la, theo báo cáo của IBM về chi phí vi phạm dữ liệu năm 2025.

Rõ ràng, đây là một vấn đề nghiêm trọng có thể làm tổn hại đến tổ chức.

Giải pháp

Nhưng đừng lo! Vấn đề chính là lý do tồn tại của các kỹ sư, và tại đây tôi muốn giới thiệu với bạn một công cụ: Keyshade.

Keyshade là gì?

Keyshade là một nền tảng quản lý bí mật và cấu hình mã nguồn mở, được xây dựng với tư duy tập trung vào bảo mật và thân thiện với nhà phát triển.

Tại sao tôi nên lưu trữ bí mật của mình ở nơi khác?

Có rất nhiều lý do:

  • Quên đi việc "Này bạn, có thể gửi cho tôi tệp .env không?". Keyshade giúp bạn đồng bộ hóa. Bạn tải lên cấu hình cho dự án của mình và toàn bộ nhóm phát triển có thể truy cập vào dự án đó.
  • Quyền sở hữu dữ liệu là một mối quan tâm lớn. Cách tiếp cận của Keyshade để giải quyết vấn đề này là độc đáo. Nó sử dụng mã hóa khóa công khai để lưu trữ bí mật, có nghĩa là ngay cả Keyshade cũng không thể giải mã các bí mật của bạn. Bạn giữ quyền truy cập vào khóa riêng và quyết định chia sẻ nó với các thành viên trong nhóm.
  • Ứng dụng của bạn trên máy chủ có thể sử dụng cấu hình của bạn! Bạn có thể làm điều này bằng cách sử dụng các tích hợp theo nền tảng của họ hoặc CLI của họ.
  • Và phần tốt nhất? Nó là một thay thế dễ dàng. Bạn không cần phải thay đổi một dòng nào trong mã nguồn của mình để thích ứng với Keyshade. Nó hoạt động ngay lập tức.

Họ cung cấp một gói miễn phí hào phóng để bạn trải nghiệm.

Thời gian demo!

Đủ rồi, hãy xem nó hoạt động như thế nào. Tôi sẽ sử dụng một ứng dụng NextJS đơn giản để minh họa nền tảng này.

Đầu tiên, hãy truy cập app.keyshade.xyz và tạo cho mình một tài khoản.

Bạn sẽ đến một trang như thế này:

Thuật ngữ trong Keyshade

  • Workspaces: Xem như là các tổ chức.
  • Projects: Nơi chứa các bí mật, biến và môi trường của bạn.
  • Secrets: Các thông tin nhạy cảm từ tệp .env. Những thứ này luôn được lưu trữ ở dạng mã hóa.
  • Variables: Các thông tin không nhạy cảm. Ví dụ, số cổng.
  • Environments: Xem như là các môi trường phát triển. Ví dụ, dev, prod, stage, uat, v.v.

Cài đặt CLI

Keyshade có CLI riêng để thực hiện tất cả các thao tác trên nền tảng, cũng như sử dụng cấu hình của bạn trong môi trường phát triển cục bộ. Chúng ta sẽ cần điều này cho demo. Đây là cách cài đặt CLI:

Copy
npm i -g @keyshade/cli

Sau khi cài đặt thành công, bạn có thể sử dụng:

Copy
keyshade -V

Thiết lập hồ sơ

Hồ sơ có thể được xem như là danh tính của bạn để truy cập Keyshade. Có nhiều khả năng, nhưng chúng ta sẽ chỉ dừng lại ở những điều cơ bản.

Đầu tiên, hãy vào DashboardProfile DropdownProfileAPI Keys. Nhấn Add API Key và tạo một khóa cho bản thân. Để mục đích demo, hãy chọn tất cả quyền.

Khi khóa được tạo, hãy ghi lại nó.

Mở terminal yêu thích của bạn và nhập lệnh sau:

Copy
keyshade profile create -n my_key -a <your key> --set-default

Khi hoàn tất, bạn có thể xem nó bằng:

Copy
keyshade profile list

Vậy là bạn đã đăng nhập thành công vào Keyshade từ máy cục bộ của mình. Để kiểm tra mọi thứ hoạt động, hãy thử liệt kê các workspaces:

Copy
keyshade workspace list

Dự án NextJS

Dưới đây là nội dung trong dự án của tôi:

Trong src/app/page.tsx, tôi có nội dung sau. Bạn có thể thay thế nội dung của mình:

Copy
export default function Home() {
  return (
    <div className="bg-white h-screen w-screen text-center text-black flex flex-col">
      <div><span className="font-bold">Secret (NEXT_PUBLIC_API_KEY):</span> {process.env.NEXT_PUBLIC_API_KEY}</div>
      <div><span className="font-bold">Variable (NEXT_PUBLIC_PORT):</span> {process.env.NEXT_PUBLIC_PORT}</div>
    </div>
  );
}

Điều cần lưu ý:

  • Tôi không có tệp .env.
  • Chúng tôi đang đọc NEXT_PUBLIC_API_KEYNEXT_PUBLIC_PORT từ môi trường.

Nếu bạn khởi động dự án này bằng npm run dev, và truy cập https://localhost:3000, bạn sẽ thấy điều gì đó như thế này:

Tạo một dự án

Để bắt đầu thêm bí mật và biến, chúng ta cần tạo một dự án. Vào DashboardCreate Project.

Mức truy cập: Xác định ai có thể xem dự án này. Vì chỉ có bạn thấy nó, hãy đặt thành PRIVATE (mặc định).
Lưu khóa riêng: Điều này tạo quyền sở hữu cho bạn. Keyshade khuyên bạn không nên lưu khóa riêng với họ. Đặt thanh trượt ở chế độ tắt (mặc định).
Môi trường: Chúng ta không cần quá nhiều môi trường, vậy là tốt.

Sau khi nhấn Create Project, bạn sẽ thấy một hộp thoại mới.

  1. Sao chép lệnh
  2. Vào dự án cục bộ của bạn
  3. Mở terminal
  4. Dán lệnh và nhấn enter

Thật tuyệt! Bây giờ bạn đã liên kết thành công dự án cục bộ với Keyshade.

Tạo bí mật và biến

Chúng ta đã sẵn sàng. Bước cuối cùng là thêm giá trị cho NEXT_PUBLIC_API_KEYNEXT_PUBLIC_PORT. Như tên gọi, cái đầu tiên sẽ là một bí mật (bảo mật theo bản chất), và cái thứ hai là một biến (không quá bảo mật).

Thêm NEXT_PUBLIC_API_KEY

  • Vào dự án của bạn
  • Nhấp vào tab Secret
  • Nhấp vào Add Secret
  • Đặt tên là NEXT_PUBLIC_API_KEY
  • Điền Note nếu bạn muốn, tôi sẽ để trống
  • Nhập abc là giá trị cho default (môi trường mà chúng ta đã chọn khi tạo dự án)
  • Nhấn Add Secret

Bạn sẽ thấy một điều như thế này:

Thêm NEXT_PUBLIC_PORT

Các bước hoàn toàn giống nhau, chỉ khác là bạn sẽ thêm điều này dưới tab Variable. Tôi sẽ sử dụng 1234 làm giá trị cho default. Khi xong, bạn sẽ có thể thấy điều này:

Thấy phép màu trong hành động

Để tận dụng sức mạnh của Keyshade, chúng ta cần sử dụng CLI của họ để chạy các script. Vì vậy,

Copy
npm run dev

sẽ trở thành

Copy
keyshade run -- npm run dev

Bạn sẽ thấy điều này trong terminal:

Từ đầu ra, hãy lưu ý rằng Keyshade đã lấy được bí mật và biến mà chúng tôi đã tạo trong dự án trước:

Copy
ℹ️ INFO: Fetched 2 configurations (1 secrets, 1 variables)

Giờ đây, khi bạn truy cập https://localhost:3000, bạn sẽ thấy các giá trị thực của cấu hình!

Kết luận

Tôi chắc chắn bạn sẽ thấy bài viết này hữu ích, đặc biệt nếu bạn và đội của bạn đang gặp khó khăn trong việc quản lý bí mật. Keyshade giải quyết hầu hết các vấn đề mà chúng ta, những lập trình viên, gặp phải trong công việc hàng ngày.

Khi nào không nên sử dụng Keyshade?

Có thể bạn đã có trực giác rằng nền tảng này không mấy hữu ích nếu bạn là một lập trình viên độc lập, làm việc trên một dự án cục bộ. Keyshade cũng không hữu ích nếu bạn đang xây dựng ứng dụng CLI, hoặc ứng dụng di động, hay bất kỳ thứ gì chạy trên môi trường bên ngoài (thiết bị của khách hàng).

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào