マイクロサービス アーキテクチャでは、通常、DevOps 組織方式を採用して、チーム間のコミュニケーションによって生じる膨大なコストを削減し、マイクロサービス アプリケーションの配信機能を加速します。これは、もともと運用保守チームが管理していたオンライン情報が、マイクロサービスが属する組織のメンバーによって保守されることを意味し、データベース アカウントやパスワードなどの大量の機密情報が含まれます。当然のことながら、マイクロサービス アプリケーションの構成ファイルに機密情報をプレーンテキストで直接保存することは非常に危険です。この問題に対処するために、Spring Cloud Config は、構成ファイル内の情報セキュリティを保護するためにプロパティを暗号化および復号化する機能を提供します。
たとえば、次の例をご覧ください。
Spring Cloud Config では、プロパティ値の前に {cipher} プレフィックスを使用して、コンテンツを暗号化された値としてマークします。マイクロサービス クライアントが構成を読み込むと、構成センターは {cipher} プレフィックスを持つ値を自動的に復号化します。この仕組みを実装することで、運用保守チームは機密情報の漏洩を心配することなく、オンライン情報の暗号化されたリソースをマイクロサービス チームに安全に提供できるようになります。次に、設定センターでこの機能を使用する方法を詳しく紹介します。 前提条件 Spring Cloud Config の暗号化・復号化機能を利用する場合、注意しなければならない前提があります。この機能を有効にするには、構成センターの実行環境に無制限強度の JCE バージョン (無制限強度 Java Cryptography Extension) をインストールする必要があります。 JCE 関数は JRE に含まれていますが、使用されるデフォルトのバージョンは長さが制限されたバージョンです。 Oracle の公式 Web サイトからダウンロードできます。圧縮パッケージです。解凍すると、次の 3 つのファイルが表示されます。
local_policy.jar ファイルと US_export_policy.jar ファイルを $JAVA_HOME/jre/lib/security ディレクトリにコピーし、元のデフォルトの内容を上書きする必要があります。この時点で、暗号化と復号化の準備は完了です。 関連エンドポイント JCE のインストールが完了したら、構成センターを起動してみてください。コンソールには、次のような構成センター固有のエンドポイントが出力されます。
GET リクエストを介して /encrypt/status エンドポイントにアクセスしようとすると、次の結果が返されます。
この応答は、対応するキーが暗号化サービスに設定されていないため、現在の構成センターの暗号化機能を使用できないことを示します。 設定キー キー情報 (対称キー) は、encrypt.key プロパティを使用して構成ファイル内で直接指定できます。次に例を示します。
上記の構成情報を追加した後、構成センターを再起動し、/encrypt/status エンドポイントに再度アクセスします。次のコンテンツを取得します。
この時点で、構成センターの暗号化機能と復号化機能が使用できるようになります。暗号化機能と復号化機能を実行するには、/encrypt エンドポイントと /decrypt エンドポイントにアクセスしてみるとよいでしょう。両方のエンドポイントは POST リクエストであり、暗号化と復号化の情報はリクエスト本体を介して送信する必要があることに注意してください。たとえば、curl コマンドを使用すると、次のように暗号化エンドポイントと復号化エンドポイントを呼び出すことができます。
ここでは、encrypt.key パラメータを設定して、キー実装で対称暗号化を使用することを指定します。この方法は実装が比較的簡単で、1 つのパラメータを設定するだけで済みます。さらに、環境変数 ENCRYPT_KEY を使用して、キー情報を外部化するための設定を行うこともできます。 非対称暗号化 Spring Cloud Config の構成センターでは、対称暗号化だけでなく、非対称暗号化 (RSA キー ペアなど) も使用できます。非対称暗号化のキー生成と構成は比較的複雑ですが、セキュリティは高くなります。次に、非対称暗号化の使用方法を詳しく見てみましょう。 まず、keytool ツールを使用してキー ペアを生成する必要があります。 keytool は、JDK のキーおよび証明書管理ツールです。これにより、ユーザーは、自己認証 (ユーザーが他のユーザー/サービスに対して自分自身を認証する) (デジタル署名経由) またはデータ整合性および認証サービスで使用するために、独自の公開/秘密キー ペアと関連証明書を管理できるようになります。このツールは JDK 1.4 以降のバージョンに含まれており、その場所は %JAVA_HOME%\bin\keytool.exe です。 キーを生成するための具体的なコマンドは次のとおりです。
さらに、これらのプロンプトを段階的に入力したくない場合は、-dname を使用して直接指定することができ、キーストア パスワードとキー パスワードは -storepass と -keypass を使用して直接指定できます。したがって、次のコマンドを使用して、上記のコマンドと同じキーストアを直接作成できます。
デフォルトでは、上記のコマンドで作成されたキーの有効期間は 90 日間のみです。有効期間を調整する場合は、-validity パラメータを追加します。たとえば、次のコマンドを実行すると、キーの有効期間を 1 年に延長できます。
上記の 3 つのコマンド生成方法では、最終的にコマンドの現在の実行ディレクトリに config-server.keystore ファイルが生成されます。次に、現在のユーザー ディレクトリなど、構成センターのファイル システム内のどこかに保存し、関連する構成情報を構成センターに追加する必要があります。
config-server.keystore を構成センターの src/main/resource ディレクトリに配置すると、次のように直接構成することもできます: encrypt.key-store.location=config-server.keystore。また、非対称暗号化の構成情報も環境変数を通じて構成できます。これらに対応する具体的な変数名は次のとおりです。
環境変数を通じてキーストア関連情報を構成すると、セキュリティを強化できるため、構成センターの環境変数に機密性の高いパスワード情報を保存することが適切です。 【この記事は51CTOコラムニスト「Zhai Yongchao」によるオリジナル記事です。転載の許可を得るには、51CTO を通じて著者に連絡してください。 この著者の他の記事を読むにはここをクリックしてください |
<<: テンセントクラウド、すべてのコア製品の値下げを発表、数十のAIアプリケーションサービスに無料アクセス
>>: Alibaba Cloud の Ma Jin 氏: DIY クラウドは過去のもの。パブリッククラウドアーキテクチャがエンタープライズレベルのクラウドプラットフォームの新たな標準となる
1. 思考を刺激する質問少し前に、同僚と小さな要件について話し合っていたとき、「アクション」と「ステ...
HostCatでは、高級で上品なものから、低級で低俗なものまで、多くのVPSを紹介してきました。とに...
[51CTO.com からのオリジナル記事] 長年の開発を経て、オープンソース ソフトウェアはソフト...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWebホスティングとは何...
6月2日、「新ベアメタル新インフラ下における堅牢なFT+新IaaS」をテーマにした2020 ZSta...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...
現在、インターネット技術の台頭により、あらゆる分野でオンラインマーケティングが実施され、SEO技術も...
百度の年次総会で、ロビン・リー氏は2012年の百度の業績を総括し、2012年は百度にとって最も困難な...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています検索エンジ...
ご存知のとおり、映画サイトを立ち上げるには多額の費用がかかります。ローカル映画ライブラリを構築する場...
ウェブサイトのランキングを上げるために必要な方法として、SEOはますます多くのウェブマスターに求めら...
Baidu アルゴリズムの継続的な調整により、多くの個人ウェブマスターは、正しいウェブサイト最適化方...
SEOが普及しているインターネット時代では、ウェブサイトのSEOはすべてのウェブサイトにとって必須の...
少し前に、BSGフォーラムでBaidu Search R&D部門の「インターネットページの価...
ドメイン名の登録は長い間実施されてきましたが、今この話題は再び注目を集め始めています。ドメイン名が登...