バージョン 1.6

認証

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

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

このトピックは、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 プロバイダです。

gcloud CLI を使用して Kubernetes API サーバーを呼び出す

クラスタを認証するために gcloud anthos auth login コマンドを実行すると、リクエストが Kubernetes API サーバーに送信されます。

そのためには、OIDC ID トークンが kubeconfig ファイルに保存されている必要があります。GKE On-Prem は、Cloud SDK の gcloud CLI を使用し、kubeconfig ファイル内の ID トークンと他の OIDC 値をリクエストして取得します。

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

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

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