Biblioteca para recuperação de secrets da AWS ou GCP.
Crie o arquivo de configuração do maven ou inclua o repositório e o servidor no arquivo já existente:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>github</id>
<username>${server.github.username}</username>
<password>${server.github.password}</password>
</server>
</servers>
<activeProfiles>
<activeProfile>general</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>general</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/felipemenezesdm/spring-secret-manager-suite</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
Inclua a dependência no arquivo pom:
<dependency>
<groupId>br.com.felipemenezesdm</groupId>
<artifactId>spring-secret-manager-suite</artifactId>
<version>1.0.0</version>
</dependency>
Execute com comando abaixo para download de dependências:
mvn install
O deploy da biblioteca é realizado automaticamente sempre que houver a criação de uma nova tag de versão. Entretanto, se for necessário realizar seu deploy manual, é preciso seguir os passos abaixo:
- No settings.xml, confirmar que o servidor do GitHub está configurado:
<servers> <server> <id>github</id> <username>${server.github.username}</username> <password>${server.github.password}</password> </server> </servers>
- Executar o comando abaixo, substuindo os parâmetros por seus respectivos valores:
mvn deploy -s settings.xml -Dserver.github.username=USERNAME -Dserver.github.password=PASSWORD
Para usar a biblioteca de recuperação de secrets, é necessário injectar o service @Suite na classe. Abaixo, um exemplo de uso:
import br.com.felipemenezesdm.Suite;
@RestController
@RequestMapping("/api")
public class MyController {
@Autowired
Suite suite;
@GetMapping("/get-secret")
public String getSecret() {
return suite.get().getSecretData("my-secret");
}
}
É possível configurar a biblioteca usando variáveis de ambiente do sistema ou propriedades da aplicação.
Name | Valor padrão | Example |
---|---|---|
APP_SUITE | gcp, aws ou vazio | Definição do suite para recuperação de secrets |
AWS_ACCOUNT_ID | 000000000000 | Definir a ID da conta AWS para a aplicação |
AWS_ENDPOINT | http://127.0.0.1 | Definir o endpoint dos serviços AWS (indicado quando houver o uso do localstack) |
AWS_DEFAULT_REGION | us-east-1 | Definir a região padrão para uma aplicação alocada na AWS |
GCP_PROJECT_ID | N/A | ID do projeto no Google Cloud Plataform |
GOOGLE_APPLICATION_CREDENTIALS | N/A | Arquivo de credenciais do Google Cloud Platform |
- app:
- suite:
- tipo: string
- descrição: definição do suite para recuperação de secrets. Atualmente disponíveis: aws, gcp e default
- obrigatório: sim
- aws:
- region:
- tipo: string
- descrição: exclusivo para o provedor aws, para identificar a região padrão do cliente.
- obrigatório: sim, quando o provedor for aws
- end-point:
- tipo: string
- descrição: quando o provedor for igual a aws, este parâmetro pode ser configurado para definir o endpoint de onde serão obtidas as credenciais. É bastante útil para quando se está utilizando o LocalStack, por exemplo.
- obrigatório: não
- region:
- gcp:
- project-id
- tipo: string
- descrição: exclusivo para o provedor gcp, para identificar o projeto do qual as credencials serão obtidas.
- obrigatório: sim, quando o provedor for gcp
- project-id
- suite: