このドキュメントでは、クラスタ管理者またはアプリケーション オペレーターがサードパーティの Security Assertion Markup Language(SAML)プロバイダからの認証をサポートするように Kubernetes クラスタを構成する方法について説明します。詳細については、サードパーティの ID を使用した認証についてをご覧ください。
制限事項
SAML をサポートするクラスタタイプを使用する必要があります。
始める前に
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
gcloud CLI を初期化した後に更新して、必要なコンポーネントをインストールします。
gcloud components update gcloud components install kubectl
- 必要なすべてのプロバイダ情報がプラットフォーム管理者から提供されていることを確認します。詳しくは、プロバイダの詳細を共有するをご覧ください。
クラスタを構成する
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 が更新されます。構文エラーがある場合は、構成ファイルを再編集して修正するように求められます。
次のステップ
構成が適用されたら、クラスタにユーザー アクセスを設定するに進みます。