SAML 認証用にフリート メンバー クラスタを設定する

このドキュメントでは、クラスタ管理者またはアプリケーション オペレーターがサードパーティの Security Assertion Markup Language(SAML)プロバイダからの認証をサポートするように Kubernetes クラスタを構成する方法について説明します。詳細については、サードパーティの ID を使用した認証についてをご覧ください。

制限事項

SAML をサポートするクラスタタイプを使用する必要があります。

始める前に

  1. Install the Google Cloud CLI.

  2. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  3. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  4. gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。

    gcloud components update
    gcloud components install kubectl
  5. 必要なすべてのプロバイダ情報がプラットフォーム管理者から提供されていることを確認します。詳しくは、プロバイダの詳細を共有するをご覧ください。

クラスタを構成する

SAML を使用して認証を行うようにクラスタを構成するには、ID プロバイダに関する情報と、プロバイダがユーザー情報を返すために必要なパラメータを使用して、ClientConfig という名前の Kubernetes カスタム リソースを構成します。

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

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

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

テキスト エディタにクラスタの ClientConfig リソースが読み込まれます。次のサンプルに示すように、spec.authentication.saml オブジェクトを追加します。すでに書き込まれているデフォルトのデータは変更しないでください。

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
    saml:
      attributeMapping:
        ATTRIBUTE_KEY_1: ATTRIBUTE_CEL_EXPRESSION_1
        ATTRIBUTE_KEY_2: ATTRIBUTE_CEL_EXPRESSION_2
      groupsAttribute: GROUPS_ATTRIBUTE
      groupPrefix: GROUP_PREFIX
      idpEntityID: ENTITY_ID
      idpSingleSignOnURI: SIGN_ON_URI
      idpCertificateDataList: IDP_CA_CERT
      userAttribute: USER_ATTRIBUTE
      userPrefix: USER_PREFIX
    certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
    preferredAuthentication: PREFERRED_AUTHENTICATION
    server: <>
# Rest of the resource is managed by Google. DO NOT MODIFY.
...

同じ ClientConfig に OIDC、LDAP、SAML の ID プロバイダ構成を複数追加できます。クラスタは、定義された順序で各構成による認証を試行し、認証が最初に成功した時点で停止します。次の ClientConfig の例では、特定の順序で複数の ID プロバイダを定義しています。

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - aws:
      region: us-west-2
    name: AWS Login
  - ldap:
  # Multiple lines are omitted here.
  - saml:
  # Multiple lines are omitted here.
  - azureAD:
  # Multiple lines are omitted here.
  - oidc:
    name: Okta OIDC
  # Multiple lines are omitted here.
  - oidc:
    name: Google OIDC
  # Multiple lines are omitted here.

ClientConfig SAML フィールド

次の表に、ClientConfig saml オブジェクトのフィールドを示します。追加する必要があるフィールドは、ID プロバイダ トークンと、プラットフォーム管理者がプロバイダを構成した方法によって異なります。

フィールド 必須 説明 形式
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 が更新されます。構文エラーがある場合は、構成ファイルを再編集して修正するように求められます。

次のステップ

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