Infisical 基本使用
创建项目
1> 点击 “+ Add New Project”

2>. 选择“Secrets Management”

项目类型说明:
- Secrets Management(秘密管理):用于存储、管理和同步环境变量(如数据库密码、API Key、Jwt Secret 等);
- Certificate Manager (证书管理): 管理 SSL/TLS 证书,并支持自动推送到 Nginx 或云平台;
- KMS (密钥管理服务): 用于管理原始的加解密密钥(类似 AWS KMS),如果要在代码里手动做数据加密(Encrypt/Decrypt),会用到这个;
- Secret Scanning (密钥扫描): 用于自动扫描 GitHub/GitLab 代码库,防止有程序员不小心把密码写死在代码里并提交了;
- PAM (特权访问管理): 针对服务器 SSH、数据库账号等动态权限的管理;
- Agent Sentinel: 用于增强身份认证的安全监控(通常与 Machine Identity 配合使用);
添加密钥 (Secrets)
1>. 选择显示所有环境;然后点击添加秘钥。

2>. 选择要添加的秘钥用于哪个环境(Development 开发环境, Staging 预发或测试环境, Production 生产环境)

安装 Infisical CLI
scoop bucket add org https://github.com/Infisical/scoop-infisical.git
scoop install infisical
在业务项目中使用
1>. 登录与初始化:
## 登录infisical
infisical login --domain http://infisical服务器地址
## 在业务项目(spring-boot)根目录执行如下命令,进行关联
infisical init
infisical init 命令的作用将本地项目目录与 Infisical 平台上的特定项目进行关联;具体操作如下:
- 创建配置文件:在当前项目根目录下生成一个名为 infisical.json 的配置文件; 该文件包含了将本地代码库链接到 Infisical 远程项目所需的元数据(如项目 ID 等);
- 建立关联:通过该命令,你可以选择或指定要同步的环境变量所属的 Infisical 项目;
- 后续基础:在本地开发环境中使用 Infisical 的关键步骤,完成初始化后才能使用 infisical run 等命令将配置好的机密(Secrets)注入到应用程序的运行环境中;
2>. 配置秘钥占位符
在 application.yml 中,使用在 infisical 中添加的秘钥的 key 做占位符:
spring:
datasource:
password: ${DB_PASSWORD}
3>. 启动项目
使用 infisical CLI 包裹启动命令,infisical 就会将密钥注入到 ENV 中
## 使用 Maven 启动项目
infisical run -- ./mvnw spring-boot:run
## 使用 Java 虚拟机运行一个打包好的可执行 JAR 文件
infisical run -- java -jar target/your-app.jar
在 VS Code 中启动项目
1>. 启动方式
在 VS Code 中启动项目的方式有如下两种:

方式一:打开 UserApplication.java 入口文件,在右上角点击“Run Java”启动。这是 VS Code 基础 Java 扩展(Debugger for Java / Language Support for Java)提供的原生功能。这种方式仅仅是把当前包含 main 方法的类当作一个普通的 Java 程序来执行。但它会去检查 .vscode/launch.json 中是否有匹配的运行配置;如果没有,就使用默认的最简参数直接调用 java 命令启动,否则就按 .vscode/launch.json 中的运行配置启动;此方式 纯粹、轻量,仅关注 Java 进程本身的启动和调试。
方式二:在 spring boot dashboard 中点击“Run”启动。这是由 Spring Boot Tools 相关插件提供的功能。它将项目识别为一个 Spring Boot 应用进行启动。在启动的同时或之后,Dashboard 会尝试与 Spring Boot 进程建立连接(通常依赖 Spring Boot Actuator 或 JMX),并提供应用监控能力;例如:实时查看所有已注册的 Beans、Controller 的路由映射 (Request Mappings)、当前生效的环境变量和实时的内存消耗等。如果是多模块服务,还可以很方便地统一管理它们的启停。这种方式启动时,也会去检查和使用 .vscode/launch.json 中的运行配置。
综上,在 VS Code 中无论通过哪种方式启动 spring 项目,其都会应用 launch.json 中的配置;launch.json 的配置内容如下:
{
"configurations": [
{
"type": "java",
"name": "Spring Boot-UserApplication<user>",
"request": "launch",
"cwd": "${workspaceFolder}",
"mainClass": "cn.sidoc.user.UserApplication", ## 启动类,即入口文件
"projectName": "user",
"args": "",
"envFile": "${workspaceFolder}/.env", ## 环境变量文件位置
"preLaunchTask": "export-infisical-env" ## 在启动 Java 进程前,先执行一个名为 export-infisical-env 的任务,任务定义在 .vscode/tasks.json 中
}
]
}
.vscode/tasks.json 任务定义如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "export-infisical-env",
"type": "shell",
"command": "infisical export --format=dotenv > .env",
"problemMatcher": [],
"presentation": {
"reveal": "silent",
"panel": "shared",
"clear": true
}
}
]
}
也就说,在 VS Code 无论通过何种方式启动项目,Vs Code 都会先执行 launch.json 配置;而 launch.json 中的上述配置让项目与 Infisical 无缝结合,具体如下:
① 先执行 preLaunchTask 任务,在任务中通过 infisical export --format=dotenv > .env 命令将 infisical 中的秘钥导出的项目根目录下的 .evn 文件中;
② envFile 加载上一步生成的 .env 文件到当前启动的 java 项目的环境变量中
③ 启动 Spring Boot 主类
Spring Boot 启动时,在 application.yaml 配置中读到 ${DB_URL} 这种占位符时,就会以 DB_URL 为 key ,依次去 命令行参数 (--DB_URL=xxx)、JVM 参数 (-DDB_URL=xxx)、系统环境变量 (System.getenv)等中去找这个占位符的值,最终在环境变量中找到并填充到配置中。
注:上述方案中,秘钥在 .env 文件中落盘,因此并不是开发环境下 infisical 应用的最佳实践,但已经是开发环境下平衡复杂度和安全性的最优解了。
开发环境下的数据库等资源本身就在本地,被攻击的概率不大,且就算被攻击也并不重要。