|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
k3sトークン
K3sは、ノード参加プロセスを保護し、データストアに保存される機密情報を暗号化するためにトークンを使用します。トークンは、参加するノードに対してクラスターを認証し、同時にノードをクラスターに認証します。
トークン形式
K3sトークンは、安全な形式または短い形式のいずれかで指定できます。安全な形式が推奨されます。これは、クライアントが資格情報を送信する前に、参加するクラスターのアイデンティティを認証できるようにするためです。
セキュリティ
安全なトークン形式(時折「フル」トークンと呼ばれる)は、以下の部分を含みます:
<prefix><cluster CA hash>::<credentials>
-
prefix: トークン形式を識別する固定の`K10`プレフィックス -
cluster CA hash:参加ノードにサーバーを認証するために使用されるクラスターのサーバーCA証明書のハッシュ。-
自己署名CA証明書の場合、これはディスクに保存されたPEM形式の証明書のSHA256ハッシュ値です。
-
カスタムCA証明書の場合、これはルート証明書のDERエンコーディングのSHA256ハッシュ値であり、一般的に証明書フィンガープリントとして知られています。
-
-
credentials:参加ノードをクラスターに認証するために使用されるユーザー名とパスワード、またはベアラートークン。
TLSブートストラッピング
安全なトークンが指定されている場合、参加ノードは資格情報を送信する前に接続しているサーバーのアイデンティティを検証するために以下の手順を実行します:
-
TLS検証が無効になっている場合、参加するサーバーの`/cacerts`からCAバンドルをダウンロードします。
-
上記のようにCA証明書のSHA256ハッシュを計算します。
-
計算されたSHA256ハッシュをトークンのハッシュと比較します。
-
ハッシュが一致する場合、サーバーによって提示された証明書がサーバーのCAバンドルによって検証できることを確認します。
-
サーバー証明書が有効な場合、トークンの種類に応じて基本認証またはベアラートークン認証を使用してクラスターに参加するための資格情報を提示します。
トークンの種類
K3sは3種類のトークンをサポートしています。デフォルトではサーバートークンのみが利用可能であり、追加のトークンタイプは管理者によって構成または作成する必要があります。
| タイプ | CLIオプション | 環境変数 |
|---|---|---|
サーバ |
|
|
エージェント |
|
|
ブートストラップ |
|
|
サーバ
クラスター内の最初のサーバーを起動する際にトークンが提供されない場合、ランダムなパスワードで1つが作成されます。サーバートークンは常に`/var/lib/rancher/k3s/server/token`に安全な形式で書き込まれます。
サーバートークンは、サーバーノードとエージェントノードの両方をクラスターに参加させるために使用できます。サーバートークンにアクセスできる人は、実質的にクラスターへの完全な管理者アクセスを持っています。このトークンは慎重に保護する必要があります。
サーバートークンは、ブートストラップデータとして知られるデータストアに永続化される機密情報を暗号化するためのhttps://en.wikipedia.org/wiki/PBKDF2[PBKDF2]パスフレーズとしても使用されます。ブートストラップデータは、新しいサーバーノードをセットアップしたり、スナップショットから復元したりするために不可欠です。この理由から、トークンはクラスターのデータストア自体と一緒にバックアップする必要があります。
|
カスタムCA証明書が使用されていない限り、クラスター内の最初のサーバーを起動する際には、短い(パスワードのみ)トークン形式のみが使用できます。これは、サーバーが自己署名のクラスターCA証明書を生成するまで、クラスターCAハッシュを知ることができないためです。 |
カスタムCA証明書の使用に関する詳細は、`k3s certificate`ドキュメントを参照してください。
クラスターのバックアップに関する詳細は、バックアップと復元ドキュメントを参照してください。
k3sトークン
k3sトークンCLIツールは、以下を処理します:
-
`kubeadm token`ブートストラップトークンと同じ生成および検証コードを使用したブートストラップトークンのライフサイクル。両方のCLIは似ています。
-
サーバートークンのローテーション
NAME: k3s token - Manage tokens USAGE: k3s token command [command options] [arguments...] COMMANDS: create Create bootstrap tokens on the server delete Delete bootstrap tokens on the server generate Generate and print a bootstrap token, but do not create it on the server list List bootstrap tokens on the server rotate Rotate original server token with a new token OPTIONS: --help, -h show help
k3s token create [token]
新しいトークンを作成します。`[token]`は、`k3s token generate`によって生成された実際の書き込むトークンです。トークンが指定されていない場合は、ランダムなものが生成されます。
クラスターCAハッシュを含む安全な形式のトークンがstdoutに書き込まれます。このコマンドの出力は保存する必要があります。トークンの秘密部分は再表示できません。
| フラグ | 説明 |
|---|---|
`--data-dir`の値 |
状態を保持するフォルダー(デフォルト:/var/lib/rancher/k3sまたはrootでない場合は${HOME}/.rancher/k3s) |
`--kubeconfig`の値 |
接続先のサーバー[$KUBECONFIG] |
`--description`の値 |
このトークンの使用方法に関するわかりやすい説明 |
`--groups`の値 |
このトークンが認証に使用される際に、認証対象として扱われる追加のグループ。(デフォルト:デフォルト: "system:bootstrappers:k3s:default-node-token") |
`--ttl`の値 |
トークンが自動的に削除されるまでの期間(例:1秒、2分、3時間)。「0」に設定すると、トークンは決して期限切れになりません(デフォルト:24時間0分0秒) |
`--usages`の値 |
このトークンの使用方法を説明します。(デフォルト: "署名、認証") |
k3s token delete
1つ以上のトークンを削除します。完全なトークンを提供することも、トークンIDのみを提供することもできます。
| フラグ | 説明 |
|---|---|
`--data-dir`の値 |
状態を保持するフォルダー(デフォルト:/var/lib/rancher/k3sまたはrootでない場合は${HOME}/.rancher/k3s) |
`--kubeconfig`の値 |
接続先のサーバー[$KUBECONFIG] |
k3s token generate
ランダムなブートストラップトークンを生成します。
トークンを生成するためにこのコマンドを使用する必要はありません。`[a-z0-9]{6}.[a-z0-9]{16}`の形式で、最初の部分がトークンID、2番目の部分が秘密である限り、自分で行うことができます。
| フラグ | 説明 |
|---|---|
`--data-dir`の値 |
状態を保持するフォルダー(デフォルト:/var/lib/rancher/k3sまたはrootでない場合は${HOME}/.rancher/k3s) |
`--kubeconfig`の値 |
接続先のサーバー[$KUBECONFIG] |
k3s token list
ブートストラップトークンのリストを表示し、そのID、説明、および残りの有効期限を示します。
| フラグ | 説明 |
|---|---|
`--data-dir`の値 |
状態を保持するフォルダー(デフォルト:/var/lib/rancher/k3sまたはrootでない場合は${HOME}/.rancher/k3s) |
`--kubeconfig`の値 |
接続先のサーバー[$KUBECONFIG] |
`--output`の値 |
出力形式。有効なオプション: テキスト、JSON(デフォルト: "テキスト") |
k3s token rotate
|
バージョンゲート
2023年10月のリリース(v1.28.2+k3s1、v1.27.7+k3s1、v1.26.10+k3s1、v1.25.15+k3s1)から利用可能。 |
元のトークンを新しいトークンに置き換えます。このコマンドを実行した後、すべてのサーバーと、元のトークンで参加したエージェントは、新しいトークンで再起動する必要があります。
新しいトークンを指定しない場合は、トークンが自動的に生成されます。
| フラグ | 説明 |
|---|---|
`--data-dir`の値 |
状態を保持するフォルダー(デフォルト:/var/lib/rancher/k3sまたはルートでない場合は${HOME}/.rancher/k3s) |
`--kubeconfig`の値 |
接続先のサーバー[$KUBECONFIG] |
`--server`の値 |
接続先のサーバー(デフォルト: "https://127.0.0.1:6443") [$K3S_URL] |
`--token`の値 |
サーバーまたはエージェントをクラスターに参加させるために使用される既存のトークン [$K3S_TOKEN] |
`--new-token`の値 |
既存のトークンを置き換える新しいトークン |
|
回転前に取得されたスナップショットは、クラスターを復元する際に古いトークンを必要とします。 |