Ansible入門:Ansible TowerでのLDAP認証

2018年1月31日、寄稿者: John Lieske

Ansible 入門

Ansible 入門シリーズの続く記事では、ユーザーが LDAP 資格情報でログインできるように Red Hat Ansible Tower を設定するための基本的な操作方法について説明します。この記事では、問題の特定と解決に役立つトラブルシューティングのヒントをいくつかご紹介します。LDAP ツリーまたはフォレストのマップがある場合、LDAP 資格情報を使用したユーザーのログインにこの記事が役立つはずです。

構成設定

LDAP 認証に対応するように Ansible Tower を設定するには、[Settings (設定)] (歯車アイコン) を選択し、[Configure Tower (Tower の構成)] セクションに移動します。ここで、構成設定内の [Authentication (認証)] 領域に注目します。サブカテゴリは [LDAP] に設定します。

LDAP-7

注目すべき主要なフィールドは次のとおりです。

  • LDAP サーバーの URI
  • バインド DN とパスワード
  • ユーザーとグループの検索

その他のフィールドを使って LDAP 検索を絞り込み、本番環境で使用されているリソースを減らしたり、組織をマッピングしたりすることができます。

[LDAP URI] は単に、プロトコル (ldap://) が先頭に追加された LDAP サーバーの IP またはホスト名です。

LDAP-8

[bind DN (バインド DN)] は、LDAP 構造を読み取るためのアクセス権を持つユーザーの資格情報とパスワード (その後にグループとドメインが続く) になります。

LDAP-1

ユーザー検索の絞り込み

Ansible Tower では LDAP サーバーに接続でき、ユーザー検索を絞り込むと、構成が完了します。ユーザー検索項目は、場所とスコープで指定されたパターンを見つけます。ユーザー ID は Active Directory ツリーで検索されるため、ここでは sAMAccountName の値です (uid ではありません)。

LDAP-4
LDAP-2

ユーザーとグループの検索

ユーザーとグループの検索は、ディレクトリ構造の複雑さに応じて、トラブルシューティングが必要となることが最も多い場所です。openldap パッケージの ldapsearch ツールを使用して、LDAP サーバーに対する検索を構成します。基本的な検索から開始し、詳細条件を段階的に追加していくことで、検索を絞り込みます。

ldapsearch -x  -H ldap://10.10.10.254 -D "CN=jarvis,CN=Users,DC=shield,DC=team" -w 01Password! -b "cn=Users,dc=shield,dc=team"

この検索は一般的なものであり、検索結果は指定した場所
(-b "cn=Users,dc=shield,dc=team") に表示されます。この場所は、サーバーに対する LDAP 検索スコープで使用されるものと一致する場所です。

[LDAP Require Group (LDAP 許可グループ)] フィールドと [LDAP Deny Group (LDAP 拒否グループ)] フィールドでは、1 つの項目を追加することで、検索スコープを 1 つのグループに絞り込むことができます。[LDAP User DN Template (LDAP ユーザー拒否テンプレート)] フィールドでは、フィールドに入力した形式にスコープを限定します。構成ページ内の [LDAP User Search (LDAP ユーザー検索)] フィールドでは、以下を使用します。

  • SCOPE_SUBTREE:ディレクトリツリーを再帰的に検索する
  • SCOPE_ONELEVEL:ツリーの 1 レベル下を検索するように指定する
  • SCOPE_BASE:ベース DN で指定されたレベルのみを検索する

LDAP 検索ツールから返された結果を使用して、検索する値 (例:uid または sAMAccountName、group または groupOfNames) を選択します。[LDAP User DN Template (LDAP ユーザー拒否テンプレート)] は [LDAP User Search (LDAP ユーザー検索)] より優先されるため、設定時には必ずどちらか一方のみを使用してください。

LDAP-6

Windows/AD 管理者の場合

これらのステップでは、LDAP ユーザーにログインするためのシングルサインオンを Ansible Tower に設定します。LDAP に接続されたホストに対して認証するための Ansible Tower の設定は、[Credentials (認証情報)] セクションで行います。Ansible に適用される Windows ホストに対する認証にも同様の考慮事項が適用されます。この考慮事項には、ホスト上で WinRM が接続を受け入れるようにするための準備も含まれます。Active Directory 内の Windows ホストに対してジョブを準備して実行する前に、資格情報が適切に設定されていることを確認してください。

ユーザー属性マップ

最後に、LDAP 認証をテストする際に、ある程度の時間をかけて、ユーザー属性と組織のマッピングを確認することは重要です。LDAP ユーザー属性マップでは、LDAP 属性が Ansible Tower 属性にマッピングされます。属性の例としては、名、姓、E メールなどがあります。この場合、E メール属性は、使用されている Active Directory Server の userPrincipalName にマッピングされます。ほとんどの LDAP レイアウトでは、デフォルトは「mail」ですが、適切にマップするためには構造を把握しておく必要があります。

LDAP-5

[LDAP User Flags By Group (グループ別 LDAP ユーザーフラグ)] フィールドを使用すると、マッピングをすばやく絞り込むことができます。たとえば、「secret」という名前の OU に属するユーザーは、次の例では、Ansible Tower でスーパーユーザー・グループに割り当てられます。

LDAP-3

マッピングが複雑化すると、Ansible Tower でのチームや組織へのマッピングも同様に複雑化します。この例では、1 つの組織で、組織の管理者が「secret」という名前の OU として定義されています。「secret」は [User Flags By Group (グループ別ユーザーフラグ)] で一致したものです。

{
 "Shield": {
  "admins": [
   "ou=secret,dc=shield,dc=team"
  ],
  "remove_admins": false,
  "remove_users": false,
  "users": true
 }
}

ユーザーは、[LDAP Team Map (LDAP チームのマップ)] フィールドを使用してチームに割り当てられます。次の例の単純な LDAP データベースでは、2 つのグループをそれぞれ同じ組織内の 2 つのチームにマッピングしています。

{
 "secret": {
  "organization": "Shield",
  "users": "OU=secret,DC=shield,DC=team",
  "remove": false
 },
 "avengers": {
  "organization": "Shield",
  "users": "OU=avengers,DC=shield,DC=team",
  "remove": false
 }
}

ユーザーとグループの Ansible Tower へのマッピングの難しさは、LDAP データベースのレイアウトに応じて異なります。LDAP 検索コマンドを使用して、グループクエリを絞り込み、それに応じて Ansible Tower でマッチングします。

要約

  • Ansible Tower にログインする LDAP ユーザーを認証する際には、
    LDAP サーバーの URI、バインド DN とパスワード、ユーザーとグループの検索

    を使用する
  • [LDAP User DN Template (LDAP ユーザー拒否テンプレート)] を使用すると、[LDAP User Search (LDAP ユーザー検索)] がオーバーライドされる

  • [LDAP Require Group (LDAP 許可グループ)] または [LDAP Deny Group (LDAP 拒否グループ)] を使用して、Ansible Tower によって検索されるグループの数を削減する

  • Ansible Tower の LDAP ユーザー属性は、LDAP ユーザー属性マップで定義される

  • [LDAP User Flags By Group (グループ別 LDAP ユーザーフラグ)] を使用して、Ansible Tower の LDAP ユーザーフラグを設定する

  • LDAP 内のグループは、LDAP 組織マップ内の組織や LDAP チームマップ内のチームにマップされる

詳細については、こちらの Ansible Tower のページをご覧ください。 

Red Hat Ansible Automation

お問い合わせ

製品についてのお問い合わせはこちらから