ToC
Active Directoryの検証環境を構築
Active Directory(AD)のユーザー管理のツールを作成する際にいきなり本番系のADに
接続して実装やテストを実施するわけにもいかないので、クライアント環境で簡易にADを
構築したいと思いたち、Samba4 Active directory
の Docker
イメージが
提供されていたので、これを利用してみました。
DockerでADを起動する
ネットで調べたところ、 samba4-ad
というものを使った事例が多く紹介されていましたが、
Docker
のバージョンがあがってPermissionの問題があるのか、私の環境ではうまく動かなかったので
今回はalpine-samba-dcを利用することにしました。
あまり、何も考えずにうまく行ったので docker-compose
ファイルを下記に記載します。
version: '3.2'
services:
samba:
image: laslabs/alpine-samba-dc:0.1.0
container_name: adds
privileged: true
environment:
SAMBA_DC_REALM: super-company.local
SAMBA_DC_DOMAIN: SUPER-COMPANY
SAMBA_DC_ADMIN_PASSWD: <ユーザー指定のパスワード>
SAMBA_DC_DNS_BACKEND: SAMBA_INTERNAL
ports:
- 53:53
- 53:53/udp
- 88:88
- 88:88/udp
- 135:135
- 139:139
- 389:389
- 389:389/udp
- 445:445
- 464:464
- 464:464/udp
- 636:636
- 3268-3269:3268-3269
しばらく起動していると、 dns_update.c:290: Failed DNS update - with error code 110
というエラーが
出てくるのですが、どうやら特定のバージョン以上で発生するようですが、今回の検証では特に問題がなかったのでこのままの状況にしました。
LDAPクライアントの準備
ADが構築できたのは良いのですが、ADの内部のデータを見る必要があります。
CUIですべてを見るのはとても効率が悪いので、LDAPクライアントを導入することにします。
色々と調べてみたのですが、あまりこの分野でのアップデートが無いらしく情報もあまりありませんでした。
導入に手間を掛けるのもあまり得策ではないので、Homebrew でインストールできそうな Apache Directory Studio
を使ってみました。
Homebrewでインストール
Homebrewを利用して、インストールをしてゆきます。インストールコマンドを参考に導入してください。
ここでポイントとなるのは、Apache Directory Studio
を動作させるためには Java 8
が必要というところです。
今回は、Amazonが無償マルチプラットフォームで提供している Coretto 8
を使ってみて動かしてみます。
UI系のインストールのコマンドは、 brew cask
でインストールします。
$ brew cask install apache-directory-studio
Updating Homebrew...
==> Caveats
apache-directory-studio requires Java 8+. You can install the latest version with:
brew cask install adoptopenjdk
〜 一部省略 〜
🍺 apache-directory-studio was successfully installed!
インストールはできますが、この段階でアプリケーションを起動する Java
が無いと言って怒られます。
そのため、続いてCoretto 8をインストールします。インストールの途中でパスワードの確認があります。
$ brew tap homebrew/cask-versions
Updating Homebrew...
==> Tapping homebrew/cask-versions
〜 一部省略 〜
Tapped 156 casks (204 files, 64.4MB).
$ brew cask install corretto8
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
〜 一部省略 〜
Password:
installer: Package name is Amazon Corretto 8
installer: Installing at base path /
installer: The install was successful.
🍺 corretto8 was successfully installed!
インストール済みのJavaを確認すると、確かにインストールされたようです。
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
14, x86_64: "OpenJDK 14" /Library/Java/JavaVirtualMachines/openjdk-14.jdk/Contents/Home
1.8.0_242, x86_64: "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
最後にApache Directory Studio
の設定ファイルに特定のJava Versionを設定するという項目があります。
ここに、インストールしたJavaのパスを設定します。
- 設定ファイル:
/Applications/ApacheDirectoryStudio.app/Contents/Info.plist
<string>-vm</string>
<string>/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home/bin/java</string>
そして、再度Apache Directory Studio
を起動すると、今度は正しく起動します。
Apache Directory Studioからの接続設定
主な設定値は、下記のように設定しました。 初期接続時には、証明書の確認がありますが「このセッションだけ有効」など適切に設定して接続してください。
分類 | 設定項目 | 設定値 |
---|---|---|
Network | Hostname | 127.0.0.1 |
Network | Port | 389 |
Network | Encryption Method | Use StartTLS extension |
Authentication | Method | Simple Authentication |
Authentication | BindDN | CN=Administrator,CN=Users,DC=super-company,DC=local |
Authentication | Bind Password | Dockerで環境変数に設定した値 |
Browser Options | Base DN | DC=super-company,DC=local |
samba-toolでユーザー追加
GUIでデータの内容を確認できるようになったので、samba-tool
を使ってユーザーを追加してみます。 正しくユーザー追加ができれば、Apache Directory Studio
でもユーザーが追加されて見れるはずです。
$ docker exec -ti adds samba-tool user create jane.doe jane-passw0rd --use-username-as-cn "--mail-address=jane.doe@example.jp" --given-name=Jane --surname=Doe
User 'jane.doe' created successfully
確かに増えました。 これでADを使ったツール開発が捗りそうです。
ちなみにsamba-tool
を使うと色々と設定できるようです。
Main samba administration tool.
Available subcommands:
dbcheck - Check local AD database for errors.
delegation - Delegation management.
dns - Domain Name Service (DNS) management.
domain - Domain management.
drs - Directory Replication Services (DRS) management.
dsacl - DS ACLs manipulation.
fsmo - Flexible Single Master Operations (FSMO) roles management.
gpo - Group Policy Object (GPO) management.
group - Group management.
ldapcmp - Compare two ldap databases.
ntacl - NT ACLs manipulation.
processes - List processes (to aid debugging on systems without setproctitle).
rodc - Read-Only Domain Controller (RODC) management.
sites - Sites management.
spn - Service Principal Name (SPN) management.
testparm - Syntax check the configuration file.
time - Retrieve the time on a server.
user - User management.
For more help on a specific subcommand, please type: samba-tool <subcommand> (-h|--help)
参照
- alpine-samba-dc(GitHub)
- alpine-samba-dc(DockerHub)
- Homebrew
- Amazon Corretto 8
- MacでインストールされているJavaを確認する方法
- docker上にRedmineとSamba4 Active directory認証環境を構築