構成ファイルを使用してログインする
GKE Identity Service を使用すると、サードパーティ ID プロバイダでのユーザー名とパスワードを使用して、コマンドラインから構成済みのクラスタにログインできます。クラスタ管理者が、gcloud CLI で認証する際に使用するログイン構成ファイルを共有する場合は、このページの手順に沿って操作します。クラスタへのアクセスの詳細については、クラスタにログインするためのアクセス方法を選択するをご覧ください。
ログイン ワークフロー
以下は、GKE Identity Service がログイン構成ファイルを使用して構成済みのクラスタにログインするために使用するワークフローです。具体的なフローについては、使用する ID プロバイダの種類によって異なります。
OIDC ワークフロー
OIDC プロバイダを使用する場合、クラスタ管理者は GKE Identity Service を ID プロバイダのクライアント アプリケーションとして登録し、各クラスタを設定します。必要に応じて、Kubernetes ロールベース アクセス制御(RBAC)を使用して、きめ細かいアクセス制御を追加できます。
クラスタにログインする方法は次のとおりです。
コマンドライン アクセス
- 認証:
gcloud anthos auth login
コマンドを実行し、OIDC ログイン認証情報を入力します。これにより、プロバイダから ID トークンを取得します。 - Kubeconfig の更新: 取得したトークンは kubeconfig ファイルに自動的に追加されます。
- クラスタにアクセスする:
kubectl
を使用してクラスタとやり取りします。Kubernetes API サーバーは、GKE Identity Service を使用してトークンを検証し、アクセスを認可します。
Google Cloud コンソールへのアクセス
- ログインの開始: Google Cloud コンソールからログインすると、ID プロバイダのログインページにリダイレクトされます。
- 認証: 認証情報を入力してログインします。
- クラスタにアクセスする: Google Cloud コンソールに移動して、クラスタ リソースを表示、管理します。
LDAP ワークフロー
LDAP プロバイダでは、クラスタ管理者がクラスタごとに GKE Identity Service を設定します。これには、LDAP クライアント認証情報も含まれます。クラスタ管理者は、必要に応じて Kubernetes ロールベース アクセス制御(RBAC)を使用して、詳細なアクセス制御を追加できます。
コマンドライン アクセス
- ログインの開始:
gcloud anthos auth login
コマンドを実行し、LDAP ログイン認証情報を入力します。 - トークンの生成: GKE Identity Service は LDAP サーバーにクエリを実行してユーザー属性を取得し、これらの属性を有効期間の短いトークン(STS)にパッケージ化します。LDAP 認証情報はローカルに保存されません。
- Kubeconfig の更新: STS トークンが
kubeconfig
ファイルに自動的に追加されます。 - クラスタへのアクセス:
kubectl
を使用してクラスタとやり取りします。Kubernetes API サーバーは、GKE Identity Service を使用してトークンを検証し、アクセスを認可します。 デフォルトでは、トークンは 1 時間後に期限切れになり、ユーザーは再度ログインする必要があります。
コマンドラインからクラスタ認証を行うには、クラスタ管理者が提供するログイン構成ファイルを使用して、gcloud
認証コマンドを実行する必要があります。
構成ファイルを取得する
gcloud CLI は、認証構成ファイルのファイル名とローカルマシン上の場所を想定しています。ユーザーの代わりに管理者がマシンにファイルをコピーすることもできます。ファイルを手動で指定し、マシンに保存する必要がある場合は、デフォルト値を使用して gcloud
認証コマンドを簡素化します。
認証構成ファイルをデフォルトの場所にコピーするには、次のコマンドを使用します。
Linux
mkdir -p $HOME/.config/google/anthos/ cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml
ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml
。
macOS
mkdir -p $HOME/Library/Preferences/google/anthos/ cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml
ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml
。
Windows
md "%APPDATA%\google\anthos" copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"
ここで、[AUTH_CONFIG_FILE] は認証構成ファイルの名前です。例: kubectl-anthos-config.yaml
。
別のファイル名や場所を使用する場合(たとえば、管理者が安全な URL でファイルを提供する場合など)、認証リクエストごとに --login-config
フラグを使用して指定できます。詳細は以下のセクションをご覧ください。
クラスタに対して認証を行う
gcloud
コマンドを実行してクラスタで認証します。
gcloud anthos auth login
コマンドを実行して認可フローを開始します。gcloud anthos auth login \ --cluster [CLUSTER_NAME] \ --user [USER_NAME] \ --login-config [AUTH_CONFIG_FILE_PATH] \ --login-config-cert [CA_CERT_PEM_FILE] \ --kubeconfig [CLUSTER_KUBECONFIG]
次のように置き換えます。
[CLUSTER_NAME](省略可)には、クラスタの名前を指定します。このフラグを省略すると、認証構成ファイルで指定されたクラスタから選択するよう求められます。
[USER_NAME](省略可)には、
kubeconfig
ファイルに格納されている認証情報のユーザー名を指定します。デフォルト値は[CLUSTER_NAME]-anthos-default-user
です。[AUTH_CONFIG_FILE_PATH](省略可)には、認証構成ファイルが保存またはホストされるカスタムパスまたは URL を指定します。ファイルがデフォルトの場所にある場合、このパラメータは省略できます。例:
--login-config /path/to/custom/authentication-config.yaml
[CA_CERT_PEM_FILE](省略可)には、CA からの PEM 証明書ファイルのパスを指定します。認証構成ファイルが安全にホストされている場合は、HTTPS 接続を使用してファイルにアクセスできます。例:
--login-config-cert my-cert.pem
[CLUSTER_KUBECONFIG](省略可)には、クラスタの
kubeconfig
ファイルへのカスタムパスを指定します。OpenID プロバイダから返される OIDC ID トークンは、kubeconfig
ファイルに格納されます。このフラグは、
kubeconfig
ファイルがデフォルト以外の場所にある場合に使用します。このフラグを省略すると、認証トークンがデフォルトの場所にあるkubeconfig
ファイルに追加されます。例:--kubeconfig /path/to/custom.kubeconfig
例:
特定のクラスタに対して認証します。
gcloud anthos auth login --cluster my-production-cluster
プロンプトを使用して、認証するクラスタを選択します。
gcloud anthos auth login
結果:
Please use the --cluster flag to specify a cluster from the list below: Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml 1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440 2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440 3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440 4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
ホストされている認証構成ファイルを使用します。
gcloud anthos auth login \ --cluster my-production-cluster \ --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \ --login-config-cert my-cert.pem
プロンプトを使用して認証オプションを選択します。詳しくは、認証方法を選択するをご覧ください。
ブラウザベースの同意画面で認証情報を入力します。成功すると、
kubectl
コマンドでクラスタの Kubernetes API サーバーでの認証に使用する ID トークンがkubeconfig
ファイルに保存されます。いずれかの
kubectl
コマンドを実行して、クラスタのリソースにアクセスし、認証が成功したことを確認します。たとえば、クラスタの nodes リソースにアクセスできる場合(このアクセスはクラスタ管理者によって構成されます)、次のコマンドを実行してクラスタのノードを確認できます。kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]
ユーザー アクセスに関する問題のトラブルシューティングについては、ユーザー アクセスの問題のトラブルシューティングをご覧ください。
認証方法を選択する
クラスタ管理者がクラスタ用に複数の ID プロバイダ(OIDC プロバイダや LDAP サーバーなど)を構成し、クラスタのデフォルト プロバイダを構成していない場合は、次の例に示すように、ログイン時に認証オプションの選択を求めるプロンプトが表示されます。
gcloud anthos auth login
Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel
Please enter your numeric choice:
1
Setting Preferred Authentication option to [LDAP Server]
数値を入力してから、上のクラスタに対する認証を行うの説明に従ってログインを続けます。
選択した認証オプションは、クラスタ管理者がこのクラスタのデフォルト プロバイダを変更するか、ユーザーが自分で変更するまで保持されます。おすすめの認証オプションを変更するには、--set-preferred-authentication
フラグを使用します。
gcloud anthos auth login --set-preferred-authentication
次の例のような結果が表示されます。任意の新しい認証オプションを選択できます。
Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel
Please enter your numeric choice:
2
Setting Preferred Authentication option to [OIDC]
SSH を使用してリモートマシンから認証を行う
リモートマシンに接続して SSH でクラスタを認証するには、認証構成ファイルがリモートマシン上にある必要があります。また、ローカルマシンから OpenID プロバイダにアクセスできる必要があります。
ローカルマシンで、次のコマンドを実行します。
ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]
次のように置き換えます。
[USER_NAME] と [REMOTE_MACHINE] は、SSH でのログインに使用される標準の値です。
[LOCAL_PORT] は、リモートマシンへのアクセスに使用するローカルマシン上の任意のオープンポートです。
[REMOTE_PORT] は、OIDC リダイレクト URL 用に構成したポートです。これは、認証構成ファイルの
kubectlRedirectURI
フィールドで確認できます。
SSH シェルで次のコマンドを実行して、認証を開始します。
gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]
ここで、[AUTH_CONFIG_FILE] はリモートマシン上の認証構成ファイルのパスです。
ローカルマシンのブラウザで、http://localhost:[LOCAL_PORT]/login にアクセスして OIDC ログインフローを完了します。
これで、リモートマシンの kubeconfig ファイルに、クラスタにアクセスするために必要なトークンが用意されます。
SSH シェルで、クラスタにアクセスできることを確認します。
kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes