ホームページ  >  記事  >  バックエンド開発  >  Google App Engine で JWT 生成用の秘密キーを安全に保存するにはどうすればよいですか?

Google App Engine で JWT 生成用の秘密キーを安全に保存するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 21:13:02688ブラウズ

How to Securely Store Private Keys for JWT Generation in Google App Engine?

Google App Engine で秘密キーをホストする

「github.com/dgrijalva/jwt-go」ライブラリを使用して JSON Web トークンを作成する秘密キーの使用が含まれます。このキーはローカルでホストする場合は簡単に利用できますが、Google App Engine (GAE) にデプロイすると、ファイル システムにアクセスできないため課題が生じます。

キー ストレージのオプション

GAE でホストする場合、秘密キーを保存するには主に 2 つのオプションがあります:

  1. 静的ストレージ: 秘密キーはアプリのコードとともに「」として出荷できます。静的」ファイル。これは簡単なアプローチですが、キーを動的に変更することはできません。
  2. データストア ストレージ: 秘密キーはデータストアに保存できるため、プログラムによるアクセスと更新が可能になります。 。ただし、この方法で保存されたキーは、特定のセキュリティ上の考慮事項の対象となる可能性があることに注意することが重要です。

静的ファイル ストレージ

プライベート ファイルを保存するにはkey を GAE の静的ファイルとして保存すると、アプリのルート ディレクトリに配置し、相対パスを使用して参照できます。たとえば、key/my_key.txt にあるキーには key/my_key.txt としてアクセスできます。

データストア ストレージ

データストアに秘密キーを保存するには、KeyEntity を作成できます:

import (
    "context"

    "cloud.google.com/go/datastore"
)

type KeyEntity struct {
    Key string
}

func StoreKey(ctx context.Context) error {
    client, err := datastore.NewClient(ctx, projectID)
    if err != nil {
        return err
    }

    _, err = client.Put(ctx, datastore.NameKey("Key", "key", nil), &KeyEntity{Key: privateKey})
    return err
}

保存されたキーは GetKey 関数を通じてアクセスできます:

func GetKey(ctx context.Context) (string, error) {
    client, err := datastore.NewClient(ctx, projectID)
    if err != nil {
        return "", err
    }

    var keyEntity KeyEntity
    if err = client.Get(ctx, datastore.NameKey("Key", "key", nil), &keyEntity); err != nil {
        return "", err
    }

    return keyEntity.Key, nil
}

注: 静的ファイルは使用できませんアプリのコードに。したがって、静的ファイルとして保存された秘密キーを参照するには、ファイルがアプリで使用できるようにするための慎重な構成が必要です。

以上がGoogle App Engine で JWT 生成用の秘密キーを安全に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。