Istioサービスメッシュの保護
Istio は、プロジェクト istio-csr を使用して cert-manager と統合できます。istio-csr は、Istio メッシュのすべてのメンバーの証明書署名要求を受信し、cert-manager を介して署名するエージェントをデプロイします。
istio-csr は、Istio のワークロードおよびコントロールプレーンコンポーネントを cert-manager を使用して保護できるようにするエージェントです。
クラスター内外の両方で mTLS を促進する証明書は、cert-manager の Issuer を使用して署名、配信、および更新されます。
インストール
新規の kind クラスターに istio-csr をセットアップする方法については、インストールガイドを参照してください。
ガイドに従うのが、istio-csr の動作を確認するのに最適な方法です。
詳細(経験豊富な Istio ユーザー向け)
⚠️ istio-csr を試したいだけであれば、インストールガイドの方がより良い場所です!
istio-csr を実行するには、いくつかのステップと前提条件が順番に必要です。
- Istio がまだインストールされていないクラスター
- クラスターに インストールされた cert-manager
- Istio 証明書の発行に使用される
Issuer
またはClusterIssuer
- (おそらく Helm を介して)インストールされた istio-csr
- インストールされた Istio。たとえば、リポジトリの構成例を使用するなど、いくつかのカスタム構成が必要です。
カスタム Istio インストールマニフェストが必要な理由
Istio インストールマニフェストの例の内容を見ると、いくつかの重要なカスタム構成オプションがあります。
必要な変更には、ENABLE_CA_SERVER
を false
に設定し、Istio が証明書を要求する caAddress
を設定することが含まれます。CAサーバーを置き換えることは istio-csr の要点です!
ルートCAのマウントと静的な指定も、推奨される重要な手順です。手動で指定されたルートCAがない場合、istio-csr はデフォルトでルートCAを自動的に発見しようとします。これにより、たとえば署名者のトークン(cert-managerコントローラーのトークンなど)が盗まれた場合に、署名者ハイジャック攻撃につながる可能性があります。
Issuer または ClusterIssuer?
ClusterIssuer
が必要なことがわかっている場合を除き、Issuer
から始めることをお勧めします。Issuer のアクセス制御について推論するのが容易であるためです。名前空間化されているため、スコープが少し限定されています。
とはいえ、Kubernetes クラスター全体を信頼ドメイン自体と見なす場合は、ClusterIssuer の方がより自然に適合します。最適な選択は、特定の状況によって異なります。
当社のインストールガイドでは、Issuer
を使用しています。
どの Issuer タイプ?
Issuer
または ClusterIssuer
のどちらを使用する場合でも、次のような必要な Issuer のタイプを選択する必要があります。
重要な要件は、Istio が SPIFFE ID を配置するため、subjectAltName
(SAN) X.509 拡張に任意の値を配置できることです。
つまり、ACME Issuer は機能しません。Let's Encrypt によって発行されたものなどの公開的に信頼された証明書では、非常に正当な理由で、SAN に任意の値を入力することは許可されていません。
すでに HashiCorp Vault を使用している場合は、Vault Issuer が明らかに最適な選択肢です。独自の PKI を完全に制御したい場合は、CA Issuer をお勧めします。最終的な選択はあなた次第です。
Istio の後に istio-csr をインストールする
これは安全に行うことが非常に困難なため、サポートされていません。istio-csr を 後にインストールすると、すべての Istio サイドカーが古い Istio 管理の CA と新しい cert-manager 管理の CA の両方を信頼する期間が必要になるため、ダウンタイムなしで istio-csr をインストールできない可能性があります。
istio-csr はどのように機能するのですか?
istio-csr は、gRPC Istio 証明書サービスを実装します。このサービスは、Istio ワークロードからの証明書署名要求を認証、承認、署名し、クラスターにインストールされた cert-manager を介してすべての証明書処理をルーティングします。
これにより、cert-manager を介して証明書管理が可能になりながら、標準的なインストールにおける istiod の動作とシームレスに一致します。