【问题标题】:How to delete a GitLab personal access token in docker using bash? [closed]如何使用 bash 在 docker 中删除 GitLab 个人访问令牌? [关闭]
【发布时间】:2022-02-26 00:49:32
【问题描述】:

上下文

在能够使用 bash 添加 GitLab 个人访问令牌之后:

add_gitlab_personal_access_token(){
  local gitlab_username="$1"
  local token_name="$2"
  local personal_access_token="$3"
  local docker_container_id="$4"
  
  output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"token = User.find_by_username('$gitlab_username').personal_access_tokens.create(scopes: [:api], name: '$token_name'); token.set_token('$personal_access_token'); token.save! \"")"
}

尝试我

使用设置令牌时使用的docker execbash -c 命令可以撤销令牌:

revoke_token(){

    local docker_container_id="$1"
    local token="sometokenpersonalgitlabtoken"
    output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"PersonalAccessToken.find_by_token('$token').revoke! \"")"
    echo "output=$output"
}

问题

但是,再次尝试添加token后,它仍在GitLab中,GitLab返回:

DETAIL:  Key (token_digest)=(somelongkeysasdfasdfasdfkeyending=) already exists.

所以撤销方法实际上并没有删除令牌,它只是撤销它。

问题

我想知道如何:*如何使用 bash(基于 $token_name)删除 docker 容器中的 GitLab 个人令牌?

【问题讨论】:

  • 这能回答你的问题吗? Executing 'bash -c' in 'docker exec' command
  • 感谢您的建议,它没有解决问题。主要是我在使用gitlab-rails 用于撤销令牌的命令时遇到了一些困难。此外,我希望一旦它被撤销,它还没有被删除。本质上,当我尝试创建一个具有相同名称的新令牌(已被撤销)时,期望 GitLab 会抛出一个错误说;该令牌已被使用。
  • 就 gitlab-rails 而言,您是否 100% 确定撤销命令成功完成?如果您手动构建这些命令,您能否进入容器中的交互式 bash shell 并查看这些命令是否有效?
  • @JeffBowman 没有。但是,我确实通过浏览器看到令牌在 GitLab 服务器内被删除来验证撤销方法是否有效。我认为是的,但是,我认为问题的答案可以认为是不想删除 GitLab 令牌,而只是撤销它。在写我的问题时,我并没有意识到这一点。因此,我在其他行动中看到了更多价值。感谢您提出不同的验证策略。

标签: bash docker gitlab


【解决方案1】:

我认为这个问题的答案是:这是一个特性,而不是错误。我认为重复使用令牌是不好的安全做法,所以不要尝试删除旧令牌,我写了一个自动生成随机token的方法。

问题中的撤销方法有效。已通过检查 GitLab 个人访问令牌是否在 GitLab 浏览器中消失来手动验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2019-05-03
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多