K10は、Kubernetes専用のデータ管理プラットフォームです。運用時のバックアップ/リストア、災害対策DRや開発したKubernetesアプリケーションのKubernetes環境間での移動(モビリティ)を実現する、使いやすくスケーラブルで安全なシステムです。この記事では、Okta、Google、Dex、Keycloak、Ping IDなどの有名なプロバイダーとのOpenID接続(OIDC)ベースの認証を有効にすることで、より使いやすく、安全にご利用いただく方法をご紹介します。
OIDCベースの認証を使用してKubernetes環境にアプリを既にデプロイしている場合、使い慣れた認証ワークフローを使用してK10をデプロイし、便利にご利用いただけます。
またOIDCを初めて使用する企業も、このブログのように、OIDCを簡単に採用できます。いずれの場合も、OIDCを使用してK10などのアプリを展開する場合、きめ細かいロールベースのアクセス制御を使用できることは非常に魅力的です。
今回の投稿では以下を紹介しています:
- OpenID接続(OIDC)
- 認証コードフロー
- Okta開発者アカウントを使用してOIDCプロバイダーをセットアップするためのチュートリアル、およびOIDCを使用してK10をセットアップするためのチュートリアル。
OpenIDConnect-OIDC
OpenID Connect 1.0は、OAuth2.0プロトコルの上のシンプルなIDレイヤーです。これにより、クライアントは、認証サーバーによって実行された認証に基づいてエンドユーザーのIDを確認し、連携のためにRESTのような方法でエンドユーザーに関する基本的なプロファイル情報を取得できます。
認証フロー
この図は、ユーザーがK10のダッシュボードにアクセスした際の一連のイベントを示しています。フローに関係するエンティティ(ブラウザ、K10の認証サービス、およびOIDCプロバイダー)を示しています。
- ブラウザからのすべてのリクエストは、K10の認証サービスに到達します。ブラウザからの最初のリクエストは、トークンを含むCookieなしで 到達 します。このサービスは、ユーザーを認証されていないとみなし、OIDCプロバイダーにリダイレクトします。
- K10の認証サービスは、プロバイダーの/authorizeエンドポイントを呼び出します。K10の認証サービスのコールバックURLはhttps://example.com/k10/auth-svc/v0/oidc/redirectです。これは/authorizeHTTPリクエストに含まれます。
- OIDCプロバイダーは、K10のコールバックURLをOIDCプロバイダーに登録されているものと比較します。それらが一致する場合にのみ、OIDCプロバイダーはフローを続行し、ログインウィンドウを表示します。
- リクエストのコールバックとプロバイダーに登録されているコールバックが一致しない場合、OIDCプロバイダーはリダイレクトURLが一致しなかったことを示すエラーでK10の認証サービスにリダイレクトします。
- 一致した場合、K10の認証サービスがJSON Web Token(JWT)の要求を行うときにプロバイダーから返された「コード」を使用します。
- 次に、OIDCプロバイダーはJWTでK10の認証サービスに応答します。
- 次に、K10の認証サービスがトークンの検証を要求します。検証が成功すると、ユーザーはK10のダッシュボードにリダイレクトされます。
- ブラウザからの後続のリクエストは、リクエスト内のトークンを使用してK10の認証サービスに到達します。このトークンは有効であるため、認証サービスはOIDCプロバイダーにリダイレクトしなくなります。これは、トークンの有効期限が切れるまで続きます。
OIDCプロバイダーをセットアップする
このチュートリアルでは、Okta開発者アカウントを作成する必要があります。アカウントの作成については、https://developer.okta.com/を参照してください。
開発者アカウントにログインして「Application」セクションに移動すると、次のようなページが表示されます。「Add Application」をクリックします。
次に、アプリケーションの種類を「Web」として選択し、「Next」をクリックします。
次のページには、デフォルト値のアプリケーション設定が表示されます。
- このアプリケーションの名前を設定します。
- 「Login redirect URIs」をhttp://127.0.0.1:8080/k10/#/に設定します。
- 「Authorization code」チェックボックスが有効になっていることを確認します。
- 「Done」をクリックしてアプリケーションを作成します
注:このチュートリアルでは、「ログインリダイレクトURI」フィールドをhttp://127.0.0.1:8080/k10/#に設定する必要があります。
アプリケーションの作成後、「Client ID」と「Client sercret」を書き留めます。これは、次のセクションでK10をインストールするときに使用します。
OIDCを使用してK10をセットアップする
このセクションで使用されるツールは次のとおりです。
- kubectl —Kubernetesクライアント
- helm v3
helmを使用してインストールする際の、Kasten K10に関するドキュメントはここ参照してください。このチュートリアルを開始する前に、上記の前提条件のツールを構成してください。
KastenのK10 Helmチャートを使用して、Helm v3でKubernetesクラスターにK10をインストールします。
helm repo update
helm repo add kasten https://charts.kasten.io/
K10アプリケーションをデプロイするための名前空間を作成します。
kubectl create namespace kasten-io
以下のコマンドを使用して、kasten-io名前空間にK10をインストールします
このチュートリアルを実行している間、次のフィールドを変更する必要があります。
- プロバイダーのURLは、Okta開発者アカウントのURLを指している必要があります。
- https://<アカウント>.okta.com/oauth2/default
- Oktaのセットアップに関する前のセクションで書き留めたクライアントIDとクライアントシークレット
- 残りのフィールドは変更しなくとも問題ありません。
helm install k10 kasten/k10 --namespace=kasten-io \
--set auth.oidcAuth.enabled=true \
--set auth.oidcAuth.providerURL="https://dev-270657.okta.com/oauth2/default" \
--set auth.oidcAuth.redirectURL="http://127.0.0.1:8080" \
--set auth.oidcAuth.scopes="profile email" \
--set auth.oidcAuth.prompt="select_account" \
--set auth.oidcAuth.clientID="0oa64t6tmtpMTOkZH5d7" \
--set auth.oidcAuth.clientSecret="RCXC9yLY0nrmNOZMmvuJn4Geo6Ld8vnkaHe5ee0f" \
--set auth.oidcAuth.usernameClaim="email"
Helm installは複数のデプロイメントとサービスを作成し、次のコマンドでインストールを検証できます。
kubectl get pods -n kasten-io -watch
ポッドが実行状態になったら、次のコマンドを実行した後、http://127.0.0.1:8080/k10/#/でK10ダッシュボードにアクセスできます。
kubectl --namespace kasten-io port-forward service/gateway 8080:8000
初めてダッシュボードにアクセスすると、以下のようなOktaログインページにリダイレクトされます。
Oktaで正常にログインすると、以下に示すようにK10ダッシュボードにリダイレクトされます。
右上隅のユーザー名にカーソルを合わせると、ユーザー名全体とこのユーザーの権限が表示されます。これは、管理者ユーザーの場合は「unrestricted」、非管理者ユーザーの場合は「 limited access 」となります。
RBAC —役割ベースのアクセス制御
このチュートリアルのユーザー名には、K10への無制限の管理者アクセス権があることに注意してください。これらは、「onkarbhat13@gmail.com」の管理者アクセスを有効にするために使用されるコマンドです。
kubectl create clusterrolebinding onkar-crb --clusterrole=k10-admin --user=onkarbhat13@gmail.com kubectl create rolebinding onkar-rb --role=k10-ns-admin --user=onkarbhat13@gmail.com --namespace=kasten-io
RBACについては、今後の記事で詳しく説明します。K10のRBACについて詳しく知りたい場合は、こちらのドキュメントを参照してください。
結論
このチュートリアルでは、OIDC用のOktaアカウントを設定し、OIDCベースの認証を使用してK10をインストールする手順について説明しました。
OIDC認証コードフローはよく知られた標準に従っているため、K10のOIDC統合はどのOIDCプロバイダーでも機能します。
関連トピックス
- 物理、仮想バックアップを集中管理可能なVeeam Availability Consoleをリリース
- SMI-Sサポート [StarWind vSAN]
- セッションサーバの追加手順[Accops]
- サービスプロバイダ向けランサムウェア対策 – 削除されたバックアップの保護機能[Veeam Cloud Connect]
- プロバイダのストレージを簡単に利用:Veeam Cloud Connect【Veeam B&R Ver8新機能予告⑥ 】
- vCloud Directorと連携したセルフサービスバックアップとリストア:Veeam Backup & Replication v9.5予告
- クローン元(マスターとなる)VMの追加手順[Accops]
- クラウドのデータも安心して暗号化 HyTrust KeyControl 5.4新機能 『BYOK』
- Veeam Backup & Replication Add-on for Kaseya
- 「Veeam Cloud Connect レプリケーション」:Veeam Backup & Replication Ver9 からの新機能