SAML で GKE Identity Service のクラスタを設定する

このドキュメントは、個々のクラスタで GKE Identity Service を設定し、デベロッパーと他のユーザーが Security Assertion Markup Language(SAML) から既存の ID の詳細を使用してクラスタにログインできるようにするクラスタ管理者またはアプリケーション オペレータを対象としています。このガイドは、GKE Identity Service の概要をお読みいただいていることを前提としています。このドキュメントの手順では、GKE Identity Service がすでにクライアント アプリケーションとして ID プロバイダに登録されていることを前提としています。

始める前に

  • 設定を開始する前に、プロバイダに GKE Identity Service を登録するに記載されている必須情報がプラットフォーム管理者から提供されていることを確認します。
  • 次のコマンドライン ツールがインストールされていることを確認します。

    • バージョン 466.0.0 以降の Google Cloud CLI。これには Google Cloud とやり取りするためのコマンドライン ツールである gcloud が含まれています。Google Cloud CLI をインストールする必要がある場合は、インストール ガイドをご覧ください。
    • kubectl。Kubernetes クラスタにコマンドを実行するために使用します。kubectl をインストールする必要がある場合は、こちらの説明に従ってインストールしてください。

    Google Cloud を操作するシェル環境として Cloud Shell を使用する場合は、これらのツールがインストールされます。

  • クラスタが登録されているプロジェクトで使用するために、gcloud CLI が初期化されていることを確認します。

クラスタを構成する

GKE Identity Service は、特別な Kubernetes のカスタム リソース タイプ(CRD)を使用して、ClientConfig と呼ばれるクラスタを構成します。この CRD には、ID プロバイダに関する情報のフィールドと、ユーザー情報を返すために必要なパラメータがあります。

kubectl

デフォルトの ClientConfig を編集する場合は、kubectl を介してクラスタに接続できることを確認し、次のコマンドを実行します。

kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public

KUBECONFIG_PATH は、クラスタの kubeconfig ファイルへのパス(例:$HOME/.kube/config)に置き換えます。

テキスト エディタにクラスタの ClientConfig リソースが読み込まれます。スニペットに示すように、saml オブジェクトを追加します。

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
 name: default
 namespace: kube-public
spec:
  authentication:
  - name: NAME
   saml:
     idpEntityID: ENTITY_ID
     idpSingleSignOnURI: SIGN_ON_URI
     idpCertificateDataList: IDP_CA_CERT
     userAttribute: USER_ATTRIBUTE
     groupsAttribute: {'<var name="user attribute">GROUPS_ATTRIBUTE</var>'}}
     userPrefix: USER_PREFIX
     groupPrefix: GROUP_PREFIX
     attributeMapping:
       ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
       ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
  certificateAuthorityData: CERTIFICATE_STRING
  preferredAuthentication: PREFERRED_AUTHENTICATION
  server: <>

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

次の表に、ClientConfig saml オブジェクトのフィールドを示します。追加する必要があるフィールドは、ID プロバイダと、GKE Identity Service のプロバイダを構成する際にプラットフォーム管理者が選択した設定オプションによって変わります。

フィールド 必須 説明 形式
name この構成を識別するために使用する名前で、通常は ID プロバイダ名です。構成名の先頭は英字で、それに続く最大 39 文字の英小文字、数字、ハイフンで構成します。末尾をハイフンにすること���できません。 文字列
idpEntityID SAML プロバイダの SAML エンティティ ID(URI 形式で指定)。例: https://www.idp.com/saml URL 文字列
idpSingleSignOnURI SAML プロバイダの SSO エンドポイント(URI 形式で指定)。例: https://www.idp.com/saml/sso URL 文字列
idpCertificateDataList SAML レスポンスの検証に使用される ID プロバイダ証明書に対応します。これらの証明書は標準の Base64 エンコード形式と PEM 形式にする必要があります。ID プロバイダの証明書のローテーションを容易にするため、サポートされる証明書は 2 つまでです。 文字列
userAttribute × SAML レスポンスでユーザー名を保持する属性の名前。 文字列
groupsAttribute × ユーザーのグループ情報を保持する SAML レスポンスの属性名。 文字列
userPrefix × デフォルトの接頭辞を使用しない場合に、既存の名前と競合しないように、ユーザーのクレームの先頭に追加する接頭辞。 文字列
groupPrefix × 複数の ID プロバイダの構成がある場合に、アクセス制御ルールの既存の名前と競合しないように、セキュリティ グループ名に追加する接頭辞(通常はプロバイダ名)。 文字列
attributeMapping × 追加のユーザー属性のマッピング。 文字列
certificateAuthorityData × プラットフォーム管理者が指定した場合、これは ID プロバイダ用の PEM でエンコードされた証明書の文字列です。結果の文字列は certificateAuthorityData に 1 行で含めます。 文字列
preferredAuthentication × クラスタで構成された優先認証方法の名前。 文字列

ClientConfig が完成したら、ファイルを保存します。これにより、クラスタの ClientConfig が更新されます。構文エラーがある場合は、構成ファイルを再編集して修正するように求められます。

次のステップ

構成が適用されたら、クラスタにユーザー アクセスを設定するに進みます。