> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# JWT 認証の設定

> Console から ClickHouse Cloud サービスごとに JWT（JWKS）認証プロバイダを設定する方法

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>ベータ</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>ベータ機能</span>
        </a>;
};

export const VersionBadge = ({minVersion}) => <div className="versionBadge">
    <div className="versionIcon" style={{
  marginRight: "8px",
  marginTop: "4px"
}}>
      <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M5 14C5.82843 14 6.5 13.3284 6.5 12.5C6.5 11.6716 5.82843 11 5 11C4.17157 11 3.5 11.6716 3.5 12.5C3.5 13.3284 4.17157 14 5 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M5 5C5.82843 5 6.5 4.32843 6.5 3.5C6.5 2.67157 5.82843 2 5 2C4.17157 2 3.5 2.67157 3.5 3.5C3.5 4.32843 4.17157 5 5 5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M13 10.5C13.8284 10.5 14.5 9.82843 14.5 9C14.5 8.17157 13.8284 7.5 13 7.5C12.1716 7.5 11.5 8.17157 11.5 9C11.5 9.82843 12.1716 10.5 13 10.5Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
        <path d="M11.5 9H9.5C9.03426 9 8.57493 8.89157 8.15836 8.68328C7.74179 8.475 7.37944 8.17259 7.1 7.8L5 5V11" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.25" />
      </svg>
    </div>
    バージョン {minVersion} 以降で使用できます
  </div>;

export const EnterprisePlanFeatureBadge = ({feature = 'この機能', support = false, linking_verb_are = false}) => {
  return <div className="enterprisePlanFeatureContainer">
            <div className="enterprisePlanFeatureBadge">
                Enterpriseプランの機能
            </div>
            <div>
                <p>{feature} {linking_verb_are ? 'は' : 'は'} Enterpriseプランで利用できます。{support ? `この機能を有効にするには、サポートにお問い合わせください。` : 'アップグレードするには、Cloud Console のプランページにアクセスしてください。'}</p>
            </div>
        </div>;
};

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

<BetaBadge />

<VersionBadge minVersion="26.4" />

<EnterprisePlanFeatureBadge feature="カスタムアイデンティティプロバイダを使用したJWT認証" />

<Tip>
  このガイドでは、Cloud Console で JWKS プロバイダを設定する方法を説明します。JWT の生成方法や構造 (必須のクレーム、ロールおよび権限付与のクレーム、一時ユーザーの仕組みを含む) については、[JWT Authentication](/docs/ja/concepts/features/security/external-authenticators/jwt) リファレンスを参照してください。
</Tip>

ClickHouse Cloud では、独自の JSON Web Key Set (JWKS) エンドポイントに対して検証された JSON Web Token (JWT) を使用して、サービスへの接続を認証できます。データベース認証情報を管理する代わりに、アイデンティティプロバイダが短期間有効なトークンを発行し、ClickHouse は設定した JWKS URL で公開されている公開鍵を使用してそのトークンを検証します。

ClickHouse Cloud Console の **Settings → Security** から、サービスごとにこれらの JWKS プロバイダを設定できます。

<div id="before-you-begin">
  ## 始める前に
</div>

サービスの JWT プロバイダを設定するには、次の要件を満たす必要があります。

* **Enterprise** プランの組織。
* **ClickHouse バージョン 26.4 以降**を実行しているサービス。
* サービスに対する `control-plane:service:manage` 権限を持つロール (例: **Admin** または **Service admin**) 。この権限を持たないメンバーには、このセクションは閲覧専用として表示されます。
* 少なくとも 1 つの **RSA** 鍵 (`RS256`) 、またはバージョン 26.8 以降のサービスでは **EC** 鍵 (`ES256`、`ES384`、`ES512`) をパブリッシュする、パブリックから到達可能な **HTTPS** JWKS URL。

<Note>
  JWKS ベースのプロバイダは **RSA** 鍵、およびバージョン 26.8 以降では P-256、P-384、P-521 曲線上の **EC** 鍵を受け入れます。JWKS ドキュメントには他の種類の鍵を含めることができますが、使用可能な鍵が少なくとも 1 つ必要です。
</Note>

<div id="how-it-works">
  ## 仕組み
</div>

