|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
KeyCloak
概要
SUSE Observabilityは、認証プロバイダーとしてKeyCloakを使用して認証できます。SUSE ObservabilityとKeyCloakの両方を設定して、相互に通信できるようにする必要があります。以下のセクションでは、それぞれの設定について説明します。
認証フロー
Keycloak を認証プロバイダーとして使用する場合、SUSE Observability は OIDC (OpenID Connect) を使用してユーザーを認証します。以下の図は、認証フローを説明しています。
Configure KeyCloak
SUSE ObservabilityをKeyCloakを使用して認証するように設定する前に、KeyCloak認証サーバーに新しいクライアント設定を追加する必要があります。クライアントに必要な設定は次のとおりです:
-
クライアント ID - 接続するクライアントの ID で、これを
stackstateと名付けることをお勧めします。 -
クライアントプロトコル -
openid-connectに設定します。 -
アクセスタイプ -
confidentialに設定し、KeyCloak と SUSE Observability の間の接続を確立するために秘密が使用されるようにします。 -
標準フロー有効 -
Enabledに設定します。 -
暗黙のフロー有効 -
Disabledに設定します。 -
ルート URL - SUSE Observability のルート位置 (SUSE Observability 設定のベース URL として設定されているのと同じ値)
-
有効なリダイレクト URI - これは
/loginCallback/*である必要があります。 -
ベース URL - これは SUSE Observability のルート位置を指す必要があります。
SUSE Observability の設定
Kubernetes
SUSE ObservabilityをKeyCloakを使用して認証するように設定するには、KeyCloakの詳細とユーザーロールのマッピングをファイル`authentication.yaml`に追加する必要があります。次に例を示します。
stackstate:
authentication:
keycloak:
url: "https://keycloak.acme.com/auth"
realm: acme
authenticationMethod: client_secret_basic
clientId: stackstate
secret: "8051a2e4-e367-4631-a0f5-98fc9cdc564d"
jwsAlgorithm: RS256
# scope is optional. By default `openid`, `profile` and `email` are requested
#_ scope: ["openid", "profile", "email"]
# jwtClaims:
# usernameField: preferred_username
# groupsField: roles
# map the roles from Keycloak to the
# 3 standard subjects in SUSE Observability (guest, powerUser and admin)
roles:
guest: ["keycloak-guest-role-for-stackstate"]
powerUser: ["keycloak-power-user-role-for-stackstate"]
admin: ["keycloak-admin-role-for-stackstate"]
|
注意:
デフォルトでは、ユーザーを認証する際に、設定でカスタムスコープが指定されていない場合、KeyCloakへのリクエストはデフォルトスコープの |
以下の手順に従って、SUSE ObservabilityをKeyCloakを使用して認証するように設定します。
-
`authentication.yaml`に、KeyCloak認証プロバイダーの詳細を追加します(上記の例を参照)。KeyCloak特有の値は、KeyCloakのクライアント設定から取得できます:
-
url - KeyCloakインスタンスの基本URI
-
realm - 接続するKeyCloakのレルム
-
authenticationMethod - `client_secret_basic`に設定します。これは現在サポートされている唯一の値です。
-
clientId - KeyCloakで設定されたKeyCloakクライアントのID
-
secret - KeyCloakクライアントに付随する秘密鍵で、これを使用してこのクライアントをKeyCloakに認証します。
-
redirectUri - オプション:SUSE Observabilityのログインコールバックエンドポイントに到達可能なURI。デフォルトでは`stackstate.baseUrl`を使用して自動的に設定されますが、上書きすることもできます(`/loginCallback`パスを指す完全修飾URLである必要があります)。
-
jwsAlgorithm - これを`RS256`に設定します。これは現在サポートされている唯一の値です。
-
jwtClaims - オプション:ロールまたはユーザー名は、Keycloakのデフォルト動作とは異なる属性から取得できます。
-
usernameField - オプション:OIDCユーザープロファイルでユーザー名として使用されるべきフィールド。デフォルトでは、これは`preferred_username`になります。
-
groupsField - オプション:SUSE Observabilityは常に、デフォルトでのみ、
rolesKeycloakが提供するものを使用します。しかし、ここで指定されたフィールドからロールを追加することもできます。これは主に、Keycloakがサードパーティシステムからロール/グループをマッピングする際に便利です。
-
-
-
authentication.yaml`では、`roles.guest、roles.powerUser、または`roles.admin`の設定を使用して、KeyCloakから正しいSUSE Observabilityの対象にユーザーロールをマッピングします(上記の例を参照してください)。詳細については、デフォルトのSUSE Observabilityロールを参照してください。さらに多くのSUSE Observabilityロールを作成することもできます。RBACドキュメントを参照してください。 -
ファイル`authentication.yaml`をSUSE Observabilityのインストール手順からの`values.yaml`ファイルと一緒に保存してください。
-
変更を適用するために、helm upgrade コマンドを実行してください:
helm upgrade \ --install \ --namespace suse-observability \ --values values.yaml \ --values authentication.yaml \ suse-observability \ suse-observability/suse-observability
|
注意:
|
外部シークレットを使用する
KeyCloakのシークレットが外部シークレットから取得されるべき場合は、これらの手順に従って、次のデータを入力してください:
kind: Secret
metadata:
name: "<custom-secret-name>"
type: Opaque
data:
keycloak_client_id: <base64 of client id>
keycloak_secret: <base64 of secret>