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に対して設定されたすべてのグループメンバーシップを更新したい場合に便利です。

note
グループ同期を実行する頻度を変更したい場合は、cronスケジュールを調整してください。
  • 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 です。

caution
新しいプロバイダを正しく入力しないと、ユーザーはサインインできません。こ の場合は、 タ ス ク を再実行 し 、 正 し く ないプ ロ バ イ ダーを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 )から始めることを考えます。mainmycompany に変更すると、new_providerldapmycompanyになります。すべてのユーザー 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_providernew_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