我在理解如何在 Gitlab CI/CD 中激活 Secrets Detection 时遇到了一些麻烦。 我从模板创建了一个新的 NodeJS Express,然后我从 Settings > CI/CD 激活了 auto-devops 并选中了 Auto Devops 菜单下的复选框 默认为 Auto Devops 管道。之后,我打开了项目文件夹中的 app.js 文件并插入了一个看起来像键值的变量。这是我插入该行的代码:
...
var app = express();
var key = "api-12321321321321321";
// view engine setup
app.set('views', path.join(__dirname, 'views'));
...
提交更改后,我预计管道会因机密泄漏而失败。这是显示秘密侦查通过的图像。
谁能告诉我如何制作以便管道报告错误?
答案 0 :(得分:0)
GitLab 有一篇关于在管道中进行设置的完整帖子:https://docs.gitlab.com/ee/user/application_security/secret_detection/
编辑:
给出的说明有点不清楚:
您需要在配置的“根级别”添加 include
标记。
示例
stages:
- build
- test
image: node:latest
build:
stage: build
script:
- echo "Building"
- npm install typescript
- yarn run build
test:
stage: test
script:
- echo "Testing"
include:
- template: Security/Secret-Detection.gitlab-ci.yml
秘密检测将在测试阶段运行: Pipeline
答案 1 :(得分:0)
使用 GitLab 13.12(2021 年 5 月)应该会更容易:
<块引用>跟随 GitLab SAST configuration tool 的脚步,我们正在安全配置页面上添加对秘密检测的支持。
我们相信 security is a team effort 和这种配置体验可以让非 CI 专家更轻松地开始使用 GitLab Secret Detection。
该工具可帮助用户创建合并请求以启用秘密检测扫描,同时利用最佳配置实践,例如使用 GitLab 管理的 SAST.gitlab-ci.yml
template。
如果一个新的 .gitlab-ci.yml
文件不存在或更新现有的简单 GitLab CI 文件,则配置工具可以创建一个新的 private static final Logger LOG = LoggerFactory.getLogger(RestClientConfig.class);
private static final String CERT_FILE = "client.p12";
private static final String CERT_PASSWORD = "";
private static final String USER_NAME = "elastic";
private static final String USER_PASS = "pwd";
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("localhost:9200") // set the address of the Elasticsearch cluster
.usingSsl(createSSLContext()) // use the SSLContext with the client cert
.withBasicAuth(USER_NAME, USER_PASS) // use the headers for authentication
.build();
return RestClients.create(clientConfiguration).rest();
}
private SSLContext createSSLContext() {
try {
SSLContext sslContext = SSLContext.getInstance("TLS");
KeyManager[] keyManagers = getKeyManagers();
sslContext.init(keyManagers, null, null);
return sslContext;
} catch (Exception e) {
LOG.error("cannot create SSLContext", e);
}
return null;
}
private KeyManager[] getKeyManagers()
throws KeyStoreException, NoSuchAlgorithmException, IOException, CertificateException, UnrecoverableKeyException {
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(CERT_FILE)) {
KeyStore clientKeyStore = KeyStore.getInstance("PKCS12");
clientKeyStore.load(inputStream, CERT_PASSWORD.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(clientKeyStore, CERT_PASSWORD.toCharArray());
return kmf.getKeyManagers();
}
}
文件,从而允许该工具与已经安装了 GitLab CI 的项目一起使用。
参见 Documentation 和 Epic。