Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散構成センター (暗号化と復号化)

Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散構成センター (暗号化と復号化)

マイクロサービス アーキテクチャでは、通常、DevOps 組織方式を採用して、チーム間のコミュニケーションによって生じる膨大なコストを削減し、マイクロサービス アプリケーションの配信機能を加速します。これは、もともと運用保守チームが管理していたオンライン情報が、マイクロサービスが属する組織のメンバーによって保守されることを意味し、データベース アカウントやパスワードなどの大量の機密情報が含まれます。当然のことながら、マイクロサービス アプリケーションの構成ファイルに機密情報をプレーンテキストで直接保存することは非常に危険です。この問題に対処するために、Spring Cloud Config は、構成ファイル内の情報セキュリティを保護するためにプロパティを暗号化および復号化する機能を提供します。

[[230203]]

たとえば、次の例をご覧ください。

  1. spring.datasource.username=didi
  2. spring.datasource.password ={暗号} dba6505baa81d78bd08799d8d4429de499bd4c2053c05f029e7cfbf143695f5b

Spring Cloud Config では、プロパティ値の前に {cipher} プレフィックスを使用して、コンテンツを暗号化された値としてマークします。マイクロサービス クライアントが構成を読み込むと、構成センターは {cipher} プレフィックスを持つ値を自動的に復号化します。この仕組みを実装することで、運用保守チームは機密情報の漏洩を心配することなく、オンライン情報の暗号化されたリソースをマイクロサービス チームに安全に提供できるようになります。次に、設定センターでこの機能を使用する方法を詳しく紹介します。

前提条件

Spring Cloud Config の暗号化・復号化機能を利用する場合、注意しなければならない前提があります。この機能を有効にするには、構成センターの実行環境に無制限強度の JCE バージョン (無制限強度 Java Cryptography Extension) をインストールする必要があります。 JCE 関数は JRE に含まれていますが、使用されるデフォルトのバージョンは長さが制限されたバージョンです。 Oracle の公式 Web サイトからダウンロードできます。圧縮パッケージです。解凍すると、次の 3 つのファイルが表示されます。

  1. README.txt
  2. ローカルポリシー.jar
  3. US_輸出ポリシー.jar

local_policy.jar ファイルと US_export_policy.jar ファイルを $JAVA_HOME/jre/lib/security ディレクトリにコピーし、元のデフォルトの内容を上書きする必要があります。この時点で、暗号化と復号化の準備は完了です。

関連エンドポイント

JCE のインストールが完了したら、構成センターを起動してみてください。コンソールには、次のような構成センター固有のエンドポイントが出力されます。

  • /encrypt/status: 暗号化機能のステータスを確認するためのエンドポイント
  • /key: キーを表示するエンドポイント
  • /encrypt: リクエスト本文の内容を暗号化するためのエンドポイント
  • /decrypt: リクエスト本文の内容を復号化するためのエンドポイント

GET リクエストを介して /encrypt/status エンドポイントにアクセスしようとすると、次の結果が返されます。

  1. {
  2. 「説明」 : 「暗号化サービス用のキーがインストールされていません」
  3. 「ステータス」 : 「NO_KEY」  
  4. }

この応答は、対応するキーが暗号化サービスに設定されていないため、現在の構成センターの暗号化機能を使用できないことを示します。

設定キー

キー情報 (対称キー) は、encrypt.key プロパティを使用して構成ファイル内で直接指定できます。次に例を示します。

  1. 暗号化キー= didispace

上記の構成情報を追加した後、構成センターを再起動し、/encrypt/status エンドポイントに再度アクセスします。次のコンテンツを取得します。

  1. {
  2. 「ステータス」 「OK」  
  3. }

この時点で、構成センターの暗号化機能と復号化機能が使用できるようになります。暗号化機能と復号化機能を実行するには、/encrypt エンドポイントと /decrypt エンドポイントにアクセスしてみるとよいでしょう。両方のエンドポイントは POST リクエストであり、暗号化と復号化の情報はリクエスト本体を介して送信する必要があることに注意してください。たとえば、curl コマンドを使用すると、次のように暗号化エンドポイントと復号化エンドポイントを呼び出すことができます。

  1. $ curl localhost:7001/encrypt -d didispace
  2. 3c70a809bfa24ab88bcb5e1df51cb9e4dd4b8fec88301eb7a18177f1769c849ae9c9f29400c920480be2c99406ae28c7
  3.  
  4. $ カール ローカルホスト:7001/復号化 -d 3c70a809bfa24ab88bcb5e1df51cb9e4dd4b8fec88301eb7a18177f1769c849ae9c9f29400c920480be2c99406ae28c7
  5. ディディスペース

ここでは、encrypt.key パラメータを設定して、キー実装で対称暗号化を使用することを指定します。この方法は実装が比較的簡単で、1 つのパラメータを設定するだけで済みます。さらに、環境変数 ENCRYPT_KEY を使用して、キー情報を外部化するための設定を行うこともできます。

非対称暗号化

Spring Cloud Config の構成センターでは、対称暗号化だけでなく、非対称暗号化 (RSA キー ペアなど) も使用できます。非対称暗号化のキー生成と構成は比較的複雑ですが、セキュリティは高くなります。次に、非対称暗号化の使用方法を詳しく見てみましょう。

まず、keytool ツールを使用してキー ペアを生成する必要があります。 keytool は、JDK のキーおよび証明書管理ツールです。これにより、ユーザーは、自己認証 (ユーザーが他のユーザー/サービスに対して自分自身を認証する) (デジタル署名経由) またはデータ整合性および認証サービスで使用するために、独自の公開/秘密キー ペアと関連証明書を管理できるようになります。このツールは JDK 1.4 以降のバージョンに含まれており、その場所は %JAVA_HOME%\bin\keytool.exe です。

キーを生成するための具体的なコマンドは次のとおりです。

  1. $ keytool -genkeypair -alias config-server -keyalg RSA -keystore config-server.keystore
  2. キーストアのパスワードを入力してください:
  3. 新しいパスワードを再入力してください:
  4. あなたのお名前は何ですか?
  5. [不明]: zhaiyongchao
  6. 組織単位の名前は何ですか?
  7. [不明]: 会社
  8. あなたの組織の名前は何ですか?
  9. [不明]: 組織
  10. あなたの都市または地域の名前は何ですか?
  11. [不明]: 都市
  12. あなたの省/市/自治区の名前は何ですか?
  13. [不明]: 州
  14. このユニットの 2 文字の国コードは何ですか?
  15. [不明]: 中国
  16. CN=zhaiyongchao、OU=会社、O=組織、L=都市、ST=省、C=中国は正しいですか?
  17. [いいえ]: はい
  18.  
  19. <config-server>のキーパスフレーズを入力してください
  20. (キーストアのパスワードと同じ場合は、Enter キーを押します)。
  21. 新しいパスワードを再入力してください:

さらに、これらのプロンプトを段階的に入力したくない場合は、-dname を使用して直接指定することができ、キーストア パスワードとキー パスワードは -storepass と -keypass を使用して直接指定できます。したがって、次のコマンドを使用して、上記のコマンドと同じキーストアを直接作成できます。

  1. $ keytool -genkeypair -alias config-server -keyalg RSA \
  2. -dname "CN=zhaiyongchao、OU=会社、O=組織、L=市、ST=省、C=中国" \
  3. -キーパス 222222 \
  4. -keystore config-server.keystore \
  5. -ストアパス 111111 \

デフォルトでは、上記のコマンドで作成されたキーの有効期間は 90 日間のみです。有効期間を調整する場合は、-validity パラメータを追加します。たとえば、次のコマンドを実行すると、キーの有効期間を 1 年に延長できます。

  1. $ keytool -genkeypair -alias config-server -keyalg RSA \
  2. -dname "CN=zhaiyongchao、OU=会社、O=組織、L=市、ST=省、C=中国" \
  3. -キーパス 222222 \
  4. -keystore config-server.keystore \
  5. -ストアパス 111111 \
  6. -有効期間 365 \

上記の 3 つのコマンド生成方法では、最終的にコマンドの現在の実行ディレクトリに config-server.keystore ファイルが生成されます。次に、現在のユーザー ディレクトリなど、構成センターのファイル システム内のどこかに保存し、関連する構成情報を構成センターに追加する必要があります。

  1. 暗号化します。 key -store.location=file://${ user .home}/config-server.keystore
  2. encrypt.key - store.alias=config-server
  3. 暗号化します。キーストア。パスワード=111111
  4. 暗号化キー-store.secret=222222

