Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Upstash が EnvShare での安全な環境変数共有を強化する仕組み

envshare.dev は、開発者が環境変数を誰とでも安全に共有できるオープン ソース プロジェクトです。.env をアップロードできます。 ファイルに保存するか、環境変数を入力すると、データベースに保存される前に暗号化されます。リンクを誰とでも共有すると、環境変数を復号化できるようになります。

EnvShare は無料で使用でき、オープンソースです。コードは GitHub で見つけることができます。

機能

  • 共有可能なリンク: リンクを送信して環境変数を安全に共有する
  • エンドツーエンドの暗号化: AES 暗号化は、データを保存する前に暗号化するために使用されます
  • 読み取り数の制限: リンクの読み取りと暗号化ができる回数を制限する
  • 自動期限切れ: リンクを自動的に期限切れにし、一定時間が経過するとデータを削除する

仕組み

環境変数を共有するたびに、新しいランダムな暗号化キーがブラウザで生成されます。機密データは AES を使用して暗号化され、Redis に保存されます。

その後、一意のドキュメント ID が暗号化キーと結合されて、データへのアクセスと復号化に使用できる共有可能なリンクが形成されます。

Upstash が EnvShare での安全な環境変数共有を強化する仕組み

データ

EnvShare は、Redis を使用して暗号化された環境変数を保存します。 Redis は、高速な Key-Value ストアとして使用できる点で優れていますが、リスト、セット、ハッシュなどのより複雑なデータ構造も提供します。また、期限切れのキーを自動的に削除するため、私たちのユースケースに最適です。

データは、次の構造の Redis ハッシュに保存されます。

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

ハッシュを使用すると、暗号化されたデータとともにメタデータを保存したり、HINCRBY を使用して残りの読み取りをアトミックにデクリメントしたりすることができます。 .Redis は非常に柔軟性があり、新しいアイデアの迅速な反復と実装を可能にします。たとえば、将来的にはアクセス ログのようなものを追加する可能性があります。ソートされたセットはこれに最適です。

唯一の問題は、Redis は通常 TCP 経由でのみ利用可能であり、エッジ機能では機能しないことです。幸いなことに、Upstash は、HTTP 経由で Redis にアクセスするために使用できる Redis API を提供しています。これはまさに EnvShare に必要なものです。Upstash は、1 日あたり 10,000 リクエストを処理できる無料の Redis データベースを提供します。私たちにとってはこれで十分です。EnvShare を自分でホストしたい場合は、ここで無料アカウントを取得できます。ここでセルフホスティング ガイドを確認してください。

エッジ機能での Redis のセットアップは簡単です。データベースを作成して @upstash/redis をインストールするだけです。 .

エッジ関数では、データを保存できます。

/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: "...",
});

まとめ

読んでいただきありがとうございます! EnvShare は、Next.js と Upstash Redis を簡単に始めることができることを示すために私が構築した楽しいプロジェクトです。気に入っていただければ幸いです。ご質問やフィードバックがございましたら、お気軽に Twitter までご連絡ください。

関連リンク:

  • 環境共有
  • GitHub
  • 導入ガイド

  1. 「インピーダンス不一致テスト」:データプラットフォームは単純ですか、それとも複雑ですか?

    「シンプルさは究極の洗練さです」 —レオナルドダヴィンチ 「ほとんどの情報は無関係であり、ほとんどの労力が無駄になりますが、無視すべきことを知っているのは専門家だけです。 」—ジェームズ・クリア、原子の習慣 さまざまなシステムを備えた豪華なデータパイプラインがあります。表面的には非常に洗練されているように見えますが、実際には内部の複雑な混乱です。さまざまな部品を接続するために多くの配管作業が必要になる場合があり、継続的な監視が必要になる場合があります。また、実行、デバッグ、および管理するために独自の専門知識を持つ大規模なチームが必要になる場合があります。言うまでもなく、使用するシステムが多

  2. Redis GEORADIUS –特定のエリア内にある地理的価値の要素を取得する方法

    このチュートリアルでは、特定の領域に該当するキーに格納されている地理空間値の要素を取得する方法について学習します。このために、Redis GEORADIUSを使用します コマンド。 GEORADIUSコマンド このコマンドは、経度、緯度、および半径の引数を使用して計算された領域の境界内にある、キーに格納されている地理空間値(Sorted Set)の1つ以上のメンバーを返すために使用されます。この面積は、指定された経度、緯度の値を円の中心位置として使用し、指定された単位の半径を円の半径として使用して計算されます。 半径は、次のいずれかの単位を使用して指定されます:- m メーター