[認証] ワークスペースを使用して、SaltStack Config のディレクトリ サービスが LDAP プロトコルを使用するように構成できます。このプロトコルは、Active Directory や Microsoft Azure などのサービスへの接続に使用されます。
SaltStack Config は、次のバック エンド プロセスを使用して LDAP ベースのシステムを認証します。
- プレビュー - 接続設定をプレビューすると、SaltStack Config によって LDAP サーバからユーザーとグループのサンプル リストが取得されるため、正しい構成パラメータを入力したかどうかを確認できます。
- ログイン - ユーザーが SaltStack Config ログイン フォームに認証情報を入力すると、バックエンド サーバは、その時点でのデータベース内の一致を確認します。その後、複数ステップの検索プロセスが開始され、一致が見つかるとユーザーが認証されます。この検索プロセスを使用した場合、有効なグループ内の有効なユーザーは、最初にログインするまで [ロール] ワークスペースに表示されません。
- バックグラウンド タスク - SaltStack Config は定期的にバックグラウンド ジョブを実行することにより、リンクされている各グループとユーザーをディレクトリ サービス接続内で検索して存在を確認します。グループまたはユーザーが削除されている場合、バックエンド サーバはデータベース内のそのリンクを無効にします。
- アーカイブされたグループとユーザー - ディレクトリ サービス接続から削除したすべてのグループは、アーカイブされます。これらのグループは非アクティブ化され、ユーザーはログインできませんが、[ロール] ワークスペースには引き続き表示され、選択できます。これは、以前は [ロール] ワークスペースに表示されていた削除済みのユーザーにも適用されます。
- ネストされたグループ - ネストされたグループを操作する場合は、親グループを有効にするとすべての子グループもデフォルトで有効になります。
LDAP 接続の構成
LDAP を構成するには、最初に接続を作成し、次に特定の LDAP ユーザーおよびグループについて SaltStack Config の認証を有効にします。グループまたはユーザーを有効にすると、ロールベースのアクセス制御 (RBAC) 設定を定義できます。
Active Directory や OpenLDAP など、ディレクトリ サービスに合わせてカスタマイズされたデフォルトの設定を使用したフィールドへの事前入力を選択できます。
LDAP ディレクトリ サービスを設定するには、次の手順に従います。
- (オプション)LDAP を構成する前に、サードパーティ製ツールを使用した接続とクエリのテストが役立つことがあります。Active Directory ユーザーの場合は、LDP または ADSI Edit を使用できます。Linux ユーザーの場合、推奨されるツールは
ldapsearch
です。注: これらのツールを使用したテストの詳細については、サポート センターの How to verify and troubleshoot a Directory Service connectionを参照してください。 - サイド メニューで [管理] >[認証] の順にクリックします。
- [作成] をクリックします。
- [構成タイプ] メニューの [LDAP] を選択します。
- (オプション)[設定] で、[デフォルトの事前入力] をクリックし、ドロップダウンからディレクトリ サービスを選択します。
選択に基づいてデフォルトのエントリがポピュレートされます。ただし、[ユーザー検索 DN] などの特定のエントリは、完全にはポピュレートされません。エントリがディレクトリ サービスのスキーマと一致していることを確認し、プレースホルダ テキストをサービスの適切な値に置き換える必要があります。
- LDAP 接続の情報を入力または確認します。
[基本]
フィールド 説明 名前 LDAP 接続の名前。これは表示専用の名前であるため、この認証バックエンドを他の認証バックエンドと区別しやすい任意の名前を入力することを推奨します。 ホスト FQDN または IP アドレスのいずれかの形式による LDAP ホスト サーバ アドレス。 ポート LDAP サーバが構成されているポート。デフォルトは、暗号化されない LDAP の場合は 389
、SSL 上の LDAP の場合は636
です。バックグラウンド同期 SaltStack Config は、ここで定義された一定の間隔(分)で、すべてのユーザーとグループを認証バックエンドに対して検証します。 SSL - SSL の有効化
-
RaaS サーバ設定で指定された証明書を使用して、SSL (Secure Sockets Layer) 経由で LDAP サーバに接続する場合に選択します。構成が指定されていない場合は、システム証明書ストアが SSL 接続の検証に使用されます。RaaS サーバの設定の詳細については、『Installing and Configuring
SaltStack Config』ガイドの
Set up SSL certificatesを参照してください。
重要: ベスト プラクティスとして、[SSL の有効化] を選択します。このオプションが選択解除されたままの場合、 SaltStack Config では安全でない接続を使用して情報がプレーン テキストで送信されます。
[認証]
フィールド 説明 認証ベース DN 基本 LDAP 識別名これは、グループとユーザーのクエリを実行する場所です(例:
DC=sse,DC=example,DC=com
)。注: LDAP 詳細ページには、次に示すように [Person Object Class]、 [Account Attribute Name]、 [Group Class]、 [Group Attribute Name]、および [Sync Scheduling] 用の個別の入力フィールドがあります。したがって、[ベース DN] フィールドにはこれらのオブジェクトを含めないでください。管理バインド DN LDAP サーバに対して構成される管理者 DN。SaltStack Config では、これを使用して、ユーザーとグループの検索に使用するディレクトリに対する認証を行います。構文 cn=Administrator,cn=Users,dc=example,dc=com
に基づいて入力します。管理バインド DN パスワード 管理者の個別のパスワード。
これは、暗号化されてデータベースに保存されます。プレーンテキストで保存されません。
認証バインド DN フィルタ フィルタが適用され、特定のユーザーが選択されます。この検索の結果は、SaltStack Config がディレクトリにバインドする際や、ユーザーに SaltStack Config へのアクセス権を付与する際に使用するユーザー DN です。これは、1 回の検索で返される結果の数を制限するときに有用です。
注: フィルタ構文は非常に複雑になる可能性があるため、ベスト プラクティスとしては、このフィールドに入力する前に LDP、ldapsearch
などのツールを使用して入力を検証し、必要な調整を行います。次のサンプル フィルタは、DevOps またはレベル II グループに属する、指定されたユーザー名に一致するアカウントのみを返します。
(&(objectclass=user)(sAMAccountName={username})(|(memberOf=CN=DevOps,OU=Groups,OU=TestCompanyHQ,DC=adtest,DC=com)(memberOf=LevelII,OU=Groups,DC=adtest,DC=com)))
事前入力済みのデフォルト値を使用する場合は、プレースホルダ テキストを、実際のディレクトリ サービスに対応する正しい値に置き換える必要があります。
注: フォレスト構造を構成する場合、このフィールドは空白のままにします。リモートの一意の ID 属性名 一意のエントリを識別するために使用される値の名前。これは、すべてのエントリに使用される一意の ID 属性です。Active Directory では、これは ObjectGUID
です。[グループ]
[ユーザー]
フィールド 説明 ユーザー検索 DN ユーザーの検索ベース。たとえば、Active Directory では cn=Users,dc=example,dc=com
、他のディレクトリ サービスではcn=people,cn=accounts,dc=example,dc=com
になります。ユーザーを検索する際のディレクトリ内の場所を示します。次の [ユーザー検索範囲] と組み合わせて使用します。ユーザー検索範囲 [ユーザー検索 DN] で指定されたベースからのディレクトリ検索の深さを示します。次の 4 つの値のいずれかを指定できます。[グループ検索範囲] で説明されている 4 つの値を参照してください。 ユーザー検索 DN フィルタ ディレクトリからユーザーを抽出するための検索フィルタ。これは通常 (objectClass=person)
ですが、一部の Active Directory 構成では(objectCategory=user)
になることもあります。Person クラス ログインを有効にするユーザーを含むディレクトリ サービスのクラス名。ほとんどのシステム(Active Directory を含む)では person
が使用されますが、一部のシステムではuser
またはinetOrgPerson
が使用されます。ユーザー ID 属性 ユーザー アカウント属性の一意の名前。Active Directory の場合、 sAMAccountName
。その他のサービスでは、多くの場合、uid
またはmemberUid
が使用されます。ユーザー メンバーシップ属性 ユーザー名を含むグループ エントリ内の属性の名前。考えられる例には、 member
、uniquemember
があります。 - 保存せずに設定をプレビューするには、[プレビューの更新] をクリックします。
接続のために選択されたユーザーとグループがプレビュー ウィンドウに表示されます。必要に応じて [グループ] または [ユーザー] タブを選択すると、サービスに関連付けられているユーザーとグループをプレビューできます。
- [保存] をクリックします。
LDAP 構成が保存されます。構成が適切かどうかを確認するには、テスト ユーザー アカウントから SaltStack Config へのログインを試行します。ログインできない場合は、トラブルシューティングを参照してください。
注: LDAP 構成の場合、指定されたグループとユーザーを含む接続設定が SaltStack Config によって保存されます。ディレクトリ全体が同期されるのではなく、定義した範囲内のグループとユーザーのみが取得されます。時間の経過につれて、LDAP ディレクトリの更新または再同期が必要になることがあります。たとえば、新しいユーザーを追加して SaltStack Config で有効にする場合は、ディレクトリを更新する必要があります。
グループおよびユーザーの有効化
LDAP 接続を設定した後は、ディレクトリ サービス グループを構成して、ユーザーが SaltStack Config にログインできるようにする必要があります。ディレクトリ サービス グループを構成するには、次の手順に従います。
- 認証ワークスペースで、必要な LDAP 構成を選択します。
- [グループ] タブを選択し、LDAP 構成から取得されたグループのリストを確認します。
注: 取得するグループの数が多い場合、ページの読み込みに最大 1 分かかる場合があります。
- SaltStack Config で、有効にするグループを選択します。
- [ユーザー] タブを選択し、LDAP 構成から取得されたグループのリストを確認します。
注: 取得するユーザーの数が多い場合、ページの読み込みに最大 1 分かかる場合があります。
- SaltStack Config で有効にするユーザーを選択します。
注: 有効なグループに含まれるユーザーは選択済みになっており、選択を解除することはできません。
- [保存] をクリックします。
これで、選択したグループに対してロールベースのアクセス コントロール (RBAC) を定義できます。ただし、選択したグループに含まれる個々のユーザーの設定をロール ワークスペースで管理できるのは初回ログイン後になります。グループまたはユーザーを削除するには、グループまたはユーザーの選択を解除し、[保存] をクリックします。
SaltStack Config の RBAC の詳細については、ユーザー ロールの定義方法を参照してください。
LDAP 接続のトラブルシューティング
問題 | 説明 | 解決方法 |
---|---|---|
接続のプレビューができない | グループおよびユーザーのプレビューができない場合、多くの場合には、LDAP サーバと SaltStack Config との接続に問題があるか、または LDAP 構成フォームに入力した内容が無効であることが原因です。 |
|
接続のプレビューで、ページの読み込みができない | ページの読み込みが 2 分以上停止した状態になっている場合は、RaaS サービスを再起動した後で構成を削除し、再構成してください。 |
|
その他の問題 | LDAP 接続を構成して保存した状況でユーザーがログインできない場合や、その他の問題が発生する場合は、拡張デバッグを有効にして |
拡張デバッグを有効にするには、次の手順に従います。
|
ログに表示される一般的なエラーは次のとおりです。
- 接続 (SSL) の設定が誤っています。SSL の設定を修正してください。
[raas.utils.validation.schemas.settings][DEBUG :546 ][Webserver:9096] Error while connecting to AD/LDAP Server. SSL connection issues: socket ssl wrapping error: [Errno 104] Connection reset by peer
- 管理者バインド DN のパスワードが誤っています。パスワードを確認して再入力してください。
[raas.utils.rpc ][DEBUG :284 ][Webserver:9095] Processed RPC request(129360670417695). Response: {'riq': 129360670417695, 'ret': None, 'error': {'code': 3004, 'message': 'Request validation failure.', 'detail': {'_schema': ['Credentials are not valid']}}, 'warnings': []}
- 事前入力されたデフォルトの認証バインド DN フィルタで競合が発生しています。フィールドを空のままにするか、
{{username}}
の代わりに{username}
を使用してください。注:このエラーは、LDAP 接続を保存した状況でユーザーがログインできない場合に、発生する可能性があります。
[var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG :903 ][Webserver:9096] Running _get_auth_backend_user with this search_filter: (&(objectclass=person)(sAMAccountName={username})) [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG :931 ][Webserver:9096] Could not find any user using '(&(objectclass=person)(sAMAccountName={username}))' as the search filter in the ldap backend under the ad-1 configuration. Trying remote_uid 'None' [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG :963 ][Webserver:9096] Could not find any user using '(&(objectClass=person)(objectGUID=None))' as the search filter in the ldap backend under the ad-1 configuration.