この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

Open ID Connect (OIDC)

概要

SUSE ObservabilityはOIDC認証プロバイダーを使用して認証できます。これを有効にするには、SUSE ObservabilityとOIDCプロバイダーの両方を設定して、相互に通信できるようにする必要があります。以下のセクションでは、それぞれの設定について説明します。

OIDCプロバイダーを設定します。

SUSE ObservabilityをOIDCを使用して認証するように設定する前に、OIDCプロバイダーでSUSE Observability用のクライアントを作成する必要があります。

Rancher

これはRancher 2.12以降でのみ機能します。 RancherをOIDCプロバイダーとして設定する必要があります

RancherのローカルクラスタにOIDCClientリソースを作成します:

apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
  name: oidc-observability
spec:
  tokenExpirationSeconds: 600
  refreshTokenExpirationSeconds: 3600
  redirectURIs:
    - "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"

RancherはクライアントIDとシークレットをそのステータスフィールドで利用可能にします:

apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
  name: oidc-observability
spec:
  tokenExpirationSeconds: 600
  refreshTokenExpirationSeconds: 3600
  redirectURIs:
    - "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"
status:
  clientID: <oidc-client-id>
  clientSecrets:
    client-secret-1:
      createdAt: "xxx"
      lastFiveCharacters: xxx

そして、シークレット値は次のように取得できます。

kubectl get secret <oidc-client-id> -n cattle-oidc-client-secrets -o jsonpath="{.data.client-secret-1}" | base64 -d

他のOIDCプロバイダー

クライアントに次の設定を使用します(OIDCプロバイダーによって必要な場合):

  • OIDC認可フローを使用します。これは認可コードフローとも呼ばれます。SUSE Observabilityは暗黙的な付与とハイブリッドフローをサポートしていないため、それらのサポートを有効にする必要はありません。

  • *リダイレクトURI*をSUSE ObservabilityのベースURLに`/loginCallback?client_name=StsOidcClient`を付加したものに設定します。例えば`https://stackstate.acme.com/loginCallback?client_name=StsOidcClient`。GoogleやAzure Entra IDなどの一部のOIDCプロバイダーでは、リダイレクトURIはクエリパラメータを含めて正確に一致する必要があります。その場合、URIを次のように設定します:https://stackstate.acme.com/loginCallback?client_name=StsOidcClient

  • SUSE Observabilityに少なくとも`openid`および`email`のスコープ、またはOIDCプロバイダーのこれらに相当するものへのアクセスを付与します。プロバイダーによっては、別の`profile`が存在する場合、さらにスコープが必要になることがありますので、それも含めてください。

  • SUSE ObservabilityはOIDCオフラインアクセスが必要です。一部のアイデンティティプロバイダーでは、通常は offline_access と呼ばれる追加のスコープが必要です。

この構成の結果、clientIdsecret が生成されるはずです。それらをコピーして、SUSE Observabilityの設定に備えておいてください。プロバイダーの*discoveryUri*もメモしておいてください。通常、これは同じ画面に表示されるか、ドキュメントに記載されています。

OIDC用にSUSE Observabilityを設定する

Rancher

これはRancher 2.12以降でのみ機能します。 RancherをOIDCプロバイダーとして設定する必要があります

SUSE ObservabilityのOIDCプロバイダーとしてRancherを設定するには、認証値にOIDCの詳細を追加する必要があります:

stackstate:
  authentication:
    rancher:
      clientId: "<oidc-client-id>"
      secret: "<oidc-secret>"
      baseUrl: "<rancher-url>"

次のフィールドを使用してRancherのOIDC設定を上書きおよび拡張できます:

  • discoveryUri - OIDC プロバイダーを発見するために使用できる URI。通常、OIDC プロバイダーでクライアントを作成する際に文書化されるか、返されます。

  • redirectUri - オプション(例には含まれていません):SUSE Observabilityのログインコールバックエンドポイントに到達可能なURI。デフォルトでは stackstate.baseUrl を使用して自動的に設定されますが、上書きすることもできます。これは /loginCallback パスを指す完全修飾 URL でなければなりません。

  • customParameters - OIDC プロバイダーにカスタムリクエストパラメータとして送信するオプションのキー/値ペアのマップ。特定の OIDC プロバイダーでは、デフォルトで送信されない追加のリクエストパラメータが必要です。

検証可能な SSL 証明書を使用しないセットアップのために TLS 検証を無効にする必要がある場合、アプリケーション設定で SSL チェックを無効にできます(本番環境では使用しないでください):

Non-HA セットアップの場合:

stackstate:
  components:
    server:
      extraEnv:
        open:
          CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false

HA (高可用性) セットアップの場合:

