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 を使用する場合は、これらのツールがインストールされます。
- バージョン 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 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 が更新されます。構文エラーがある場合は、構成ファイルを再編集して修正するように求められます。
次のステップ
構成が適用されたら、クラスタにユーザー アクセスを設定するに進みます。