j1ngk3.sssd_ldap
lae.system_ldap
LDAP対応のActive Directoryサーバーに対して、システムレベルのLDAP認証のためにSSSDをインストールおよび設定します。
ロール変数
設定可能なロール変数のリストはdefaults/main.yml
を参照してください。ほとんどのユーザーにはデフォルトの設定で十分ですが、このセクションでは定義が必要な変数のみを説明します。
LDAP/ADサーバーと通信するために以下の設定が必要です:
変数 | 例 | 説明 |
---|---|---|
system_ldap_domain |
LDAP |
この設定/ドメインを識別するためにsssdが使用するラベル。 |
system_ldap_search_base |
OU=Idol Schools,DC=Aikatsu,DC=net |
LDAPユーザー操作を行うために使用するデフォルトのベースDN。 |
system_ldap_uris |
- ldaps://ldap-tyo.example.aikatsu.net:636 - ldaps://ldap-ngo.example.aikatsu.net:636 |
sssdが接続すべきLDAPサーバーのURIリスト。 |
system_ldap_bind_dn |
CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net |
LDAP操作を行うために使用するデフォルトのバインドDN。 |
system_ldap_bind_password |
sunrise |
デフォルトのバインドDNの認証トークン。現在、クリアテキストのパスワードのみがサポートされています。 |
system_ldap_access_filter_groups |
- CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net |
現在のホストにアクセスを許可されたグループDNのリスト。 |
system_ldap_access_unix_groups |
- operations |
実質的にはsystem_ldap_access_filter_groups と同じですが、UNIXグループ名(通常はCN)を使用します。 |
system_ldap_access_filter_users |
- hoshimiya.ichigo - nikaidou.yuzu |
現在のホストにアクセスを許可されたユーザー名のリスト(デフォルトではフィルタ(sAMAccountName=%s) に渡されます)。 |
system_ldap_sudo_groups |
- operations |
現在のホストでsudoの使用を許可するために設定するグループのリスト。 |
system_ldap_sudo_users |
- hoshimiya.ichigo |
現在のホストでsudoの使用を許可するために設定するユーザーのリスト。 |
例のプレイブック
以下は、マルチテナントプレイブックで通常使用するものです:
---
- hosts: all
user: ansible
roles:
- lae.system_ldap
become: True
テストディレクトリにも例のプレイブックがあります。
拡張使用
このセクションでは、上記のコードブロックのプレイブックはsystem_ldap.yml
です。
以下のようなプレイブックのレイアウトを見てみましょう:
- system_ldap.yml
- inventory
- group_vars/
- all/
- main.yml
- starlight/
- main.yml
- host_vars/
- research-node01
- roles/
- requirements.yml
このレイアウトでは、ホストグループまたはホストごとにアクセス制御をグループ化できます。
すべてのホストにわたって設定したい変数がいくつかありますは、group_vars/all/main.yml
(またはディレクトリを使わない場合はgroup_vars/all
)に設定できます:
---
system_ldap_domain: aikatsu.net
system_ldap_bind_dn: CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_bind_password: sunrise
system_ldap_search_base: OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_uris:
- ldaps://ldap-tyo.example.aikatsu.net:636
- ldaps://ldap-ngo.example.aikatsu.net:636
system_ldap_access_filter_groups:
- CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_filter_users: []
system_ldap_access_unix_groups:
- operations
system_ldap_sudo_groups:
- operations
system_ldap_sudo_users: []
ここでは、検索ユーザーアカウントとパスワード(system_ldap_bind_*
)を使用して、SSL経由でLDAPサーバーと同期し、"operations" グループが認証できるようにし、ルート権限を与えています。
starlight
グループの変数ファイルは次のようになります:
---
system_ldap_allow_passwordauth_in_sshd: true
system_ldap_access_filter_users:
- hoshimiya.ichigo
system_ldap_sudo_users:
- hoshimiya.ichigo
これにより、ユーザー名hoshimiya.ichigo
はstarlight
ホストグループ内のマシンにログインでき、sudoを使用することができます。上記の変数は、LDAP対応のADサーバーからのsAMAccountName
値と一致します。
グループを指定することもできますが、グループフィルタ変数に完全なDNを提供する必要があります。他の変数については、CNを使用できます。例えば:
system_ldap_access_filter_groups:
- CN=operations,OU=Security Groups,OU=Global,OU=Idol Schools,DC=Aikatsu,DC=net
- CN=starlight-students,OU=Security Groups,OU=Starlight Academy,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_unix_groups:
- operations
- starlight-students
system_ldap_sudo_groups:
- operations
ここではstarlight-students
LDAPグループを追加しますが、ログインのみを許可します。
開発
最初にこのリポジトリをクローンし、ブランチまたはフォークを作成し、変更を行い、コミットしてプルリクエストを提出します。
ansible vaultの変更を追跡するために、.gitconfigをGitの設定に含めます:
echo -e "[include]\n\tpath = ../.gitconfig" >> .git/config
テスト
vagrant box add debian/stretch64
vagrant up
vagrant provision
ライセンス
MIT