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は手段を目標として、プロセスを結果として扱うべきではない

みなさんこんにちは。私は徐子宇です。私はGuopingのブログで科学的なSEOの概念について多くを学...

#12.12# dedipath: 月額 12 ドル、4GB メモリ/250GB ハードディスク/5IP/1Gbps 無制限トラフィック

dedipath は、ロサンゼルスとニューヨークのデータセンターのオプションを備えた 12.12 プ...

XiaoIceの続報:マイクロソフトはテンセントに対抗するため他のインターネット大手と提携する可能性がある

5月29日、ミルクティーシスターの張澤田は、Xiaoiceをインターンシップのプロダクトマネージャー...

事実に基づいた素晴らしいマーケティング:老舗の茶農家がタオバオでビデオライブストリーミングを有効活用

ニュース報道の過程でよく使われる「事実を語る」報道手法とは、記者がニュース報道の事実を慎重に選択し、...

インターネットは何を考えているのか?実話から語ろう

最近、インターネットに関する考え方が渦巻いています。大手企業から草の根レベルまで、誰もがインターネッ...

微博マーケティング:「90点」ブランドの微博運営における6つのポイント

企業にとって投資収益率の高いWeiboプロジェクトを作成するにはどうすればよいでしょうか。要約すると...

遠方からのお客様、ぜひご宿泊ください。ウェブサイトのユーザー増加システムは真剣に受け止めなければなりません。

今回はMADCINカンファレンスに出席するために再び厦門に戻り、有名な旅行ウェブサイトを通じてホテル...

extravm: 30% オフ、月額 4.25 ドル、日本/シンガポール/ロサンゼルス、10Gbps 帯域幅、無制限トラフィック、100G 防御内蔵

extravm は現在、VPS プロモーションを実施しており、東京、日本、シンガポール、米国 (ロサ...

ウェブサイトのユーザーエクスペリエンス: ユーザーの成功した操作に対して肯定的なフィードバックを提供する

暑い日はカーテンを閉めて家の中にこもり、猫たちが楽しそうに遊ぶ様子を見ながらブログを書いています。こ...

hostabulous-$5/Kvm/512m メモリ/30g ハードディスク/1T トラフィック/2*1G ポート/フロリダ

2001 年からカナダのケベック州で地元民にサービスを提供してきたと主張する Hostabulous...

インターネットのためのパンケーキの夢

パンケーキにも独自のインターネットの夢があります。 20平方メートル未満の面積のパンケーキショップが...

アリババから第三層企業まで、大規模分散システムにおけるキャッシュの応用

1. キャッシュの概要キャッシュは分散システムの重要なコンポーネントであり、主に高同時実行性およびビ...

エンタープライズレベルのコンテナクラウドプラットフォームの実装と実践

IT 業界の発展と変化に伴い、IT アプリケーションの基盤となるサポートも、メインフレーム、ミニコン...

1+2のプロセスを理解すれば、Java仮想マシンを理解できる

[[322423]]面接中に JVM に関連する質問をされると、多くの面接者は機械的に暗記しており、...