2.3. OAuth 2.0 認証および承認
本リリースには、OAuth 2.0 トークンベースの認証および承認に対して改良された以下の機能が含まれています。
セッションの再認証
AMQ Streams の OAuth 2.0 認証は Kafka ブローカーの セッションの再認証 をサポートするようになりました。これは、Kafka クライアントと Kafka ブローカー間の認証された OAuth 2.0 セッションの最大期間を定義します。セッションの再認証は、高速のローカル JWT とイントロスペクションエンドポイントの両方のタイプでサポートされます。
セッションの再認証を設定するには、Kafka ブローカーの OAuth 2.0 設定に新しい maxSecondsWithoutReauthentication オプションを使用します。
特定のリスナーでは、maxSecondsWithoutReauthentication では以下を行うことができます。
- セッションの再認証を有効にすることができます。
- Kafka クライアントと Kafka ブローカー間の認証されたセッションの最大期間を秒単位で設定できます。
1 時間後にセッション再認証する設定の例
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
spec:
kafka:
listeners:
#...
- name: tls
port: 9093
type: internal
tls: true
authentication:
type: oauth
maxSecondsWithoutReauthentication: 3600
# ...
認証されたセッションは、設定されたmaxSecondsWithoutReauthentication を超えた場合や、アクセストークンの有効期限に達した場合に閉じられます。その後、クライアントは再度承認サーバーにログインし、新しいアクセストークンを取得して、Kafka ブローカーへ再認証する必要があります。これにより、既存の接続上で新しい認証セッションが確立されます。
次に再認証が必要な場合、クライアントによって試行された操作 (再認証以外) によって、ブローカーは接続を終了します。
以下を参照してください。「Kafka ブローカーのセッション再認証」および「Kafka ブローカーの OAuth 2.0 サポートの設定」
JWKS キーの更新間隔
高速のローカル JWT トークン検証を使用するように Kafka ブローカーを設定する場合に、外部リスナー設定に jwksMinRefreshPauseSeconds オプションを設定できるようになりました。これは、承認サーバーによって発行される JSON Web Key Set (JWKS) 公開鍵の更新をブローカーが試行する最小間隔を定義します。
本リリースでは、Kafka ブローカーは不明な署名キーを検出した場合に、通常の更新スケジュールを待たずに JWKS キーの更新を即座に試行します。
JWKS キーの更新を実行する間隔が 2 分間である設定の例
listeners:
#...
- name: external2
port: 9095
type: loadbalancer
tls: false
authentication:
type: oauth
validIssuerUri: <https://<auth-server-address>/auth/realms/external>
jwksEndpointUri: <https://<auth-server-address>/auth/realms/external/protocol/openid-connect/certs>
userNameClaim: preferred_username
tlsTrustedCertificates:
- secretName: oauth-server-cert
certificate: ca.crt
disableTlsHostnameVerification: true
jwksExpirySeconds: 360
jwksRefreshSeconds: 300
jwksMinRefreshPauseSeconds: 120
enableECDSA: "true"
JWKS キーの更新スケジュールは、jwksRefreshSeconds オプションに設定されます。不明な署名キーが検出されると、JWKS キーの更新は更新スケジュールとは別にスケジュールされます。最後の更新からの経過時間が jwksMinRefreshPauseSeconds で指定される間隔に達するまで、更新は開始されません。
jwksMinRefreshPauseSeconds のデフォルト値は 1 です。
「Kafka ブローカーの OAuth 2.0 サポートの設定」を参照してください。
Red Hat Single Sign-On からの付与 (Grants) の更新
Red Hat Single Sign-On により、OAuth 2.0 のトークンベースの承認に新たな設定オプションが追加されました。Kafka ブローカーの設定時に、Red Hat SSO Authorization Service からの付与 (Grants) の更新に関連する以下のオプションを定義できます。
-
grantsRefreshPeriodSeconds:連続する付与 (Grants) 更新実行の間隔。デフォルト値は60です。0以下に設定されている場合、付与 (Grants) の更新は無効になります。 -
grantsRefreshPoolSize:アクティブなセッションの付与 (Grants) を並行して取得できるスレッドの数。デフォルト値は5です。
「OAuth 2.0 トークンベース承認の使用」および「OAuth 2.0 承認サポートの設定」を参照してください。
Red Hat Single Sign-On でのパーミッション変更の検出
本リリースでは、keycloak (Red Hat SSO) 承認によってアクティブなセッションのパーミッションの変更が定期的にチェックされるようになりました。ユーザーの変更とパーミッション管理の変更がリアルタイムで検出されるようになりました。