stackstate:
  components:
    api:
      extraEnv:
        open:
          CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false

HAデプロイメントでは、APIコンポーネントが設定を異なる方法で処理します。次のように使用してください:
=== Kubernetes

Kubernetes上でOIDC認証プロバイダーを使用するようにSUSE Observabilityを設定するには、ファイル`authentication.yaml`にOIDCの詳細とユーザーロールのマッピングを追加する必要があります。次に例を示します。

stackstate:
  authentication:
    oidc:
      clientId: "<client-id-from-oidc-provider>"
      secret: "<secret-from-oidc-provider>"
      discoveryUri: "https://oidc.acme.com/.well-known/openid-configuration"
      jwsAlgorithm: RS256
      scope: ["openid", "email"]
      jwtClaims:
        usernameField: email
        displayNameField: name
        groupsField: groups
      customParameters:
        access_type: offline

    # map the groups from OIDC provider
    # to the 4 standard roles in SUSE Observability (guest, powerUser, k8sTroubleshooter and admin)
    roles:
      guest: ["guest-group-in-oidc-provider"]
      powerUser: ["powerUser-group-in-oidc-provider"]
      admin: ["admin-group-in-oidc-provider"]
      k8sTroubleshooter: ["troubleshooter-group-in-oidc-provider"]

以下の手順に従って、SUSE ObservabilityをOIDCを使用して認証するように設定します:

  1. `authentication.yaml`に、OIDC認証プロバイダーの詳細を追加します(上記の例を参照):

    • clientId - SUSE Observability用に作成したOIDCクライアントのIDです。

    • secret - SUSE Observability用に作成したOIDCクライアントのシークレットです。

    • discoveryUri - OIDCプロバイダーを発見するために使用できるURIです。通常、OIDCプロバイダーでクライアントを作成する際に文書化されるか、返されます。

    • jwsAlgorithm - OIDCのデフォルトは`RS256`です。OIDCプロバイダーが異なるものを使用している場合、ここで設定できます。

    • scope - OIDCプロバイダーの設定で提供されるスコープと一致するか、またはそのサブセットである必要があります。SUSE Observabilityは、OIDCプロバイダーのユーザープロファイルのこれらの部分へのアクセスを要求するためにこれを使用します。

    • redirectUri - オプション(例には含まれていません):SUSE Observabilityのログインコールバックエンドポイントに到達可能なURI。デフォルトでは stackstate.baseUrl を使用して自動的に設定されますが、上書きすることもできます。これは /loginCallback パスを指す完全修飾 URL でなければなりません。

    • customParameters - OIDCプロバイダーにカスタムリクエストパラメータとして送信されるキー/バリューのペアのオプションのマップです。一部のOIDCプロバイダーは、デフォルトで送信されない追加のリクエストパラメータを必要とします。

    • jwtClaims -

      • usernameField - OIDCユーザープロファイルでユーザー名として使用されるべきフィールドです。デフォルトでは、これは preferred_username になりますが、多くのプロバイダーはこのフィールドを省略します。良い代替案は email です。

      • displayNameField - OIDCユーザープロファイルで表示名として使用されるべきフィールドです。デフォルトでは、これは name になります。

      • groupsField - SUSE Observabilityがユーザーのロール/グループを読み取るフィールドです。

  2. authentication.yaml`では、`roles.guestroles.powerUserroles.admin、または`roles.platformAdmin`の設定を使用して、OIDCから正しいSUSE Observabilityの対象にユーザーロールをマッピングします(上記の例を参照してください)。詳細については、デフォルトのSUSE Observabilityロールを参照してください。さらに多くのSUSE Observabilityロールを作成することもできます。RBACドキュメントを参照してください。

  3. ファイル`authentication.yaml`をSUSE Observabilityのインストール手順からの`values.yaml`ファイルと一緒に保存してください。

  4. 変更を適用するために、helm upgrade コマンドを実行してください:

     helm upgrade \
       --install \
       --namespace suse-observability \
       --values values.yaml \
       --values authentication.yaml \
     suse-observability \
     suse-observability/suse-observability

注意:

  • helm upgradeコマンドの最初の実行では、ポッドが再起動し、短時間の可用性の中断が発生する可能性があります。

  • すべての`authentication.yaml`実行に`helm upgrade`を含めてください。

  • 認証設定はKubernetesのシークレットとして保存されます。

セットアップガイド

外部シークレットを使用する

OIDCのシークレットが外部シークレットから取得されるべき場合は、これらの手順に従って、次のデータを入力してください:

kind: Secret
metadata:
   name: "<custom-secret-name>"
type: Opaque
data:
  oidc_client_id: <base64 of client id>
  oidc_secret: <base64 of secret>