stackabletech / stackabletech/opa-operator

Active Directory: Support load-balanced LDAP servers

オープン
#718 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

type/bug
主要言語
Rust
スター
21
フォーク
5
平均マージ
12時間 44分
マージ済み PR(30日)
11

説明

Affected Stackable version

25.3

Affected OpenPolicyAgent version

irrelevant, user-info-fetcher

Current and expected behavior

Currently, we don't support connecting to LDAP servers that are behind DNS-based load balancing, instead just returning a kind-of-useless "not found in Kerberos database" error.

This is because we disable krb5's DNS canonicalization. Normally, it does a "canonicalization dance" for each request. Let's say we try to connect to ldap-lb. That would then be resolved to 1.2.3.4, which is what we do a TCP connection to. Then it would do a reverse DNS (PTR) query for the IP address (1.2.3.4), which returns the hostname for that specific replica (ldap-1). Then it'd use that hostname to build the Kerberos principal that we validate against (ldap/ldap-1@CORP.COM).

We disable DNS canonicalization, because it causes other problems in K8s (K8s pods have inconsistent PTR results, which would cause other similar issues depending on the order returned...). That makes krb5 use the specified hostname for the principal instead (ldap/ldap-lb@CORP.COM). The LDAP server doesn't have that principal, so we fail to authenticate. (The actual "Kerberos database" error is because the Kerberos KDC doesn't have any registered principal with that name.)

Possible solution

I honestly don't know.

We can't just blanket-enable canonicalization, because of the aforementioned K8s issues. But we also need to handle this in some way. Maybe we'll need some flag on which krb5.conf to generate, but that feels like a slippery road to start walking.

Additional context

No response

Environment

No response

Would you like to work on fixing this bug?

None

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ファイル、テスト、エントリポイントは指定されていません。まず krb5.conf の生成と user-info-fetcher の LDAP/Kerberos 接続動作を追跡し、その後、影響を受ける Stackable 25.3 セットアップで DNS のロードバランシングを再現してください。Kubernetes の PTR 関連の障害を再発させずに、ロードバランシングされた LDAP 認証が機能すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
kubernetes
領域
authentication
issue の種類
バグ
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
20/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。