このページでは、Google Kubernetes Engine(GKE)で Gateway を保護するさまざまな方法について説明します。Gateway を保護する方法を学習できます。
Gateway のセキュリティの仕組み
Gateway はロードバランサのフロントエンドを表します。Gateway の認証と暗号化で保護できるパスは 2 つあります。
- クライアントからゲートウェイへ: クライアントで開始され、ゲートウェイで終了するトラフィック。
- ゲートウェイからポッドへ: ゲートウェイで開始され、バックエンドの Pod で終了するトラフィック。
次の図は、ゲートウェイを認証して暗号化するための両方のパスを示しています。
このページでは、Gateway レベルでアップロードおよび管理される証明書を使用して、Gateway パスへのクライアントを保護する方法について説明します。Gateway から Pod へのトラフィックを保護する方法については、TLS を使用してロードバランサからアプリケーションへのトラフィックを保護するをご覧ください。
利点
Gateway API を使用して、さまざまな方法でアプリケーションを保護できます。これにより、ゲートウェイとやり取りするロールを柔軟に設定できます。
ドメインと TLS 構成のオーナーは誰ですか?
Gateway API モデルでは、ゲートウェイを使用またはデプロイする 2 つのロールが導入されています。
- プラットフォーム管理者: クラスタ オペレーターはクラスタ全体の管理者です。ポリシー、ネットワーク アクセス、アプリケーションの権限を管理します。
- アプリケーション デベロッパー: アプリケーション デベロッパーは、アプリケーションと Service の構成を定義します。
次の図は、2 つのアプリケーション(store-v1
と store-v2
)の TLS とドメイン所有権に影響するゲートウェイのフィールドと HTTPRoute リソースを示しています。
図では、クラスタ オペレーターが以下を制御しています。
- アプリケーション デベロッパーが各 Namespace でアプリ用に使用できるドメイン。
- 異なるドメインを終端させる特定の証明書。
- ゲートウェイのオーナーから提供される証明書。
- HTTPRoute オーナーが証明書生成のために独自のホスト名を指定できるかどうか。
Gateway 定義で許可されている場合、アプリケーション デベロッパーは証明書を生成するホスト名を制御します。
この分離された運用タスクにより、アプリケーション デベロッパーは独自の HTTPRoute をデプロイして管理し、分散制御を強化できます。また、プラットフォーム管理者は、TLS を一元管理するためにゲートウェイをデプロイして管理できます。
Gateway 証明書の管理
Gateway は次の方法で保護できます。
Compute Engine API の Kubernetes Secret または SslCertificate
リソースを使用する場合、1 つの Gateway に添付できる証明書は最大で 15 件です。
割り当ての増加をリクエストすると、Certificate Manager では、ロードバランサごとに最大 10,000,000 件の証明書を添付できます。
Google Cloud SSL 証明書の詳細については、SSL 証明書の概要をご覧ください。
Kubernetes Secret
Gateway API 仕様では、証明書を保存して Gateway に添付するための Kubernetes Secret がサポートされています。Gateway.spec.tls.certificateRef
フィールドを使用して、1 つ以上の Kubernetes Secret をゲートウェイに関連付けることができます。
Kubernetes Secret によって保護された Gateway リソースには、次の要件があります。
- Gateway リスナーの
port
とprotocol
が443
とHTTPS
に設定されている必要があります。 listener.tls.mode
フィールドをTerminate
に設定する必要があります。listeners.tls
ブロックで TLS 認証情報を参照する必要があります。
Kubernetes Secret を使用して保護された Gateway リソースには、次の制限があります。
- 指定した Secret を使用してトラフィックを終端できるのは HTTPS リスナーのみですが、HTTP と HTTPS を組み合わせて複数のリスナーを指定できます。
- 同じ Gateway で HTTPS を使用する複数のリスナーがある場合は、各リスナーに一意のホスト名が必要です。
- 1 つのホスト名を省略することも、ポートとプロトコルのペアごとに
*
を割り当てることもできます。 - 各 Gateway に割り当てることができるデフォルト証明書は 1 件のみです。
Kubernetes Secret を使用して Gateway を保護する方法については、Kubernetes Secret を使用して Gateway を保護するをご覧ください。
SSL 証明書
SSL 証明書は、証明書を保存してロードバランサに配信します。
SSL 証明書は、セルフマネージドまたは Google マネージドのいずれかになります。
この 2 種類の証明書の違いについては、SSL 証明書の概要をご覧ください。
SSL 証明書のスコープとロケーションは、それを使用している Gateway のスコープとロケーションに一致している必要があります。
たとえば、グローバル SSL 証明書はリージョン Gateway で使用できません。
次の表に、各 GatewayClass の SSL 証明書のスコープとロケーションの要件を示します。
GatewayClass | SSL 証明書のスコープ | SSL 証明書の場所 |
---|---|---|
gke-l7-global-external-managed |
グローバル SSL 証明書 | グローバル |
gke-l7-global-external-managed-mc |
||
gke-l7-gxlb |
||
gke-l7-gxlb-mc |
||
gke-l7-regional-external-managed |
リージョン SSL 証明書 | Gateway と同じリージョンにする必要があります |
gke-l7-regional-external-managed-mc |
||
gke-l7-rilb |
||
gke-l7-rilb-mc |
SSL 証明書を使用して Gateway を保護する方法については、SSL 証明書を使用して Gateway を保護するをご覧ください。
Certificate Manager
Certificate Manager は、TLS 証明書を一元管理する場所です。
Certificate Manager を使用して Gateway を保護する場合、次のことができます。
- 証明書マネージャーで作成したゲートウェイから直接
CertificateMap
を参照する。 - 独自の証明書を管理する。
- 証明書の伝達時間を改善します。
- 期限切れの証明書と証明書の伝達には Cloud Monitoring を使用します。
Certificate Manager は、セルフマネージド証明書と Google マネージド SSL 証明書の両方をサポートしています。
Certificate Manager を使用して Gateway を保護する方法については、Certificate Manager を使用して Gateway を保護するをご覧ください。
GatewayClass TLS のサポート
次の表に、GKE が各 GatewayClass に対してサポートする TLS 終端方法を示します。
GatewayClass |
gke-l7-global-external-managed gke-l7-global-external-managed-mc gke-l7-gxlb gke-l7-gxlb-mc
|
gke-l7-regional-external-managed gke-l7-regional-external-managed-mc gke-l7-rilb gke-l7-rilb-mc
|
---|---|---|
クライアントから Gateway への TLS | サポート対象 | サポート対象 |
バックエンド TLS へのゲートウェイ | サポート対象 | サポート対象 |
Google Cloud 証明書リソース | グローバル SSL 証明書CertificateMap |
リージョン SSL 証明書 |
Kubernetes Secret を使用するセルフマネージド証明書 | サポート対象 | サポート対象 |
セルフマネージド Compute Engine SSL 証明書 | サポート対象 | サポート対象 |
Google マネージド Compute Engine SSL 証明書 | サポート対象 | サポート対象外 |
Certificate Manager を使用したセルフマネージド SSL 証明書 | サポート対象 | サポート対象 |
Certificate Manager を使用した Google マネージド SSL 証明書 | サポート対象 | サポート対象 |
次のステップ
- ゲートウェイを保護する方法を学習する。