LDAP Rakeタスク
以下はLDAP関連のRakeタスクです。
チェック
LDAP check Rakeタスクは、bind_dn
およびpassword
クレデンシャルをテストし(設定されている場合)、LDAPユーザーのサンプルをリストアップします。このタスクはgitlab:check
タスクの一部としても実行されますが、以下のコマンドを使用して個別に実行することもできます。
-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:check
-
セルフコンパイルによるインストール:
sudo -u git -H bundle exec rake gitlab:ldap:check RAILS_ENV=production
デフォルトでは、タスクは100人のLDAPユーザーのサンプルを返します。チェックタスクに数値を渡すことでこの制限を変更します:
rake gitlab:ldap:check[50]
グループ同期の実行
GitLab 12.2で導入されました。
以下のタスクはグループ同期をすぐに実行します。これは、次にスケジュールされたグループ同期が実行されるのを待たずに、LDAPに対して設定されたすべてのグループメンバーシップを更新したい場合に便利です。
-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:group_sync
-
セルフコンパイルによるインストール:
bundle exec rake gitlab:ldap:group_sync
プロバイダー名の変更
gitlab.yml
またはgitlab.rb
で LDAP サーバ ID を変更した場合、すべてのユーザ ID を更新する必要があります。古いプロバイダと新しいプロバイダを入力すると、このタスクはデータベース内の一致するすべての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
です。
old_provider
に、 正 し いプ ロ バ イ ダーをnew_provider
に指定 し ます。-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider]
-
セルフコンパイルによるインストール:
bundle exec rake gitlab:ldap:rename_provider[old_provider,new_provider] RAILS_ENV=production
物件例
デフォルトのサーバー IDmain
(完全プロバイダーldapmain
)から始めることを考えます。main
をmycompany
に変更すると、new_provider
はldapmycompany
になります。すべてのユーザー ID の名前を変更するには、次のコマンドを実行します:
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
を指定しないと、タスクはそれらの入力を要求します:
-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:rename_provider
-
セルフコンパイルによるインストール:
bundle exec rake gitlab:ldap:rename_provider RAILS_ENV=production
出力例:
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シークレットの内容を表示します。
-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:secret:show
-
セルフコンパイルによるインストール:
bundle exec rake gitlab:ldap:secret:show RAILS_ENV=production
出力例:
main:
password: '123'
bind_dn: 'gitlab-adm'
シークレットの編集
秘密の内容をエディタで開き、終了時に暗号化された秘密ファイルに結果を書き込みます。
-
Linux パッケージのインストール:
sudo gitlab-rake gitlab:ldap:secret:edit EDITOR=vim
-
セルフコンパイルによるインストール:
bundle exec rake gitlab:ldap:secret:edit RAILS_ENV=production EDITOR=vim
生のシークレットを書き込む
STDIN に新しいシークレットコンテンツを書き込みます。
-
Linux パッケージのインストール:
echo -e "main:\n password: '123'" | sudo gitlab-rake gitlab:ldap:secret:write
-
セルフコンパイルによるインストール:
echo -e "main:\n password: '123'" | bundle exec rake gitlab:ldap:secret:write RAILS_ENV=production
シークレットの例
エディタの例
writeタスクはeditコマンドがエディタで動作しない場合に使用できます:
# Write the existing secret to a plaintext file
sudo gitlab-rake gitlab:ldap:secret:show > ldap.yaml
# Edit the ldap file in your editor
...
# Re-encrypt the file
cat ldap.yaml | sudo gitlab-rake gitlab:ldap:secret:write
# Remove the plaintext file
rm ldap.yaml
KMSインテグレーション例
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:write
Google Cloud シークレットインテグレーション例
Google Cloudからシークレットを受け取るアプリケーションとしても使用できます:
gcloud secrets versions access latest --secret="my-test-secret" > $1 | sudo gitlab-rake gitlab:ldap:secret:write