クライアント (アイデンティティプロバイダまたはアプリケーション) は JWT を生成し、**秘密鍵**で署名します。トークンは、想定される[トークン形式](/docs/ja/concepts/features/security/external-authenticators/jwt#token-claims)に従う必要があります。ClickHouse は、JWKS URL で公開されている**公開鍵**を使用してトークンを検証します。

1. ClickHouse はトークンの `kid` (鍵 ID) ヘッダーを読み取り、JWKS ドキュメントから一致する鍵を選択します。
2. その公開鍵を使用してトークンの署名を検証し、`iss` (発行者) および `aud` (オーディエンス) クレーム をプロバイダー設定と照合します。
3. 検証に成功すると、接続は一時ユーザーとして実行されます。アクセス権はトークンの `clickhouse:grants` および `clickhouse:roles` クレーム から取得され、権限上限 (`default` ユーザー) によって制限されます。詳細は[アクセス権](/docs/ja/concepts/features/security/external-authenticators/jwt#access-rights)を参照してください。

ClickHouse はプロバイダーの追加または更新時に JWKS URL を検証して取得するため、設定が不適切な URL や到達できない URL は事前に拒否されます。

<div id="add-a-jwt-provider">
  ## JWT プロバイダを追加する
</div>

<Steps>
  <Step title="サービスのセキュリティ設定を開く" id="open-security-settings">
    サービスに移動し、**Settings** を開いて **Security** セクションまでスクロールします。**JWT 認証** カードを見つけます。

    <Image img="https://mintcdn.com/private-7c7dfe99/-6hzQ2QWO_HW75mL/images/cloud/security/jwt/jwt-section.png?fit=max&auto=format&n=-6hzQ2QWO_HW75mL&q=85&s=79179b401f3a527316bffe67be424977" size="lg" alt="サービスのセキュリティ設定内の JWT 認証 セクション" force width="1850" height="422" data-path="images/cloud/security/jwt/jwt-section.png" />
  </Step>

  <Step title="プロバイダのフライアウトを開く" id="open-flyout">
    **Set up JWT providers** を選択します (既存のプロバイダがある場合は **Manage JWT providers**) 。フライアウトが開き、新しいプロバイダのフォームが表示されます。
  </Step>

  <Step title="プロバイダの詳細を入力する" id="fill-provider-details">
    プロバイダのフォームに入力し、**Save** を選択します。

    | フィールド                | 説明                                                                                                                        |
    | -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
    | **Name**             | このサービス上で一意となるプロバイダ名です。作成後は変更できません。                                                                                        |
    | **Issuer**           | 受信トークンに期待される `iss` クレーム。                                                                                                  |
    | **Audience**         | 受信トークンに期待される `aud` クレーム。                                                                                                  |
    | **JWKS URL**         | トークン署名の検証に使用する公開鍵を公開する HTTPS 公開 URL。                                                                                      |
    | **Roles claim** (任意) | ClickHouse ロールの取得元となるトークン クレーム。デフォルトの クレーム 名 `clickhouse:roles` を使用する場合は空欄のままにします。トークンで指定するロールは、あらかじめサービス上に存在している必要があります。 |
  </Step>

  <Step title="必要に応じてプロバイダを追加する" id="add-more-providers">
    追加のプロバイダを設定するには、**Add another provider** を使用します。1 つのサービスには、最大 5 つの JWT プロバイダを設定できます。
  </Step>
</Steps>

<Warning>
  JWT プロバイダを削除すると、そのプロバイダ用に発行されたトークンは直ちに受け付けられなくなり、それらのトークンで認証しているワークロードは動作しなくなります。
</Warning>

<div id="limits">
  ## 制限事項
</div>

* 1サービスあたり最大**5つ**のJWTプロバイダを設定できます。
* JWKSプロバイダでは、**RSA** 鍵 (`RS256`) に加え、バージョン26.8以降は **EC** 鍵 (`ES256`、`ES384`、`ES512`) も使用できます。
* JWKS URLはPublic HTTPSエンドポイントである必要があります。Private、内部、またはリンクローカルアドレスは拒否されます。

<div id="related">
  ## 関連情報
</div>

* [JWT Authentication](/docs/ja/concepts/features/security/external-authenticators/jwt) — トークンのクレーム、一時ユーザー、クライアントの使用方法。
