序文
それを使用できるようにするには、まず理解する必要があります。私は絵を描くのが面倒ですので、オンラインの大物から絵を描くことができます。 SpringCloudの構造は、図に示されているとおりです。
マイクロサービスアーキテクチャのアプリケーションシナリオ:
1。システム分割、複数のサブシステム
2.各サブシステムは複数のアプリケーションを展開でき、アプリケーション間のロードバランシングが実装されています
3.サービス登録センターが必要であり、すべてのサービスが登録センターに登録されています。負荷分散は、登録センターに登録されているサービス用の特定の戦略を使用することによっても達成されます。
4.すべてのクライアントは、同じゲートウェイアドレスを介してバックエンドサービスにアクセスします。ルーティング構成を介して、ゲートウェイはどのサービスがURL要求を処理するかを決定します。リクエストをサービスに転送するときには、ロードバランシングも使用されます。
5.サービスも互いにアクセスする必要がある場合があります。たとえば、ユーザーモジュールがあり、一部のサービスを処理する際にユーザーサービスのユーザーデータを取得するために他のサービスが必要です。
6.サービスのいずれかの問題のためにシステム全体が麻痺するのを防ぐために、サービスコール中のタイムアウトとエラーをタイムリーに処理するには、回路ブレーカーが必要です。
7.各サービスコールなどに費やす時間を監視するには、監視機能も必要です。
導入
マイクロサービスアーキテクチャでは、通常、DevOps組織メソッドを採用して、マイクロサービスアプリケーションの配信機能を加速するためにチーム間の通信によって引き起こされる膨大なコストを削減します。これにより、元々はマイクロサービス組織のメンバーに引き渡されたオペレーションおよびメンテナンスチームによって元々管理され、データベースアカウントやパスワードなどの大量の機密情報が含まれます。明らかに、Microserviceアプリケーションの構成ファイルに、機密情報をプレーンテキストに直接保存する場合、非常に危険です。この問題に応じて、Spring Cloud Configは、構成ファイルの情報を保護するためにプロパティを暗号化および復号化する機能を提供します。たとえば、次の例:
spring.datasource.username = didispring.datasource.password = {cipher} dba6505baa81d78bd087999999d8d4429de499bd4c2053c05f029e7cfbf14363636363636363695bSpring Cloud Configでは、属性値の前に{Cipher}プレフィックスを使用することにより、コンテンツが暗号化された値としてマークされます。マイクロサービスクライアントが構成をロードすると、構成センターは{cipher}プレフィックスで値を自動的に復号化します。このメカニズムの実装を通じて、運用およびメンテナンスチームは、これらの機密情報の漏れを心配することなく、オンライン情報の暗号化されたリソースをマイクロサービスチームに安全に提供できます。 Configuration Centerでこの関数の使用方法を紹介しましょう。
使用のための前提条件
Spring Cloud Configの暗号化と復号化関数を使用する場合、注意する必要がある必要な前提条件があります。この機能を有効にするには、構成センターのランタイムに無制限のJCEバージョン(無制限の強度Java暗号拡張)をインストールする必要があります。 JCE関数はJREで利用可能ですが、長さ制限付きのデフォルトバージョンが使用されます。 Oracleの公式Webサイトからダウンロードできます。圧縮パッケージです。減圧後、次の3つのファイルを見ることができます。
readme.txtlocal_policy.jarus_export_policy.jar
local_policy.jarおよびus_export_policy.jarファイルを$ java_home/jre/lib/securityディレクトリにコピーして、元のデフォルトコンテンツを上書きする必要があります。この時点で、暗号化と復号化の準備が完了します。
関連エンドポイント
JCEのインストールを完了したら、構成センターを開始することができます。コンソールでは、一部の構成センター固有のエンドポイントが出力され、主に以下が含まれます。
Get Requestを使用して /暗号化 /ステータスエンドポイントにアクセスしてみることができます。次のようになります。
{"description": "暗号化サービスのためにキーがインストールされていません"、 "status": "no_key"}この返品は、暗号化サービスに対応するキーが構成されていないため、現在の構成センターの暗号化関数をまだ使用できないことを示しています。
構成キー
Encrypt.Keyプロパティを介して、構成ファイルのキー情報(対称キー)を直接指定できます。
encrypt.key = didispace
上記の構成情報を追加した後、構成センターを再起動し、 /暗号化 /ステータスエンドポイントにアクセスします。次のコンテンツを取得します。
{"status": "ok"}この時点で、構成センターの暗号化と復号化関数を使用する準備ができています。暗号化と復号化機能のために /暗号化および /復号化エンドポイントにアクセスしようとすることもできます。両方のエンドポイントはPOSTリクエストであり、暗号化と復号化情報をリクエスト本体から送信する必要があることに注意してください。たとえば、Curlコマンドを例にとると、次の方法で暗号化と復号化エンドポイントを呼び出すことができます。
$ curl localhost:7001/encrypt -d didispace3c70a809bfa24ab888bcb5e1df51cb9e4d4b8fec88301eb7a181777777f1769c849ae9ae9c9f9400c920480480be2c994060607ae28c7ae28c7 LocalHost:7001/Decrypt -D 3C70A809BFA24AB88BCB55E1DF51CB9E4DD4B8FEC8301EB7A181777F1769C849AE9C9F29400C920480BE2C99406AE28C7DIDISPACE
ここでは、対称暗号化を使用して、encrypt.keyパラメーターを構成することにより、キーの実装方法を指定します。この方法は、実装が比較的簡単で、1つのパラメーターのみが必要です。さらに、環境変数のencrypt_keyを使用して、キー情報を外部に保存できるように構成することもできます。
非対称暗号化
Spring Cloud Configの構成センターは、対称暗号化だけでなく、非対称暗号化(RSAキーペアなど)も使用できます。非対称暗号化の重要な生成と構成は比較的複雑ですが、セキュリティが高くなります。以下に、非対称暗号化の使用方法を詳細に紹介します。
まず、KeyToolツールを介してキーペアを生成する必要があります。 KeyToolは、JDKのキーおよび証明書管理ツールです。ユーザーは、(デジタル署名を介して)自己認証(ユーザーは他のユーザー/サービスに認証)またはデータの整合性と認証サービスの独自のパブリック/プライベートキーペアと関連する証明書を管理できます。このツールは、JDK 1.4の後のバージョンに含まれており、その場所は次のとおりです。
キーを生成するための特定のコマンドは次のとおりです。
$ keytool -genkeypair -alias config -server -keyalg rsa -keystore config -server.keystore
キーストアパスワードを入力してください:
もう一度新しいパスワードを入力してください:
あなたの姓と姓は何ですか?
[不明]:Zhaiyongchao
あなたの組織ユニット名は何ですか?
[不明]:会社
あなたの組織名は何ですか?
[不明]:組織
あなたの街や地域の名前は何ですか?
[不明]:都市
あなたの州/市/自律地域の名前は何ですか?
[不明]:州
このユニットの2文字の国コードは何ですか?
[不明]:中国
Cn = Zhaiyongchao、ou = company、o = guranisty、l = city、st = stavince、c = china recordですか?
[いいえ]:Y<config-server>のキーパスワードを入力します
(パスワードがキーストアと同じ場合、Enterを押します):
もう一度新しいパスワードを入力してください:
さらに、これらの迅速な情報を段階的に入力したくない場合は、-dnameを使用して直接指定できますが、キーストアパスワードとキーパスワードは-storepassと-keypassを使用して直接指定できます。したがって、次のコマンドを使用して、上記のコマンドと同じキーストアを直接作成できます。
$ keytool -genkeypair -alias config -server -keyalg rsa / -dname "cn = zhaiyongchao、ou = company、o = organization、l = city、st = province、c = china" / keypass 2222222 / keystore config -server.keystore / -storepass 1111111 /
デフォルトでは、上記のコマンドによって作成されたキーは、90日間のみ有効です。有効期間を調整する場合は、有効性パラメーターを追加することで実行できます。たとえば、次のコマンドを介して、キーの有効期間を1年に延長できます。
$ keytool -genkeypair -alias config -server -keyalg rsa / -dname "cn = zhaiyongchao、ou = company、o = organization、l = city、st = province、c = china" / keypass 2222222 / keystore config -server.keystore
上記の3つのコマンド生成メソッドは、最終的にコマンドの現在の実行ディレクトリにconfig-server.keystoreファイルを生成します。次に、構成センターのファイルシステムの場所に保存する必要があります。たとえば、現在のユーザーディレクトリに配置し、関連する構成情報を構成センターに追加する必要があります。
encrypt.key-store.location = file:// $ {user.home} /config-server.keystoreencrypt.key-store.alias=config-serverencrypt.key-store.key-store.key-store.password=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111-ceret = 2222222config-server.keystoreを構成センターのSRC/Main/Resource Directoryに配置すると、次のように直接構成することもできます。Encrypt.key-store.location = config-server.keystore。さらに、非対称暗号化の構成情報は、環境変数を介して構成することもでき、対応する特定の変数名は次のとおりです。
encrypt_key_store_locationencrypt_key_store_aliasencrypt_key_store_passwordencrypt_key_store_secret
環境変数を介してキーストア関連の情報を構成することは、より良いセキュリティを実現することができるため、構成センターの環境変数に機密性の高いパスワード情報を保存することをお勧めします。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。