1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  8. 文档管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

凭据管理

功能介绍

什么是凭据

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;修改凭据内容时,也只需要在凭据管理中一处修改即可,不需要修改多处。

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

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

您希望我们如何改进?