LDAP Rake 任务
- 版本:Free, Premium, Ultimate
- 产品:GitLab Self-Managed
以下是 LDAP 相关的 Rake 任务。
检查
LDAP 检查 Rake 任务会测试 bind_dn 和 password 凭据(如果已配置),并列出 LDAP 用户样本。此任务也会作为 gitlab:check 任务的一部分执行,但也可以使用以下命令独立运行。
sudo gitlab-rake gitlab:ldap:checksudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:check默认情况下,该任务会返回 100 个 LDAP 用户样本。您可以通过向检查任务传递一个数字来更改此限制:
rake gitlab:ldap:check[50]运行组同步
- 版本:Premium, Ultimate
- 产品:GitLab Self-Managed
以下任务会立即运行组同步。 当您希望根据 LDAP 更新所有已配置的组成员资格,而无需等待下一次计划的组同步运行时,此功能非常有用。
如果您想更改组同步的执行频率,请改为调整 cron 计划。
sudo gitlab-rake gitlab:ldap:group_syncsudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:group_sync重命名提供商
如果您在 gitlab.yml 或 gitlab.rb 中更改了 LDAP 服务器 ID,则需要更新所有用户身份,否则用户将无法登录。输入旧的和新的提供商,此任务将更新数据库中所有匹配的身份。
old_provider 和 new_provider 由前缀 ldap 加上配置文件中的 LDAP 服务器 ID 组成。例如,在 gitlab.yml 或 gitlab.rb 中,您可能会看到如下 LDAP 配置:
main:
label: 'LDAP'
host: '_your_ldap_server'
port: 389
uid: 'sAMAccountName'
# ...main 是 LDAP 服务器 ID。组合起来,唯一的提供商就是 ldapmain。
如果您输入了错误的 new_provider,用户将无法登录。如果发生这种情况,请再次运行该任务,将错误的提供商作为 old_provider,将正确的提供商作为 new_provider。
sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider]sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider[old_provider,new_provider]示例
假设您从默认的服务器 ID main(完整提供商为 ldapmain)开始。
如果我们将 main 更改为 mycompany,那么 new_provider 就是 ldapmycompany。
要重命名所有用户身份,请运行以下命令:
sudo gitlab-rake gitlab:ldap:rename_provider[ldapmain,ldapmycompany]示例输出:
100 users with provider 'ldapmain' will be updated to 'ldapmycompany'.
If the new provider is incorrect, users will be unable to sign in.
Do you want to continue (yes/no)? yes
User identities were successfully updated其他选项
如果您没有指定 old_provider 和 new_provider,任务会提示您输入:
sudo gitlab-rake gitlab:ldap:rename_providersudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider示例输出:
What is the old provider? Ex. 'ldapmain': ldapmain
What is the new provider? Ex. 'ldapcustom': ldapmycompany此任务还接受 force 环境变量,该变量会跳过确认对话框:
sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider] force=yes密钥
GitLab 可以使用 LDAP 配置密钥 从加密文件中读取信息。 以下 Rake 任务用于更新加密文件的内容。
显示密钥
显示当前 LDAP 密钥的内容。
sudo gitlab-rake gitlab:ldap:secret:showsudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:show示例输出:
main:
password: '123'
bind_dn: 'gitlab-adm'编辑密钥
在您的编辑器中打开密钥内容,并在您退出时将结果内容写入加密的密钥文件。
sudo gitlab-rake gitlab:ldap:secret:edit EDITOR=vimsudo RAILS_ENV=production EDITOR=vim -u git -H bundle exec rake gitlab:ldap:secret:edit写入原始密钥
通过 STDIN 提供新密钥内容以进行写入。
echo -e "main:\n password: '123'" | sudo gitlab-rake gitlab:ldap:secret:writeecho -e "main:\n password: '123'" | sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:write密钥示例
编辑器示例
当 edit 命令与您的编辑器不兼容时,可以使用 write 任务:
# 将现有密钥写入纯文本文件
sudo gitlab-rake gitlab:ldap:secret:show > ldap.yaml
# 在您的编辑器中编辑 ldap 文件
...
# 重新加密文件
cat ldap.yaml | sudo gitlab-rake gitlab:ldap:secret:write
# 删除纯文本文件
rm ldap.yamlKMS 集成示例
它也可以用作接收由 KMS 加密内容的应用程序:
gcloud kms decrypt --key my-key --keyring my-test-kms --plaintext-file=- --ciphertext-file=my-file --location=us-west1 | sudo gitlab-rake gitlab:ldap:secret:writeGoogle Cloud 密钥集成示例
它也可以用作从 Google Cloud 获取密钥的接收应用程序:
gcloud secrets versions access latest --secret="my-test-secret" > $1 | sudo gitlab-rake gitlab:ldap:secret:write