SpringBoot中安全的设置阿里云日志SLS的accessKey

  众所周知,阿里云的服务都是基于accesskeyId和accesskeySecret来进行身份鉴权的,但唯独日志因为需要写入到.xml文件里对于accesskeyId和accesskeySecret需要进行一定程度的改进,尤其是使用了jasypt进行加密的参数传递进去logback.xml更是会遇到需要对参数进行解密的问题,而官网只有简单粗略的带过如何自定义传入accessKey,以下由我来说一下我的改造计划. 

 

1.首先需要引入阿里云日志SLS和jasypt相关Maven包

 <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.3</version>
</dependency>

 <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>2.5.0</version>
</dependency>

<dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-log-logback-appender</artifactId>
        <version>0.1.29</version>
</dependency>

2.自定义 jasypt.encryptor.password 密码并创建自定义jasypt的bean(务必先自定义jasypt密码),然后放入环境变量中或者你偷懒直接先写死在代码里,在环境变量中通过System.getenv来获取


import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.iv.RandomIvGenerator;
import org.jasypt.salt.RandomSaltGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JasyptConfig {
    @Bean("jasyptStringEncryptor")
    public StringEncryptor stringEncryptor(){
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setAlgorithm("PBEWithMD5AndDES");
        encryptor.setIvGenerator(new RandomIvGenerator());
        encryptor.setSaltGenerator(new RandomSaltGenerator());
        encryptor.setStringOutputType("base64");
        encryptor.setPassword(System.getenv("jasypt.en
### Spring Boot 集成阿里云服务 Spring Boot 应用程序能够通过最少的配置快速启动并运行,这使得其与第三方服务集成变得简单高效[^1]。对于阿里云的服务或组件而言,Spring Boot 可以轻松与其多种产品和服务进行集成。 #### 使用阿里云 SDK 进行集成 为了使 Spring Boot 项目能顺利连接到阿里云的各项服务,开发者可以利用官方提供的 Java SDK 来实现这一目标。这些 SDK 提供了一系列 API 接口来访问对象存储 OSS、消息队列 MQ、日志服务 SLS 等多个重要功能模块。 ```java // 引入依赖项 (Maven) <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>LATEST_VERSION</version> </dependency> // 初始化客户端实例 IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, secretAccessKey); IAcsClient client = new DefaultAcsClient(profile); // 发送请求获取响应数据 DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResponse response = client.getAcsResponse(request); System.out.println(response.getInstanceCount()); ``` 此代码片段展示了如何创建 ECS 实例描述查询,并打印返回的结果数量。实际应用中可根据需求调整所调用的方法以及参数设置。 #### 自动化配置简化开发流程 除了手动编写代码外,还可以借助 `spring-cloud-alibaba` 组件进一步减少工作量。该库包含了针对 Nacos、Sentinel 和 RocketMQ 的 Starter 支持,允许应用程序自动发现和注册微服务体系内的其他成员,从而构建更加健壮可靠的分布式架构体系。 ```yaml # application.yml 文件中的部分配置示例 spring: cloud: alibaba: nacos: discovery: server-addr: localhost:8848 # 设置Nacos服务器地址 sentinel: transport: dashboard: localhost:8080 # Sentinel 控制台 URL ``` 上述 YAML 片段说明了怎样在 Spring Boot 中启用对 Nacos 注册中心的支持,并指定相应的控制面板位置;同时也开启了 Sentinel 流控降级机制以便更好地处理异常情况下的流量压力测试等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值