config-server.keystore を構成センターの src/main/resource ディレクトリに配置すると、次のように直接構成することもできます: encrypt.key-store.location=config-server.keystore。また、非対称暗号化の構成情報も環境変数を通じて構成できます。これらに対応する具体的な変数名は次のとおりです。

  1. 暗号化キーストアの場所
  2. 暗号化キーストアのエイリアス
  3. 暗号化キーストアパスワード
  4. 暗号化キーストアシークレット

環境変数を通じてキーストア関連情報を構成すると、セキュリティを強化できるため、構成センターの環境変数に機密性の高いパスワード情報を保存することが適切です。

【この記事は51CTOコラムニスト「Zhai Yongchao」によるオリジナル記事です。転載の許可を得るには、51CTO を通じて著者に連絡してください。

この著者の他の記事を読むにはここをクリックしてください

<<:  テンセントクラウド、すべてのコア製品の値下げを発表、数十のAIアプリケーションサービスに無料アクセス

>>:  Alibaba Cloud の Ma Jin 氏: DIY クラウドは過去のもの。パブリッククラウドアーキテクチャがエンタープライズレベルのクラウドプラットフォームの新たな標準となる

推薦する

SEO 診断と実装計画ではどのような側面を分析する必要がありますか?

みなさんこんにちは、私はワーシオンです。今日は、SEO診断計画とSEO実施計画の書き方、そして重点を...

LeTao.comが美人社員に売却された?公式サイトのドメイン名は正常にアクセスできます

eName.cnは4月24日、昨日のFantong.comの崩壊に続き、今日、靴専門B2CサイトLe...

開封されていないメールはいくつありますか? メールはどのようにしてユーザーを「遠ざけ」ていますか?

翻訳者注:マーケティングメールは私たちにとっては珍しいものではありません。おそらくあなたのメールボッ...

#ウェブサイトホスティング# webhostinghub-3.3% オフ/仮想ホスト/cpanel パネル/ロサンゼルス

2001年設立のインモーションホスティング傘下の仮想ホスティングブランド、Webhostinghub...

間違った道を進まないように:YiXinは自らを再検討する必要がある

「すべては現実から始まるべきだ」「理論は実践と統合されるべきだ」「実践こそが真実をテストする唯一の方...

新しい百度アルゴリズムによる外部リンク構築アイデアの分析

Baidu アルゴリズムは頻繁に更新されますが、これらの変更は基本的に、不正な SEO 最適化方法を...

3つの主要な目標をガイドとしてウェブサイトコンテンツマーケティングを推進する

多くの友人は、ウェブサイトのコンテンツについて話すとき、独創性について話すでしょう。これは、ウェブサ...

2019年ファン経済レポート: セレブやビッグVはもはやボリュームをもたらさない!

(1)ユーザーの約60%は、容姿や才能に恵まれた一般人をフォローすることを好み、これは有名人の3倍で...

クラウド サービスから業界クラウドまで、Trusted Cloud はどのようにしてクラウド コンピューティングの健全な標準を構築するのでしょうか?

1月25日、中国情報通信研究院は北京で第11回トラステッドクラウド記者会見を開催し、トラステッドクラ...

サイトの内外両方に焦点を当ててSEOの二重の保険を作りましょう

ウェブサイトのランキングは、オンサイトとオフサイトの 2 つの側面によって決まります。多くの人は、S...

外部リンクをウェブサイトの永遠の電波にしましょう

最適化に携わる人なら、コンテンツは王様、外部リンクは女王という格言を知っているでしょう。これは外部リ...

SEO担当者の不必要な心配

SEO 担当者は、現在のパフォーマンスを維持するために毎日多くの指標を考慮しますが、あまり心配する必...

中国におけるアマゾンのジレンマ:技術的優位性は価格競争やプロモーションに勝てない

天猫のダブル11プロモーションの取引高は191億元に達し、11月13日には価格戦争に強いJD.com...

企業サイトのオンサイトとオフサイトの最適化において注意すべき詳細の分析

ご存知のとおり、企業ウェブサイトの最適化プロセスでは、いくつかの主要な最適化原則に注意を払う必要があ...