はじめに
先日作成した Giteaを利用したCI/CDサンプル で、手動でSSH公開鍵を登録するのが面倒だったので、ActiveDirectoryにSSH公開鍵も登録して、LDAP認証させることにしました。
自分の環境では結構レアな作業だったので、備忘録として残します。
やってることは 参考URL とほぼ同一ですの。
対象機器および環境
検証環境
- Windows Server 2019
- CentOS8 (8.2.2004)
- Gitea (1.13.0+dev)
作業内容
今回の作業では「ActiveDirectoryスキーマの追加」を行います。
作業中に警告ダイアログが出る通り、追加されたスキーマオブジェクトは削除ができませんので、その点にご注意ください。
「ActiceDirectoryスキーマの編集」ができるようにする
コマンドプロンプトを管理者権限で立ち上げて regsvr32 schmmgmt.dll
と入力する。
すると、スナップインにADスキーマの編集が選択できるようになる。
で、同じく管理者権限のコマンドプロンプトでmmc
して管理コンソールを立ち上げる。
すると、スナップインの追加と削除のメニューからActiveDirectoryスキーマが選択できるようになるので、これを追加して「OK」する。
属性の作成
一般名:sshPublicKeys
OID:1.3.6.1.4.1.24552.1.1.1.13
構文:IA5-String
複数値:チェックあり
で、作成する。
クラスの作成
一般名:ldapPublicKey
OID:1.3.6.1.4.1.24552.500.1.1.2.0
親クラス:top
クラスの種類:補助型
で、「次へ」する。
「オプション」に先ほど作成した sshPubnlicKeys を追加して「完了」する。
ユーザクラスに紐づけ
「クラス」→「user」を選択してダブルクリックorプロパティを開く
「関係」タブをクリックして、補助型クラスの「クラスの追加」から
ユーザの公開鍵を登録
管理ツールの「ActiveDirectoryユーザとコンピュータ」の「表示」→「拡張機能」にチェックをいれておく
ユーザをダブルクリック or プロパティを開いて、「属性エディタ」タブの「sshPublicKeys」を編集
GiteaでLDAP認証の設定をする
管理権限のあるユーザでログインして、「サイト管理」→「認証ソース」から「認証ソースを追加」を選択
認証タイプ:LDAP (via BindDN)
認証名:任意
セキュリティプロトコル:LDAPS
ホスト:ActiveDirectoryのサーバ
ポート:636(変更している場合はLDAPSのリッスンポート)
バインドDN:CN=検索用ユーザ,CN=Users,DC=prosper2,DC=net
バインドパスワード:(上記DNのパスワード)
ユーザ検索ベース:dc=prosper2,dc=net
ユーザフィルタ:(&(objectclass=person)(sAMAccountName=%s))
メールアドレス:userPrincipalName
SSH公開鍵:sshPublicKeys
(そのほか、特定グループは管理者権限を付与、とかあれば、Adminフィルタに入れるとよいと思います。)
Giteaでログインしてみる
「設定」→「SSH/GPGキー」を見てみると、先ほど登録した公開鍵がすでに登録された状態となっている。
このとき、別のユーザで同一の公開鍵がすでに登録されている場合は登録されません。
Giteaとして一つの公開鍵は一つのユーザにしか紐づけられないためです。(逆に一つのユーザに複数の鍵はOKです)
最初のログイン時(アカウント自動生成時)に鍵が2つ自動的に登録された状態になります。
おしまい
参考