このドキュメントは、個々のクラスタで 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 を使用する場合は、これらのツールがインストールされます。 
- バージョン 466.0.0 以降の Google Cloud CLI。これには Google Cloudとやり取りするためのコマンドライン ツールである 
- クラスタが登録されているプロジェクトで使用するために、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 に複数の ID プロバイダを構成できます。これにより、管理が効率化され、柔軟性が向上するので、統合された構成リソース内でさまざまな認証方法を構成できます。次の ClientConfig の例では、認証の優先順位に応じて複数の ID プロバイダを定義しています。
apiVersion: v1
items:
- apiVersion: authentication.gke.io/v2alpha1
  kind: ClientConfig
...
  spec:
    authentication:
    - aws:
        region: us-west-2
      name: AWS Login
    - ldap:
    ...
    - saml:
      ...
    - azureAD:
      ...
    - oidc:
      name: Okta OIDC
      ...
    -oidc:
      name: Google OIDC
      ...
次の表に、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 が更新されます。構文エラーがある場合は、構成ファイルを再編集して修正するように求められます。
次のステップ
構成が適用されたら、クラスタにユーザー アクセスを設定するに進みます。