凭据管理

功能介绍

什么是凭据

CODING 将账号密码 / API Token / 公私钥对 / 证书这一类与访问权限相关的信息称之为凭据 。

凭据的使用场景

许多第三方的应用或平台都可以与 CODING 的持续集成、持续部署、制品库等产品进行交互,如: 在 CODING 持续集成内拉取 GitHub 上的代码, 若我们将 GitHub 的账号密码等重要信息硬编码在配置文件内,将会有极大的安全隐患。

为了最大限度的提高安全性,您可以在 CODING 的凭据管理中,存储相关的凭据。在使用凭据时,您可以将凭据 ID 写入到相关的配置文件中, 只通过凭据 ID 来换取凭据信息。

查看凭据列表

在项目页面,点击导航栏左下角【项目设置】->【开发者选项】->【凭据管理】进入凭据列表页面。

您可以在列表页面迅速了解已创建凭据的情况:

列表属性 说明
凭据类型 凭据类型暂支持【用户名+密码】、【 SSH 私钥】、【云 API 密钥】、【腾讯云临时授权】、【 Kubernetes 凭据】、【 Android 签名证书】。
凭据名称 请输入凭据名称,不超过 30 个字符。
各凭据所需填写的内容 按照提示输入相对应的信息。

管理凭据

您可以对凭据进行编辑、删除等操作。

创建【 SSH 私钥】类型的凭据

  1. 使用命令创建 SSH 密钥,注意私钥第一行应包含「BEGIN RSA PRIVATE KEY」,否则后续使用时可能会报错「invalid private key」。
ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com"
cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
JvKE3WXugDp2YuswF4MAJq/o+R9kRKZzNfeM9A6NWjwjnIYP4yUVwqa/20MYmVpT
......
  1. 在凭据列表页面点击【录入凭据】。

  1. 在录入凭据页面,输入相关信息:
  • 选择【 SSH 私钥】类别

  • 输入凭据名称,必填项,长度不超过 255 个字符

  • 输入 SSH 私钥,必填项

  • 输入私钥口令,非必填

  • 输入描述,非必填

    点击【录入凭据】。

更新【 SSH 私钥】类型的凭据

在凭据列表页面,点击【编辑】按钮。

在凭据修改页面,可按需修改:

  • 凭据范围

  • 凭据名称

  • SSH 私钥

  • 私钥口令

  • 描述

    点击【保存修改】。

创建【用户名 + 密码】类型的凭据

  1. 在凭据列表页面点击【录入凭据】。

  1. 在录入凭据页面,输入相关信息:
  • 选择【用户名 + 密码】类别

  • 输入凭据名称,必填项,长度不超过 30 个字符

  • 输入用户名和密码,必填项

  • 输入描述,非必填

    点击【录入凭据】。

更新【用户名 + 密码】类型的凭据

在凭据列表页面,点击【编辑】按钮。

在凭据修改页面,可按需修改:

  • 凭据范围

  • 凭据名称

  • 用户名和密码

  • 描述

    点击【保存修改】。

移除凭据

在凭据的编辑页面,可以进行移除凭据的操作。注意:移除凭据后使用本凭据的持续集成任务将会停止,请为其设置新的凭据。

凭据授权

只有进行凭据授权后,持续集成 Job 才有权限使用该凭据。

  1. 在凭据列表页面,点击凭据的【编辑】按钮。

  1. 对需要授权的持续集成功能进行勾选。

凭据使用示例

以在 CODING 持续集成和制品库当中,使用【用户名 + 密码】类型的凭据为例,来演示凭据的使用方式。

在例子中,我们会通过 CODING 持续集成进行镜像构建与打包,并通过凭据 ID 将镜像推送到 CODING 制品库。在例子项目中需要:

  1. 代码中需包含 Dockerfile 文件
  2. 准备一个 Docker 类型的制品库
  3. 准备一个【用户名 + 密码】的凭据
  4. 创建一个持续集成任务,并对该 job 进行凭据授权

如下是准备进行持续构建的项目代码:

创建一个 Docker 类型的制品库

该制品仓库地址在配置持续集成任务时会使用到。

创建一个【用户名 + 密码】的凭据

该凭据 ID 在配置持续集成任务时会使用到。

配置一个持续集成任务

  1. 在持续集成中创建任务,使用模版的 Jenkinsfile ,参考如下配置文件将凭据 ID 放在 credentialsId 中,同时替换制品仓库地址。
pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        sh 'docker version'
        echo '构建完成.'
        script {
          def exists = fileExists 'README.md'
          if (!exists) {
            writeFile(file: 'README.md', text: 'Helloworld')
          }
        }

        archiveArtifacts(artifacts: 'README.md', fingerprint: true)
      }
    }
    stage('测试') {
      steps {
        echo '单元测试中...'
        echo '单元测试完成.'
      }
    }
    stage('打包镜像') {
      steps {
        sh "docker build -t test:${env.GIT_BUILD_REF} -t anywhere-docker.pkg.coding.net/helloworld/helloworld/test:latest ."
      }
    }
    stage('镜像推送') {
      steps {
        script {
          try {
            withCredentials([usernamePassword(credentialsId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS')]) {
              sh "echo ${REGISTRY_PASS} | docker login -u ${REGISTRY_USER} --password-stdin anywhere-docker.pkg.coding.net"
              sh "docker images"
              sh "docker push anywhere-docker.pkg.coding.net/helloworld/helloworld/test:latest"
            }
          } catch(err) {
            echo err.getMessage()
          }
        }
      }
    }
  }
}
  1. 对该 job 进行凭据授权。

  1. 触发持续集成 job,可以看到 job 运行成功。

同时镜像也正常推入到制品库中。

常见问题

  • 创建凭据会不会生成新的账号密码 ?

凭据管理仅是为了管理用户的私密信息,并不会在凭据管理中生成一对账号密码给用户使用。在凭据管理中,用户需要自己添加有效的凭据信息。

  • 将凭据 ID 直接写入到配置文件当中有没有安全隐患 ?

凭据 ID 属于可以公开信息,普通用户拿到了凭据 ID ,也无法简单通过凭据 ID 兑换到真正的凭证信息,只有在 CODING 持续集成等产品的运行环境中, 才可以通过 withCredentials 等命令获取到对应的凭据。

  • 使用凭据 ID 与 使用 CODING 持续集成中的【保密的环境变量】有什么区别 ?

两者都具有保密的特性,不同的是:凭据 ID 可以统一管理,您可以在多个持续集成任务中使用同一个凭据 ID;修改凭据内容时,也只需要在凭据管理中一处修改即可,不需要修改多处。

上一篇项目令牌
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?