Gitlab CI/CD 中的秘密检测

时间:2021-01-29 13:56:21

标签: node.js gitlab gitlab-ci

我在理解如何在 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'));
...

提交更改后,我预计管道会因机密泄漏而失败。这是显示秘密侦查通过的图像。 enter image description here

谁能告诉我如何制作以便管道报告错误?

2 个答案:

答案 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 的项目一起使用。

https://about.gitlab.com/images/13_12/secret_config_button_13_12.png -- Configuration tool for Secret Detection

参见 DocumentationEpic