Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Cách Upstash hỗ trợ chia sẻ biến môi trường an toàn trên EnvShare

envshare.dev là dự án mã nguồn mở cho phép nhà phát triển chia sẻ biến môi trường an toàn với bất kỳ ai. Bạn có thể tải lên file .env hoặc nhập biến môi trường và chúng sẽ được mã hóa trước khi lưu trong database. Sau đó bạn có thể chia sẻ link với bất kỳ ai và họ sẽ có thể giải mã biến môi trường.

EnvShare miễn phí và open source. Bạn có thể tìm code trên GitHub.

Tính năng

  • Link chia sẻ: Chia sẻ biến môi trường an toàn bằng cách gửi link
  • Mã hóa end-to-end: Mã hóa AES được dùng để mã hóa dữ liệu trước khi lưu
  • Giới hạn số lần đọc: Giới hạn số lần link có thể được đọc và giải mã
  • Tự động hết hạn: Tự động hết hạn link và xóa dữ liệu sau thời gian nhất định

Cách hoạt động

Mỗi khi bạn muốn chia sẻ biến môi trường, khóa mã hóa ngẫu nhiên mới được tạo trong trình duyệt. Dữ liệu nhạy cảm của bạn được mã hóa bằng AES và sau đó lưu trong Redis.

Sau đó, ID tài liệu duy nhất được kết hợp với khóa mã hóa để tạo link chia sẻ, mà bạn có thể dùng để truy cập và giải mã dữ liệu.

Cách Upstash hỗ trợ chia sẻ biến môi trường an toàn trên EnvShare

Dữ liệu

EnvShare dùng Redis để lưu biến môi trường đã mã hóa. Redis tuyệt vời vì nó có thể dùng như kho key-value nhanh, nhưng cũng cung cấp cấu trúc dữ liệu phức tạp hơn như lists, sets, và hashes. Nó cũng tự động xóa key hết hạn, hoàn hảo cho trường hợp dùng của chúng ta.

Dữ liệu được lưu trong Redis hash với cấu trúc sau:

{
  "remainingReads": 20, // Optional, the number of times the link can be read
  "encrypted": "...", // The encrypted environment variables
  "iv": "..." // The initialization vector for AES-CBC
}

Sử dụng hash cho phép chúng ta lưu metadata cùng với dữ liệu mã hóa và cũng giảm atomic remaining reads với HINCRBY. Redis không ngờ linh hoạt và cho phép iteration nhanh và triển khai ý tưởng mới. Ví dụ tương lai chúng ta có thể muốn thêm access log. Sorted set sẽ phù hợp cho việc này.

Vấn đề duy nhất là Redis thường chỉ có sẵn qua TCP, không hoạt động trong edge-functions. May mắn thay, Upstash cung cấp Redis API có thể dùng để truy cập Redis qua HTTP. Đây chính xác những gì chúng ta cần cho EnvShare. Upstash cung cấp database Redis miễn phí với 10.000 yêu cầu mỗi ngày. Điều này đủ cho chúng ta, và nếu bạn muốn tự host EnvShare, bạn có thể lấy tài khoản miễn phí ở đây. Xem hướng dẫn self-hosting ở đây

Thiết lập Redis trong edge-functions của chúng ta dễ dàng. Chỉ cần tạo database và cài @upstash/redis.

Trong edge-function chúng ta có thể lưu dữ liệu:

/api/share.ts
import { Redis } from "@upstash/redis";
const redis = new Redis({
  url: "..." // UPSTASH_REDIS_REST_URL
  token: "..." // UPSTASH_REDIS_REST_TOKEN
});
await redis.hset(key, {
  remainingReads: 20,
  encrypted: "...",
  iv: "...",
});

Tổng kết

Cảm ơn đã đọc! EnvShare là dự án vui tôi xây dựng để chỉ cách dễ dàng bắt đầu với Next.js và Upstash Redis. Hy vọng bạn thích và thấy hữu ích. Nếu bạn có câu hỏi hoặc phản hồi, thoải mái liên hệ tôi trên Twitter.

Liên kết liên quan:

  • EnvShare
  • GitHub
  • Deployment Guide