Prefácio
Para poder usá -lo, você deve primeiro entendê -lo. Estou com preguiça de desenhar figuras, para que eu possa desenhar figuras dos caras grandes online. A estrutura do Springcloud é como mostrado na figura:
Cenários de aplicação da arquitetura de microsserviços:
1. Divisão do sistema, vários subsistemas
2. Cada subsistema pode implantar vários aplicativos e o balanceamento de carga entre os aplicativos é implementado
3. É necessário um centro de registro de serviço e todos os serviços são registrados no Centro de Registro. O balanceamento de carga também é alcançado usando certas estratégias para serviços registrados no Centro de Registro.
4. Todos os clientes acessam os serviços de back -end através do mesmo endereço de gateway. Através da configuração de roteamento, o gateway determina qual serviço lida com uma solicitação de URL. O balanceamento de carga também é usado ao encaminhar solicitações para o serviço.
5. Às vezes, os serviços também precisam acessar um ao outro. Por exemplo, existe um módulo de usuário e outros serviços precisam obter dados do usuário dos serviços do usuário ao processar alguns serviços.
6. É necessário um disjuntor para lidar com tempos de tempo e erros durante as chamadas de serviço em tempo hábil para impedir que o sistema geral seja paralisado devido a problemas com um dos serviços.
7. Também é necessária uma função de monitoramento para monitorar o tempo gasto em cada chamada de serviço, etc.
introdução
Na arquitetura de microsserviços, geralmente adotamos o método da organização DevOps para reduzir os enormes custos causados pela comunicação entre as equipes para acelerar os recursos de entrega dos aplicativos de microsserviço. Isso torna as informações on -line originalmente controladas pela equipe de operação e manutenção entregues aos membros da organização de microsserviços para manter por si mesmos, o que incluirá uma grande quantidade de informações confidenciais, como a conta do banco de dados e a senha. Obviamente, é muito perigoso se armazenarmos diretamente informações confidenciais no texto simples no arquivo de configuração do aplicativo Microservice. Em resposta a esse problema, a Spring Cloud Config fornece a capacidade de criptografar e descriptografar propriedades para proteger as informações no arquivo de configuração. Por exemplo, o exemplo a seguir:
spring.dataSource.username = didispring.dataSource.password = {cipher} dba6505baa81d78bd08799d8d4429DE499BD4C2053C05F029E7CFBF143695F5BNa Spring Cloud Config, o conteúdo é marcado como um valor criptografado usando o prefixo {cifra} na frente do valor do atributo. Quando o cliente MicrosService carrega a configuração, o centro de configuração descriptografará automaticamente o valor com o prefixo {cipher}. Através da implementação desse mecanismo, a equipe de operação e manutenção pode fornecer com segurança os recursos criptografados das informações on -line à equipe de microsserviço sem se preocupar com o vazamento dessas informações confidenciais. Vamos introduzir como usar essa função no centro de configuração.
Pré -requisitos para uso
Ao usar a função de criptografia e descriptografia da Spring Cloud Config, há um pré -requisito necessário para o qual precisamos prestar atenção. Para ativar esse recurso, precisamos instalar uma versão JCE ilimitada (Extensão de Criptografia Java de Força Unlimitada) no tempo de execução do Centro de Configuração. Embora a função JCE esteja disponível no JRE, a versão padrão com limitação de comprimento é usada. Podemos baixá -lo no site oficial da Oracle. É um pacote comprimido. Após a descompressão, você pode ver os três arquivos a seguir:
Readme.txtlocal_policy.jarus_export_policy.jar
Precisamos copiar os arquivos LOCAL_POLICY.JAR e US_EXPORT_POLICY.JAR para o diretório $ java_home/jre/lib/segurança para substituir o conteúdo padrão original. Neste ponto, os preparativos para criptografia e descriptografia são concluídos.
Terminais relacionados
Depois de concluir a instalação do JCE, você pode tentar iniciar o centro de configuração. No console, alguns terminais específicos do centro de configuração serão emitidos, incluindo principalmente:
Você pode tentar acessar o endpoint /criptografia /status via solicitação get, e obteremos o seguinte:
{"Descrição": "Nenhuma chave foi instalada para serviço de criptografia", "Status": "no_key"}Este retorno indica que a função de criptografia do centro de configuração atual ainda não pode ser usada porque a tecla correspondente não está configurada para o serviço de criptografia.
Chave de configuração
Podemos especificar diretamente as informações -chave (chave de simetria) no arquivo de configuração através da propriedade Encrypt.Key, por exemplo:
Encrypt.Key = Didispace
Depois de adicionar as informações de configuração acima, reinicie o centro de configuração e acesse o terminal /Encrypt /Status. Teremos o seguinte conteúdo:
{"status": "ok"}No momento, a função de criptografia e descriptografia em nosso centro de configuração está pronta para ser usada. Você também pode tentar acessar os pontos de extremidade /criptografar e /descriptografar para funções de criptografia e descriptografia. Observe que ambos os terminais são solicitações de postagem e as informações de criptografia e descriptografia precisam ser enviadas através do órgão de solicitação. Por exemplo, assumindo o comando curl como exemplo, podemos chamar os terminais de criptografia e descriptografia das seguintes maneiras:
$ curl localhost:7001/encrypt -d didispace3c70a809bfa24ab88bcb5e1df51cb9e4dd4b8fec88301eb7a18177f1769c849ae9c9f29400c920480be2c99406ae28c7$ curl LocalHost: 7001/descripto -d 3C70A809BFA24AB88BCB5E1DF51CB9E4DD4B8FEC88301EB7A18177F1769C849AE9C9F29400C920480BE2C9406406120C920C9204.
Aqui, usamos a criptografia simétrica para especificar o método de implementação da chave configurando o parâmetro Encrypt.Key. Este método é relativamente simples de implementar e apenas um parâmetro é necessário. Além disso, também podemos usar a variável de ambiente Encrypt_key para configurá -lo para permitir que as informações principais sejam armazenadas externamente.
Criptografia assimétrica
O Centro de Configuração da Spring Cloud Config pode não apenas usar a criptografia de simetria, mas também a criptografia assimétrica (como pares de chaves RSA). Embora a geração e a configuração da criptografia assimétrica sejam relativamente complexas, ela tem maior segurança. Abaixo, vamos introduzir em detalhes como usar a criptografia assimétrica.
Primeiro, precisamos gerar o par de chaves através da ferramenta Keytool. Keytool é uma ferramenta de gerenciamento de chave e certificado no JDK. Ele permite que os usuários gerenciem seus próprios pares de chave pública/privada e certificados relacionados para a auto-autenticação (via assinatura digital) (o usuário se autentica a outros usuários/serviços) ou serviços de integridade e autenticação de dados. Esta ferramenta está incluída nas versões após o JDK 1.4, e sua localização é: %java_home %/bin/keytool.exe.
Os comandos específicos para gerar a chave são os seguintes:
$ keytool -GenKeypair -Alias Config -Server -Keyalg RSA -Keystore Config-Server.keystore
Digite a senha do keystore:
Digite a nova senha novamente:
Qual é o seu primeiro e sobrenome?
[Desconhecido]: Zhaiyongchao
Qual é o nome da sua unidade organizacional?
[Desconhecido]: Empresa
Qual é o nome da sua organização?
[Desconhecido]: Organização
Qual é o nome da sua cidade ou região?
[Desconhecido]: Cidade
Qual é o nome da sua província/cidade/região autônoma?
[Desconhecido]: Província
Qual é o código do país de duas letras para esta unidade?
[Desconhecido]: China
CN = Zhaiyongchao, ou = Company, O = Organização, L = Cidade, ST = Província, C = China Correta?
[Não]: yDigite a senha de chave para <fig-SERVER>
(Se a senha for a mesma que a keystore, pressione Enter):
Digite a nova senha novamente:
Além disso, se não quisermos inserir essas informações imediatas passo a passo, podemos usar -dname para especificá -lo diretamente, enquanto a senha do keystore e a senha da chave podem ser especificadas diretamente usando -StorePass e -KeyPass. Portanto, podemos criar diretamente a mesma keystore que o comando acima através do seguinte comando:
$ keytool -genkeypair -alias config-server -keyalg RSA / -dname "CN=zhaiyongchao, OU=company, O=organization, L=city, ST=province, C=china" / -keypass 222222 / -keystore config-server.keystore / -storepass 111111 /
Por padrão, a chave criada pelo comando acima é válida apenas por 90 dias. Se quisermos ajustar seu período de validade, podemos fazê -lo adicionando o parâmetro de validade. Por exemplo, podemos estender o período de validade da chave para um ano através do seguinte comando:
$ keytool -GenKeypair -Alias Config -Server -Keyalg rsa / -dname "cn = zhaiyongchao, ou = companhia, o = organização, l = cidade, st = província, c = cina" / -KeyPass 22222 / -Keystore config -sérver.KeyStore / -Storsore 1110
Os três métodos de geração de comando acima acabarão gerar um arquivo config-server.keystore no diretório de execução atual do comando. Em seguida, precisamos salvá -lo em um local no sistema de arquivos do Centro de Configuração, por exemplo, coloque -o no diretório atual do usuário e adicione informações de configuração relevantes ao Centro de Configuração:
Encrypt.Key-store.Location = File: // $ {user.home} /config-sever.keystoreencrypt.key-tore.alias=config-sevencrypt.key-store.password=11111111Encrypt.key-store.secret=222222Se colocarmos o Config-Server.keystore no diretório SRC/Main/Recurso no Centro de Configuração, também podemos configurá-lo diretamente assim: Encrypt.KeyStore.Location = Config-Server.keystore. Além disso, as informações de configuração da criptografia assimétrica também podem ser configuradas através de variáveis de ambiente, e seus nomes de variáveis específicos correspondentes são os seguintes:
ENCRYPT_KEY_STORE_LOCATIONENCRYPT_KEY_STORE_ALIASENCRYPT_KEY_STORE_PASSWORDENCHPRYPT_KEY_STORE_SECRET
Configurar informações relacionadas à KeyStore através de variáveis de ambiente pode obter uma melhor segurança, por isso é uma boa opção para armazenar informações de senha sensíveis nas variáveis de ambiente no centro de configuração.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.