マイクロサービス アーキテクチャでは、通常、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 クラウドは過去のもの。パブリッククラウドアーキテクチャがエンタープライズレベルのクラウドプラットフォームの新たな標準となる
みなさんこんにちは。私は徐子宇です。私はGuopingのブログで科学的なSEOの概念について多くを学...
dedipath は、ロサンゼルスとニューヨークのデータセンターのオプションを備えた 12.12 プ...
Pacificrack の最新のプロモーションメールには、Windows シリーズの VPS が 6...
5月29日、ミルクティーシスターの張澤田は、Xiaoiceをインターンシップのプロダクトマネージャー...
ニュース報道の過程でよく使われる「事実を語る」報道手法とは、記者がニュース報道の事実を慎重に選択し、...
最近、インターネットに関する考え方が渦巻いています。大手企業から草の根レベルまで、誰もがインターネッ...
企業にとって投資収益率の高いWeiboプロジェクトを作成するにはどうすればよいでしょうか。要約すると...
今回はMADCINカンファレンスに出席するために再び厦門に戻り、有名な旅行ウェブサイトを通じてホテル...
extravm は現在、VPS プロモーションを実施しており、東京、日本、シンガポール、米国 (ロサ...
暑い日はカーテンを閉めて家の中にこもり、猫たちが楽しそうに遊ぶ様子を見ながらブログを書いています。こ...
2001 年からカナダのケベック州で地元民にサービスを提供してきたと主張する Hostabulous...
パンケーキにも独自のインターネットの夢があります。 20平方メートル未満の面積のパンケーキショップが...
1. キャッシュの概要キャッシュは分散システムの重要なコンポーネントであり、主に高同時実行性およびビ...
IT 業界の発展と変化に伴い、IT アプリケーションの基盤となるサポートも、メインフレーム、ミニコン...
[[322423]]面接中に JVM に関連する質問をされると、多くの面接者は機械的に暗記しており、...