머리말
그것을 사용할 수 있으려면 먼저 이해해야합니다. 나는 사진을 그리기에는 너무 게으르기 때문에 온라인 큰 사람들의 사진을 그릴 수 있습니다. SpringCloud의 구조는 그림과 같습니다.
마이크로 서비스 아키텍처의 응용 시나리오 :
1. 시스템 분할, 다중 서브 시스템
2. 각 서브 시스템은 여러 응용 프로그램을 배포 할 수 있으며 응용 프로그램간에로드 밸런싱이 구현됩니다.
3. 서비스 등록 센터가 필요하며 모든 서비스는 등록 센터에 등록됩니다. 로드 밸런싱은 등록 센터에 등록 된 서비스에 대한 특정 전략을 사용하여 달성됩니다.
4. 모든 클라이언트는 동일한 게이트웨이 주소를 통해 백엔드 서비스에 액세스합니다. 라우팅 구성을 통해 게이트웨이는 URL 요청을 처리하는 서비스를 결정합니다. 로드 밸런싱은 서비스에 요청을 전달할 때도 사용됩니다.
5. 때때로 서비스도 서로 접근해야합니다. 예를 들어, 사용자 모듈이 있으며 일부 서비스를 처리 할 때 다른 서비스에는 사용자 서비스의 사용자 데이터를 얻어야합니다.
6. 서비스 호출 중에 시간 초과 및 오류를 처리하려면 회로 차단기가 필요합니다.
7. 각 서비스 호출에 소요되는 시간을 모니터링하려면 모니터링 기능도 필요합니다.
소개
마이크로 서비스 아키텍처에서 우리는 일반적으로 DevOps 조직 방법을 채택하여 팀 간의 의사 소통으로 인한 막대한 비용을 줄이기 위해 마이크로 서비스 응용 프로그램의 전달 기능을 가속화합니다. 이로 인해 운영 및 유지 보수 팀이 원래 제어하여 MicroService 조직의 구성원에게 양도되어 데이터베이스 계정 및 비밀번호와 같은 많은 민감한 정보가 포함됩니다. 분명히, MicroService 응용 프로그램의 구성 파일에 민감한 정보를 일반 텍스트로 직접 저장하는 경우 매우 위험합니다. 이 문제에 대한 응답으로 Spring Cloud Config는 구성 파일의 정보를 보호하기 위해 속성을 암호화 및 해독하는 기능을 제공합니다. 예를 들어, 다음 예는 다음과 같습니다.
spring.datasource.username = didispring.datasource.password = {cipher} dba6505baa81d78bd08799d8d4429de499bd4c2053c05f029e7cfbf143695f5b스프링 클라우드 구성에서는 속성 값 앞에서 {cipher} 접두사를 사용하여 컨텐츠가 암호화 된 값으로 표시됩니다. 마이크로 서비스 클라이언트가 구성을로드하면 구성 센터는 {cipher} 접두사와 값을 자동으로 해독합니다. 이 메커니즘의 구현을 통해 운영 및 유지 보수 팀은 이러한 민감한 정보의 유출에 대해 걱정하지 않고 온라인 정보의 암호화 된 리소스를 마이크로 서비스 팀에 안전하게 제공 할 수 있습니다. 구성 센터 에서이 기능을 사용하는 방법을 소개하겠습니다.
사용을위한 전제 조건
Spring Cloud Config의 암호화 및 암호 해독 기능을 사용하는 경우주의를 기울여야 할 필요한 전제 조건이 있습니다. 이 기능을 활성화하려면 구성 센터의 런타임에 무제한 JCE 버전 (무제한 강도 Java Cryptography Extension)을 설치해야합니다. JCE 기능은 JRE에서 사용할 수 있지만 길이 제한이있는 기본 버전이 사용됩니다. Oracle의 공식 웹 사이트에서 다운로드 할 수 있습니다. 압축 패키지입니다. 감압 후 다음 세 가지 파일을 볼 수 있습니다.
readme.txtlocal_policy.jarus_export_policy.jar
Local_policy.jar 및 us_export_policy.jar 파일을 $ java_home/jre/lib/security 디렉토리에 복사하여 원래 기본 컨텐츠를 덮어 씁니다. 이 시점에서 암호화 및 암호 해독 준비가 완료됩니다.
관련 엔드 포인트
JCE 설치를 완료 한 후 구성 센터를 시작할 수 있습니다. 콘솔에서 일부 구성 센터 별 엔드 포인트는 주로 다음을 포함합니다.
GET 요청을 통해 /encrypt /status endpoint에 액세스하려고 시도 할 수 있으며 다음을 얻을 수 있습니다.
{ "설명": "암호화 서비스를 위해 키가 설치되지 않았다", "상태": "no_key"}이 반환은 해당 키가 암호화 서비스에 대해 구성되지 않기 때문에 현재 구성 센터의 암호화 기능을 아직 사용할 수 없음을 나타냅니다.
구성 키
예를 들어 Encrypt.key 속성을 통해 구성 파일의 키 정보 (Symmetry Key)를 직접 지정할 수 있습니다.
Encrypt.key = didispace
위 구성 정보를 추가 한 후 구성 센터를 다시 시작하고 /암호화 /상태 엔드 포인트에 액세스하십시오. 우리는 다음과 같은 내용을 얻을 것입니다.
{ "상태": "OK"}현재 구성 센터의 암호화 및 암호 해독 기능을 사용할 준비가되었습니다. 암호화 및 암호 해독 기능에 대한 /암호화 및 /해독 엔드 포인트에 액세스하려고 시도 할 수도 있습니다. 두 엔드 포인트는 모두 후 요청이며 암호화 및 암호 해독 정보는 요청 본문을 통해 전송되어야합니다. 예를 들어, Curl 명령을 예로 들어 암호화 및 암호 해독 엔드 포인트를 다음과 같은 방식으로 호출 할 수 있습니다.
$ Curl LocalHost : 7001/Encrypt -D DidisPace3C70A809BFA24AB88BCB5E1DF51CB9E4DD4B8FEC88301EB7A18177F1769C849AE99C9F29400BE2C99406AE28C7 $ CURL LocalHost : 7001/Decrypt -D 3C70A809BFA24AB88BCB5E1DF51CB9E4DD4B8FEC88301EB7A18177F1769C849AE9C9F29400C920480BE2C9406AE28C7 DIDIDIDISPACE
여기서는 대칭 암호화를 사용하여 Encrypt.key 매개 변수를 구성하여 키의 구현 방법을 지정합니다. 이 방법은 구현하기가 비교적 간단하며 하나의 매개 변수 만 필요합니다. 또한 환경 변수 Encrypt_key를 사용하여 주요 정보를 외부로 저장할 수 있도록 구성 할 수 있습니다.
비대칭 암호화
Spring Cloud Configuration Configuration Center는 대칭 암호화뿐만 아니라 비대칭 암호화 (예 : RSA 키 쌍)를 사용할 수 있습니다. 비대칭 암호화의 주요 생성 및 구성은 비교적 복잡하지만 보안이 높습니다. 아래에서 비대칭 암호화를 사용하는 방법을 자세히 소개하겠습니다.
먼저 KeyTool 도구를 통해 키 쌍을 생성해야합니다. KeyTool은 JDK의 키 및 인증서 관리 도구입니다. 이를 통해 사용자는 (디지털 서명을 통해) 자체 권한을 부여한 자체 공개/개인 키 쌍 및 관련 인증서를 관리 할 수 있습니다 (사용자는 다른 사용자/서비스에 자체적으로 인증) 또는 데이터 무결성 및 인증 서비스를 관리 할 수 있습니다. 이 도구는 JDK 1.4 이후 버전에 포함되어 있으며 위치는 다음과 같습니다. %java_home %/bin/keytool.exe.
키를 생성하기위한 특정 명령은 다음과 같습니다.
$ keyTool -genkeypair -Alias config -server -keyalg rsa -keystore config -server.keystore
KeyStore 비밀번호를 입력하십시오.
새 비밀번호를 다시 입력하십시오.
당신의 첫 이름과 성은 무엇입니까?
[알 수 없음] : Zhaiyongchao
조직 단위 이름은 무엇입니까?
[알 수 없음] : 회사
조직 이름은 무엇입니까?
[알 수없는] : 조직
당신의 도시 나 지역의 이름은 무엇입니까?
[알 수 없음] : 도시
귀하의 지방/도시/자치 지역의 이름은 무엇입니까?
[알 수없는] : 지방
이 장치의 2 글자 국가 코드는 무엇입니까?
[알 수없는] : 중국
CN = Zhaiyongchao, OU = Company, O = 조직, L = City, ST = Province, C = China Arcid입니까?
[아니요] : y<config-server>의 키 비밀번호를 입력하십시오
(비밀번호가 KeyStore와 동일하면 Enter를 누릅니다) :
새 비밀번호를 다시 입력하십시오.
또한 해당 신속한 정보를 단계별로 입력하지 않으려면 -dname을 사용하여 직접 지정할 수 있으며 KeyStore 비밀번호와 키 비밀번호는 -storepass 및 -keypass를 사용하여 직접 지정할 수 있습니다. 따라서 다음 명령을 통해 위 명령과 동일한 키 스토어를 직접 만들 수 있습니다.
$ keyTool -genkeypair -Alias config -server -keyalg rsa / -dname "cn = Zhaiyongchao, ou = company, o = 조직, l = City, ST = Province, C = China" / -Keyypass 22222 / -keystore supig -server.keystore / -storepass 11111111 /
기본적으로 위 명령에 의해 생성 된 키는 90 일 동안 만 유효합니다. 유효성 기간을 조정하려면 -validity 매개 변수를 추가하여 수행 할 수 있습니다. 예를 들어, 다음 명령을 통해 키의 유효 기간을 1 년으로 확장 할 수 있습니다.
$ keyTool -genkeypair -Alias config -server -keyalg rsa / -dname "cn = Zhaiyongchao, ou = company, o = 조직, l = City, ST = Province, C = China" / -Keyypass 22222 / -keystore supig -server.keystore / -storepass 11111111111111111111111111111111111111111111111111111111111 초까지
위의 세 가지 명령 생성 메소드는 결국 명령의 현재 실행 디렉토리에서 config-server.keystore 파일을 생성합니다. 다음으로 구성 센터의 파일 시스템의 위치에 저장해야합니다. 예를 들어 현재 사용자 디렉토리에 배치 한 다음 구성 센터에 관련 구성 정보를 추가하십시오.
Encrypt.key-store.location = file : // $ {user.home}/config-server.keystoreencrypt.key-store.alias=config-serverencrypt.key-s-s-so- 스토어config-server.keystore를 구성 센터의 SRC/Main/Resource 디렉토리에 배치하면 다음과 같이 직접 구성 할 수도 있습니다. 또한 비대칭 암호화의 구성 정보는 환경 변수를 통해 구성 할 수 있으며 해당 특정 변수 이름은 다음과 같습니다.
Encrypt_key_Store_LocationEncrypt_key_Store_AliasEncrypt_key_Store_PasswordEncrypt_key_Scret
환경 변수를 통해 키 스토어 관련 정보를 구성하면 더 나은 보안을 달성 할 수 있으므로 구성 센터의 환경 변수에 민감한 비밀번호 정보를 저장하는 것이 좋습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.