※ 本記事は、Greg Verstraetenによる”Announcing OpenId Connect in OCI Kubernetes Engine“を翻訳したものです。

2024年11月22日


OpenID Connectは、OAuth 2.0フレームワーク上に構築されたオープン標準認証プロトコルです。アプリケーションやシステム内でユーザーを認証および認可するための安全で柔軟な方法を提供します。

次のクラスのユース・ケースでは、Oracle Cloud Infrastructure (OCI) Kubernetes Engine (OKE)を使用したOpenID Connect (OIDC)を検討できます:

  • OIDC認証: Kubernetesユーザーは、既存のOpenID Connectアイデンティティ・プロバイダ(IdP)のトークンを使用してOKEクラスタに対して認証できます。
  • OIDC検出: サード・パーティ・セキュリティ・トークン・サービス(STS)を使用して、Kubernetes podがOCI以外のリソースにアクセスすることを認可できます。

今日、OKEでのOpenID Connect認証および検出のサポートを発表します。

OKE OIDC認証

OCI Identity and Access Management (IAM)サービスで定義されたユーザーは、OKEクラスタにアクセスできます。また、外部IdPのユーザーおよびグループをOCI IAMとフェデレートして、クラスタへのアクセス権を付与することもできます。ただし、場合によっては、サードパーティのOpenID Connect IdPのユーザーが、OCI IAMとのフェデレーションを必要とせずにOKEクラスタに直接アクセスすることを希望する場合があります。OKEのOIDC認証のサポートにより、この構成が可能になります。

たとえば、Kubernetesユーザーが定義されているKeycloakサーバーがあるとします。これらのユーザーをOCI IAMとフェデレートするかわりに、KeycloakのOIDCアクセス・トークンを使用して直接認証できるようにOKEを構成できます。Keycloakを信頼できるOpenID Connect IdPとして受け入れるようにOKEクラスタを更新することで、ユーザーはKeycloakアクセス・トークンを使用してOKEクラスタに対して認証できます。OKEは、アクセス権を付与する前に、Keycloakに対してトークンを検証します。

別の例として、存続期間の長い資格証明を管理せずに、GitHub Actionsを使用してOKEクラスタへのデプロイメントを自動化します。GitHubのネイティブOIDC認証を受け入れるようにOKEを構成することで、GitHub Actionsワークフローは、自動生成された短期間のトークンを使用して、クラスタに安全にアクセスできます。GitHub ActionsワークフローがOIDC認証を使用してOKEクラスタにアクセスできるようにするための設定を説明するこの投稿を確認してください。

OKE OIDC検出

OKEはすでにワークロード・アイデンティティをサポートしており、Kubernetes podが、アクセス資格証明をKubernetesクラスタに格納することなく、シークレットやクラウド・ストレージ・バケットなどのOCIリソースにアクセスできるようにします。

Kubernetes podがOCI以外のリソースにアクセスすることをどのように認可しますか? OKE OpenID Connect検出を使用します。OKE OIDC検出により、Amazon Web Services (AWS)やGoogle Cloud Platform (GCP)などのオンプレミスまたはサードパーティのクラウド・サービス・プロバイダ(CSP)で実行されているSTSは、OKEクラスタで実行されているKubernetes podを検証し、OCI以外のリソースへのアクセスを認可できます。

OKEクラスタに対してOIDC検出を有効にすると、OKEはOpenID Connect発行者エンドポイントを提供します。このエンドポイントは、OIDC検出ドキュメントおよびトークン検証に必要な公開キーを含むJSON Webキー・セット(JWKS)を提供します。これらのリソースにより、サード・パーティのIdPは、OKEクラスタ内のpodに対して発行されたトークンを検証し、それらのpodがOCI以外のリソースにアクセスできるようにします。

ワークフローは次のステップを実行します:

  1. podは、投影サービス・アカウント・トークンを使用して作成します。
  2. podで実行されているアプリケーションは、OCI以外のリソース・アクセス・トークンをサードパーティSTSにリクエストします。アプリケーションは、OKE OIDC発行者URLを含む、サービス・アカウント・トークンのコンテンツをリクエストに提供します。
  3. STSは、従来の共通の <issuer>/.well-known/openid-configuration の場所を使用してOKE OIDC発行者URLに接続するように構成されており、公開JWKSキーを取得します。
  4. STSは、公開JWKSキーを使用してpodのトークンの信頼性を検証します。
  5. STSは、podで実行されているアプリケーションにアクセス・トークンを返します。

OKE OIDC Discovery workflow

 

詳細

OKE OIDCの検出と認証についてさらに学習し、次のリソースを使用して実践的な体験を得ることができます: