Istio 1.3 での秘密検出サービスにおける変更
Kubernetes の信頼できる JWT を活用して、より安全にワークロードインスタンスの証明書を発行します。
Istio 1.3 では、Kubernetes の機能強化を活用して、より安全にワークロードインスタンスの証明書を発行します。
Citadel エージェントがワークロードインスタンスの証明書を取得するために Citadel に証明書署名リクエストを送信すると、ワークロードインスタンスのサービスアカウントを表す Kubernetes API サーバーによって発行された JWT が含まれます。Citadel が JWT を認証できる場合、ワークロードインスタンスの証明書を発行するために必要なサービスアカウント名を取得します。
Kubernetes 1.12 より前は、Kubernetes API サーバーは次の問題を抱えた JWT を発行していました。
aud
やexp
などの使用範囲を制限するために必要な重要なフィールドが含まれていません。Bound Service Tokens で詳細を確認してください。- オプトアウトする方法なく、すべてのポッドにトークンがマウントされます。Service Account Token Volumes で動機付けについて確認してください。
Kubernetes 1.12 ではこれらの問題を解決するためにtrustworthy
JWT が導入されています。ただし、aud
フィールドに API サーバーのオーディエンス以外の値を設定するためのサポートは、Kubernetes 1.13 で利用可能になるまでありませんでした。メッシュのセキュリティを強化するために、Istio 1.3 はtrustworthy
JWT のみサポートし、SDS を有効にすると aud
フィールドの値を istio-ca
にする必要があります。Istio デプロイメントを SDS を有効にした状態で 1.3 にアップグレードする前に、Kubernetes 1.13 以降を使用していることを確認してください。
選択したプラットフォームに基づいて、以下の点を考慮してください。
- GKE: クラスタのバージョンを少なくとも 1.13 にアップグレードします。
- オンプレミス Kubernetes と オンプレミス GKE: Kubernetes に追加の構成を追加します。最新のフラグ名についてはapi-server ページを参照することもできます。
- 他のプラットフォームについては、プロバイダーに確認してください。使用しているベンダーが信頼できる JWT をサポートしていない場合は、Istio 1.3 でワークロードキーと証明書を伝搬するためのファイルマウントアプローチにフォールバックする必要があります。