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 クラウドは過去のもの。パブリッククラウドアーキテクチャがエンタープライズレベルのクラウドプラットフォームの新たな標準となる

推薦する

フォーラムの外部リンクの2つの利点と1つの欠点について簡単に説明します。

ほとんどのウェブマスターは、フォーラムの外部リンクが強力であるかどうか、またフォーラムの外部リンクに...

優れた Kubernetes ツールの完全ガイド

翻訳者 |李睿レビュー |チョンロウ Kubernetes は、コンテナ化されたアプリケーションのオ...

dedione - Shark データセンター VPS/3 USD/KVM/512M メモリ/500g トラフィック

新しい加盟店の紹介: dedione は現在主にシャークロサンゼルスデータセンターの VPS、KVM...

小紅書のアルゴリズムの欠陥は解決不可能

12月5日、CCTVニュースは、小紅書プラットフォームには未成年者向けの性的に挑発的なコンテンツが含...

8つの実際のDockerシナリオ

[編集者注] Flux 7 では、簡素化された構成、コード パイプライン管理、開発効率の向上、分離さ...

ホスティングは歴史と関連するトレンドの舞台から正式に消えた

hostigation.netは本日をもって正式に歴史の舞台から退き、存在しなくなりました。ドメイン...

dogyun: 特別価格の香港 VPS、168 元/年、1G メモリ/1 コア/10g SSD/500g トラフィック/20M 帯域幅

Dogyun は現在、香港データセンターの VPS で大々的なプロモーションを行っており、商品の大量...

chicagovps - 夏季限定VPS/超低価格専用サーバー

おなじみの chicagovps の夏休みプロモーションがやって来ました: 月額 30 ドルからとい...

Baidu がモバイル検索ランディング ページ エクスペリエンス ホワイト ペーパー 5.0 を正式にリリース

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスBaiduはBaidu ...

Eコマースライブストリーミング業界の予測とロジック!

Happy Beansを使って13億4100万という数字を計算したが、意味がわからなかった。別の換算...

Shi Xiaolong: 初心者が入札を通じてお金を稼ぐ方法をすぐに学ぶにはどうすればいいでしょうか?

入札操作は自慢ではなく、あなた自身の実践経験に依存します。春節前にA5に「ウェブマスターが損をする4...

過去の王朝の歌を流さないでください。タイムリーな話題を使ってユーザーを獲得してください

検索エンジンのウェブページの価値判断基準について、百度研究開発部のブログ記事「インターネットページの...

GOMXカンファレンスではオンラインマーケティングの新たなトレンドを取り上げます。検索マーケティングが王者です。

2013年5月29日〜30日、無錫で2013 GOMXグローバルインターネットマーケティングカンファ...

たった3ステップでBaidu百科事典の外部リンクを簡単に構築できます

百度製品の比重は常に非常に高いが、百度の三大製品である百科、知道、鉄破については、百度知道と鉄破が外...