KubernetesのためのOKTA:一歩一歩ガイド
10789 ワード
ルコデムウィラによって
シングルサインオン(sso)は,異なるアプリケーション間でのユーザ識別のセキュリティ姿勢を強化するための企業戦略の重要な部分となっている.SSO 多くの自律的なソフトウェアシステムにアクセスするとき、それらが1セットの資格証明書を使うのを可能にするユーザのための認証システムです.このセキュリティモデルでは、企業は異なるプラットフォーム間でユーザーのための連合アイデンティティを作成することができます.これは、内部チームのアクセスをツールのようなツールに与えるために一般的ですGoogle Workspace , Slack , Asana , しかし、SSOは、この性質の適用に限定されませんまた、Kubernetesのようなプラットフォームで使用することができます.
システムとして,kubernetesはユーザとアプリケーションの認証(authn)と認可(authz)のプロセスを分離する.に使用できるいくつかのアプローチがありますauthenticate users . これらのオプションからOpenID Connect (OIDC) あなたのクラスタのSSO認証モデルを設定するのに使用できます.KBBERNETTEのためのSSOを持つことは、組織が強化して、固守して、スケールでクラスターユーザーのためにアイデンティティ管理を単純化するのを許します.さらに、クラスタ操作を最適に実行するために必要なパラメータを持つソフトウェアチームに権限を与える.
この記事では、KBerbertesのコンテキストでのSSOの理由と理由について詳しく説明します.また、あなたのクラスタのSSOを設定するステップバイステップガイドも提供しますOkta and Loft .
この時点で、Kubernetesは、ユーザーアカウントのストレージと管理のための内部システムを維持しません.代わりに、ユーザはクラスタの外部で作成し、管理しなければなりません.これは「ユーザ認証はどの程度正確に機能しますか?」スターターの場合、認証はユーザまたはエンティティが誰であるかを確認するプロセスです.Kubernetesのコンテキストでは、Kubernetesクラスタと対話しようとするユーザーは、クライアントの要求に一定の資格情報を添付しなければなりません.これらの資格情報は外部のAuthnモジュールに対して渡され、検証されます.
あなたの組織がOIDCサポートでアイデンティティプロバイダー(IDP)を使用するならば、あなたはKerbernetesクラスタのために認証の役割を果たすために、このアイデンティティ解決を広げることができます.OIDCはOAuth 2.0上で追加レイヤを持つOAuth 2.0仕様に基づく認証プロトコルです.この層はログインしているアイデンティティに関するログインとプロフィール情報を加えます.ODTAのようなOIDCをサポートするIDPは、ユーザのアカウントを作成し、有効にし、無効にするユーザーライフサイクル管理を拡張することができます.
SSOはあなたのKubernetesクラスタにマッピングされたアイデンティティ管理をマッピングするための基礎を形成します.これは重要です.あなたの会社の演算子、管理者、開発者、およびテスターは、それぞれ異なるクラスタレベルのセルフサービスへのアクセスを必要とします.SSOで、あなたはKubernetesでRBAC定義にマップする役割を指定したチームメンバーのために真実の単一の源を維持することができます.たとえば、OIDCトークンには、Kubernetes RBAC APIを使用して、クラスタリソースへのアクセスを許可または拒否するアクセストークンロールが含まれます.そのように、どんな検証されたクラスタ・ユーザも、予め定義された許可を有するどんな必要な動作も独立して遂行することができます.
さあ、チュートリアルから始めましょう.始める前に、確認してください. 安AWS account . LOFTインスタンスの登録ドメイン.
Terraform (オプション)
あなたが期待するように、あなたが会う必要がある最初の要件は、リモートKubernetesクラスタを持つことです.このデモではTerraform を使用してAmazon Eksクラスタを作成するにはthis project . AWSアカウント内のすべての必要なインフラストラクチャを作成するために必要なモジュールが含まれます.リポジトリ
また、AWSコンソールを使用してAmazon Eks Kubernetesクラスタを手動で提供することもできます.しかし、このアプローチは時間がかかり、クラスタの基礎となるインフラストラクチャでのミスコンフィギュレーションにより傾向があります.
クラスタがプロビジョニングされた場合、ローカルのKube設定を更新できます
GithubからLoft CLIバイナリをインストールするには、マシンのオペレーティングシステムに応じて以下のコマンドを実行します.
次に、すでにOTAアカウントを持っていない場合は、1つを作成する必要があります.The free trial アカウントは十分ですちょうど登録を完了するために会社のメールアドレスを持っていることを確認します.
LOFT CLIをインストールしてOKTAアカウントを作成した後、以下のコマンドを実行してKubernetesクラスタにLOFTをインストールすることができます.
展開が完了すると、あなたのLoftアカウントにアクセスするために、端末のログイン資格情報が表示されます.
ロフトを実行したので、OSTAで動作するようにSSOに登録されたドメインでインスタンスを設定する必要があります.チュートリアルの冒頭で述べたように、ロフトインスタンスと関連付けることができるドメイン名を持つ必要があります.
最初のステップはnginx ingressコントローラをインストールすることです.
あなたのインスタンスがドメイン名で働くために、あなたの登録されたドメインが簡単なルーティング構成でAレコードを持っているのを保証する必要があります、そして、トラフィックルーティングはInteressコントローラによって作成されたロードバランサに転送されるように設定されます.これを行うには
ドメインがLOFTインスタンスに設定されたら、SSOを設定できます.
OKTAのアカウントにログインし、サイドメニューのアプリケーションのセクションに移動し、アプリケーションの統合ボタンをクリックします.アプリケーション内のSign Inメソッドと「Webアプリケーション」の「OpenID Connect(OIDC)」オプションを選択します.
統合を構成するには、Redirect URI内の記号の中にある正しいドメイン名を指定してください.
その後、アプリケーションのクライアントIDとクライアントの秘密を生成します.
あなたのロフト管理者アカウントで
上記の変更を適用した後、ユーザーまたはユーザーをOKTAでアプリケーションに割り当てることができます.これを行うには、前にしたように、あなたのOKAのアカウントの管理コンソールに署名されていることを確認します.次に、追加されたLoftアプリケーションに進み、課題タブに移動します.あなたはどちらかのユーザーが自分の能力を自分のOKTAのアカウントとロフトに署名する許可を与えるアプリケーションにグループを割り当てるオプションが表示されます.
ここでは、ロフトランディングページは、デフォルトのパスワードベースの認証と一緒にSSOに設定されたOKTAと似ているでしょう.
パスワードベースの認証を無効にすると、ページ内のサインは次のようになります.
最後に、エンドユーザーがサインされたら、LOFTのスペース管理画面が表示されます.
このポストでは、アイデンティティ管理のためのセキュリティモデルとしてSSOについて学び、どのようにKubernetesに拡張することができます.さらに、この記事はOKTAとLOFTであなたのKubernetesクラスタのためにSSOを準備する方法を詳述しました.Loft Kubernetesで働くとき、ソフトウェアチームを強化して、開発者経験を強化するようになっているプラットホームです.必ずそれをチェックアウトしてください!
写真でAlp Duran on Unsplash
シングルサインオン(sso)は,異なるアプリケーション間でのユーザ識別のセキュリティ姿勢を強化するための企業戦略の重要な部分となっている.SSO 多くの自律的なソフトウェアシステムにアクセスするとき、それらが1セットの資格証明書を使うのを可能にするユーザのための認証システムです.このセキュリティモデルでは、企業は異なるプラットフォーム間でユーザーのための連合アイデンティティを作成することができます.これは、内部チームのアクセスをツールのようなツールに与えるために一般的ですGoogle Workspace , Slack , Asana , しかし、SSOは、この性質の適用に限定されませんまた、Kubernetesのようなプラットフォームで使用することができます.
システムとして,kubernetesはユーザとアプリケーションの認証(authn)と認可(authz)のプロセスを分離する.に使用できるいくつかのアプローチがありますauthenticate users . これらのオプションからOpenID Connect (OIDC) あなたのクラスタのSSO認証モデルを設定するのに使用できます.KBBERNETTEのためのSSOを持つことは、組織が強化して、固守して、スケールでクラスターユーザーのためにアイデンティティ管理を単純化するのを許します.さらに、クラスタ操作を最適に実行するために必要なパラメータを持つソフトウェアチームに権限を与える.
この記事では、KBerbertesのコンテキストでのSSOの理由と理由について詳しく説明します.また、あなたのクラスタのSSOを設定するステップバイステップガイドも提供しますOkta and Loft .
KubernetesのSSOとは
この時点で、Kubernetesは、ユーザーアカウントのストレージと管理のための内部システムを維持しません.代わりに、ユーザはクラスタの外部で作成し、管理しなければなりません.これは「ユーザ認証はどの程度正確に機能しますか?」スターターの場合、認証はユーザまたはエンティティが誰であるかを確認するプロセスです.Kubernetesのコンテキストでは、Kubernetesクラスタと対話しようとするユーザーは、クライアントの要求に一定の資格情報を添付しなければなりません.これらの資格情報は外部のAuthnモジュールに対して渡され、検証されます.
あなたの組織がOIDCサポートでアイデンティティプロバイダー(IDP)を使用するならば、あなたはKerbernetesクラスタのために認証の役割を果たすために、このアイデンティティ解決を広げることができます.OIDCはOAuth 2.0上で追加レイヤを持つOAuth 2.0仕様に基づく認証プロトコルです.この層はログインしているアイデンティティに関するログインとプロフィール情報を加えます.ODTAのようなOIDCをサポートするIDPは、ユーザのアカウントを作成し、有効にし、無効にするユーザーライフサイクル管理を拡張することができます.
SSOはあなたのKubernetesクラスタにマッピングされたアイデンティティ管理をマッピングするための基礎を形成します.これは重要です.あなたの会社の演算子、管理者、開発者、およびテスターは、それぞれ異なるクラスタレベルのセルフサービスへのアクセスを必要とします.SSOで、あなたはKubernetesでRBAC定義にマップする役割を指定したチームメンバーのために真実の単一の源を維持することができます.たとえば、OIDCトークンには、Kubernetes RBAC APIを使用して、クラスタリソースへのアクセスを許可または拒否するアクセストークンロールが含まれます.そのように、どんな検証されたクラスタ・ユーザも、予め定義された許可を有するどんな必要な動作も独立して遂行することができます.
LOFTを用いたKubernetesに対するOKTA SSOの実装
さあ、チュートリアルから始めましょう.始める前に、確認してください.
Terraform (オプション)
あなたのKubernetesクラスタを準備してください
あなたが期待するように、あなたが会う必要がある最初の要件は、リモートKubernetesクラスタを持つことです.このデモではTerraform を使用してAmazon Eksクラスタを作成するにはthis project . AWSアカウント内のすべての必要なインフラストラクチャを作成するために必要なモジュールが含まれます.リポジトリ
README.md
インフラストラクチャの作成を実行する手順を詳しく説明します.また、AWSコンソールを使用してAmazon Eks Kubernetesクラスタを手動で提供することもできます.しかし、このアプローチは時間がかかり、クラスタの基礎となるインフラストラクチャでのミスコンフィギュレーションにより傾向があります.
クラスタがプロビジョニングされた場合、ローカルのKube設定を更新できます
.kube/config
) 新しく作成したクラスタをポイントし、次のコマンドを使用して接続を確認します.aws eks --region <cluster-region> update-kubeconfig --name <cluster-name>
kubectl config current-context
ロフトCLIをインストール
GithubからLoft CLIバイナリをインストールするには、マシンのオペレーティングシステムに応じて以下のコマンドを実行します.
マックターミナル
curl -s -L "https://github.com/loft-sh/loft/releases/latest" | sed -nE 's!.*"([^"]*loft-darwin-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o loft && chmod +x loft;
sudo mv loft /usr/local/bin;
リナックスバッシュ
curl -s -L "https://github.com/loft-sh/loft/releases/latest" | sed -nE 's!.*"([^"]*loft-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o loft && chmod +x loft;
sudo mv loft /usr/local/bin;
Windows PowerShell
md -Force "$Env:APPDATA\loft"; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12';
Invoke-WebRequest -UseBasicParsing ((Invoke-WebRequest -URI "https://github.com/loft-sh/loft/releases/latest" -UseBasicParsing).Content -replace "(?ms).*`"([^`"]*loft-windows-amd64.exe)`".*","https://github.com/`$1") -o $Env:APPDATA\loft\loft.exe;
$env:Path += ";" + $Env:APPDATA + "\loft";
[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::User);
バイナリは、githubリリースページからダウンロードすることもできますhere .アカウント作成
次に、すでにOTAアカウントを持っていない場合は、1つを作成する必要があります.The free trial アカウントは十分ですちょうど登録を完了するために会社のメールアドレスを持っていることを確認します.
KubernetesクラスタへのLoftの配備
LOFT CLIをインストールしてOKTAアカウントを作成した後、以下のコマンドを実行してKubernetesクラスタにLOFTをインストールすることができます.
loft start
あなたはLOFTアカウントの管理者を作成するために使用されるメールアドレスを追加するよう求められます.その後、クラスタにロフトを展開します.展開が完了すると、あなたのLoftアカウントにアクセスするために、端末のログイン資格情報が表示されます.
ドメインの設定
ロフトを実行したので、OSTAで動作するようにSSOに登録されたドメインでインスタンスを設定する必要があります.チュートリアルの冒頭で述べたように、ロフトインスタンスと関連付けることができるドメイン名を持つ必要があります.
最初のステップはnginx ingressコントローラをインストールすることです.
helm upgrade --install ingress-nginx ingress-nginx --repository-config='' \
-n ingress-nginx --create-namespace \
--repo https://kubernetes.github.io/ingress-nginx \
--set-string controller.config.hsts=false \
--wait
NGinxのイングルのコントローラが正常にロールバックしたら、再実行することができますloft start
コマンドを--host
ドメイン名を指定するフラグ.あなたのインスタンスがドメイン名で働くために、あなたの登録されたドメインが簡単なルーティング構成でAレコードを持っているのを保証する必要があります、そして、トラフィックルーティングはInteressコントローラによって作成されたロードバランサに転送されるように設定されます.これを行うには
loft start
ドメイン名のコマンドを--host
フラグ:loft start --host=yourdomainname.com
この段階では、ロフトCLIはあなたがリモートクラスタを使用しているかどうか、そして、Ingressコントローラがインストールされているかどうかを質問します.確認後、あなたのloftのインスタンスが再構成されます.シングルサインオン
ドメインがLOFTインスタンスに設定されたら、SSOを設定できます.
アプリケーション統合の作成
OKTAのアカウントにログインし、サイドメニューのアプリケーションのセクションに移動し、アプリケーションの統合ボタンをクリックします.アプリケーション内のSign Inメソッドと「Webアプリケーション」の「OpenID Connect(OIDC)」オプションを選択します.
統合を構成するには、Redirect URI内の記号の中にある正しいドメイン名を指定してください.
その後、アプリケーションのクライアントIDとクライアントの秘密を生成します.
Oft設定を更新する
あなたのロフト管理者アカウントで
Admin > Config
設定を更新するには、次の手順に従います.auth:
oidc:
issuerUrl: 'https://${MY-OKTA-SUBDOMAIN}.okta.com'
clientId: CLIENT_ID
clientSecret: CLIENT_SECRET
groupsClaim: groups
# This is needed because okta uses thin id tokens
# that do not contain the groups directly
getUserInfo: true
必要に応じて、以下の行を追加することでLOFTで管理されるデフォルトのパスワードベースの認証システムを無効にすることができます.auth:
oidc: ...
password:
disabled: true # Disable password-based authentication
このアプローチは、ロフトにアクセスしているすべての彼らの人員のためにSSOモデルを実施したい組織に役立ちます.さらに、エンドユーザーはOKTAの資格情報の1つのセットを管理することによってより良い経験を持つことができます.ユーザを割り当てる
上記の変更を適用した後、ユーザーまたはユーザーをOKTAでアプリケーションに割り当てることができます.これを行うには、前にしたように、あなたのOKAのアカウントの管理コンソールに署名されていることを確認します.次に、追加されたLoftアプリケーションに進み、課題タブに移動します.あなたはどちらかのユーザーが自分の能力を自分のOKTAのアカウントとロフトに署名する許可を与えるアプリケーションにグループを割り当てるオプションが表示されます.
ここでは、ロフトランディングページは、デフォルトのパスワードベースの認証と一緒にSSOに設定されたOKTAと似ているでしょう.
パスワードベースの認証を無効にすると、ページ内のサインは次のようになります.
最後に、エンドユーザーがサインされたら、LOFTのスペース管理画面が表示されます.
結論
このポストでは、アイデンティティ管理のためのセキュリティモデルとしてSSOについて学び、どのようにKubernetesに拡張することができます.さらに、この記事はOKTAとLOFTであなたのKubernetesクラスタのためにSSOを準備する方法を詳述しました.Loft Kubernetesで働くとき、ソフトウェアチームを強化して、開発者経験を強化するようになっているプラットホームです.必ずそれをチェックアウトしてください!
写真でAlp Duran on Unsplash
Reference
この問題について(KubernetesのためのOKTA:一歩一歩ガイド), 我々は、より多くの情報をここで見つけました https://dev.to/loft/okta-for-kubernetes-a-step-by-step-guide-2ojoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol