認証

GKE On-Prem は、コマンドラインを使用してユーザー クラスタに対する認証を行うための OpenID Connect(OIDC)をサポートしています。次のトピックをご覧ください。

Google Cloud Console 経由でログインする場合、GKE On-Prem で Kubernetes サービス アカウントの署名なしトークンを使用できます。ログインをご覧ください。

このトピックは、OAuth 2.0OpenID Connect について理解していることを前提としています。また、OpenID 認証のスコープクレームについて理解している必要もあります。

概要

OIDC を使用すると、組織内の標準的な手順に従って Kubernetes クラスタへのアクセスを管理し、従業員アカウントの作成、有効化、無効化を行うことが可能です。また、組織のセキュリティ グループを使用して、Kubernetes クラスタやクラスタ内の特定のサービスへのアクセスを構成することもできます。

  • ユーザーは、ユーザー名とパスワードを入力して OpenID プロバイダにログインします。

  • OpenID プロバイダによりユーザーの ID トークンが発行されます。トークンはプロバイダによって署名されます。

  • アプリケーションがユーザーに代わって動作し、Kubernetes API サーバーに HTTPS リクエストを送信します。アプリケーションは、リクエスト ヘッダーにユーザーの ID トークンを含めます。

  • Kubernetes API サーバーにより、プロバイダの証明書を使用してトークンが検証されます。

企業で Active Directory フェデレーション サービス(ADFS)サーバーが実行されている場合、ADFS サーバーは OpenID プロバイダとして機能します。もう一つの方法は、OpenID プロバイダとしてサードパーティを使用することです。たとえば、Google、Microsoft、Facebook、Twitter はすべて OpenID プロバイダです。

OIDC の Kubectl プラグインを使用した Kubernetes API サーバーの呼び出し

通常、ユーザーが kubectl コマンドを入力すると、kubectl は Kubernetes API サーバーを呼び出します。

これが機能するには、ユーザーの ID トークンが kubeconfig ファイルに含まれている必要があります。GKE On-Prem には、トークンと他の OIDC 値を kubeconfig に含めるための Kubectl Plugin for OIDC が用意されています。

Kubernetes API サーバーと ID トークン

kubectl がユーザーに代わって Kubernetes API サーバーを呼び出すと、API サーバーによって OpenID プロバイダの公開証明書を使用したトークンの検証が行われます。次に、API サーバーはトークンを解析して、ユーザーの ID とセキュリティ グループを確認します。

API サーバーは、ユーザーのセキュリティ グループをクラスタのロールベースのアクセス制御(RBAC)ポリシーと比較することで、この特定の呼び出しを承認します。