Azure Kubernetes Service (AKS) は、Kubernetes によって使用される分散キー値ストアである etcd に Kubernetes シークレットなどの機密データを格納します。 セキュリティとコンプライアンスの要件を強化するために、AKS では、Azure Key Vault と統合された Kubernetes Key Management Service (KMS) プロバイダーを使用して、保存時の Kubernetes シークレットの暗号化をサポートしています。
この記事では、AKS で保存されている Kubernetes シークレットを保護するために使用できる主要な概念、暗号化モデル、およびキー管理オプションについて説明します。
保存時のデータ暗号化について
保存データの暗号化は、ディスクに格納されているデータを保護します。 保存時の暗号化がないと、基になるストレージにアクセスする攻撃者は、Kubernetes シークレットなどの機密データを読み取る可能性があります。
AKS では、etcd に格納されている Kubernetes シークレットの暗号化が提供されます。
| レイヤー | Description |
|---|---|
| Azure プラットフォームの暗号化 | Azure Storage では、256 ビット AES 暗号化を使用して保存されているすべてのデータが自動的に暗号化されます。 この暗号化は常に有効であり、ユーザーに対して透過的です。 |
| KMS プロバイダーの暗号化 | Azure Key Vault に格納されているキーを使用して etcd に書き込まれる前に Kubernetes シークレットを暗号化するオプションのレイヤー。 |
Azure の保存時の暗号化機能の詳細については、保存時の Azure データ暗号化 と Azure 暗号化モデルに関するページを参照してください。
データ暗号化用の KMS プロバイダー
Kubernetes KMS プロバイダーは、外部キー管理システムを使用して保存中の Kubernetes シークレットの暗号化を有効にするメカニズムです。 AKS は Azure Key Vault と統合してこの機能を提供します。これにより、マネージド Kubernetes サービスのセキュリティ上の利点を維持しながら、暗号化キーを制御できます。
KMS 暗号化のしくみ
AKS クラスターに対して KMS を有効にする場合:
- シークレットの作成: シークレットが作成されると、Kubernetes API サーバーはシークレット データを KMS プロバイダー プラグインに送信します。
- 暗号化: KMS プラグインは、Azure Key Vault に格納されているキー暗号化キー (KEK) を使用して暗号化されたデータ暗号化キー (DEK) を使用してシークレット データを暗号化します。
- ストレージ: 暗号化されたシークレットは etcd に格納されます。
- シークレットの取得: シークレットが読み取られた場合、KMS プラグインは Azure Key Vault から KEK を使用して DEK を復号化し、DEK を使用してシークレット データの暗号化を解除します。
このエンベロープ暗号化アプローチは、セキュリティとパフォーマンスの両方の利点を提供します。 DEK は頻繁な暗号化操作をローカルで処理しますが、Azure Key Vault の KEK はハードウェアを基盤とするキー管理システムのセキュリティを提供します。
キー管理オプション
AKS には、KMS 暗号化の 2 つの主要な管理オプションが用意されています。
プラットフォームマネージド キー (PMK)
プラットフォームで管理されるキーを使用すると、AKS によって暗号化キーが自動的に管理されます。
- AKS は暗号化キーを作成して管理します。
- キーのローテーションは、プラットフォームによって自動的に処理されます。
- 追加の構成やキー ボールトのセットアップは必要ありません。
プラットフォーム マネージド キーを使用する場合:
- 最小限の構成で最も簡単なセットアップが必要です。
- カスタマー マネージド キーを要求する特定の規制要件がありません。
- 手動操作なしでキーの自動ローテーションが必要です。
カスタマー マネージド キー (CMK)
カスタマー マネージド キーを使用すると、暗号化キーを完全に制御できます。
- 独自の Azure Key Vault と暗号化キーを作成して管理します。
- キーローテーションのスケジュールとポリシーを制御します。
カスタマー マネージド キーを使用する場合:
- カスタマー マネージド キーを要求する規制またはコンプライアンス要件があります。
- ローテーション スケジュールやキー バージョンなど、キーのライフサイクルを制御する必要があります。
- すべてのキー操作に監査ログが必要です。
Key Vault のネットワーク アクセス オプション
カスタマー マネージド キーを使用する場合は、Azure Key Vault のネットワーク アクセスを構成できます。
| ネットワーク アクセス | Description | 利用シーン |
|---|---|---|
| Public | Key Vault には、認証を使用してパブリック インターネット経由でアクセスできます。 | 開発環境、より簡単なセットアップ |
| Private | Key Vault にパブリック ネットワーク アクセスが無効になっています。 AKS は、 信頼されたサービス ファイアウォール例外を介してキー コンテナーにアクセスします。 | 運用環境、セキュリティの強化 |
暗号化キーオプションの比較
| 特徴 | プラットフォーム マネージド キー | カスタマー マネージド キー (パブリック) | カスタマー マネージド キー (プライベート) |
|---|---|---|---|
| キーの所有権 | Microsoft が管理する | 顧客が管理する | 顧客が管理する |
| キーのローテーション | 自動 | ユーザー構成可能 | ユーザー構成可能 |
| キー コンテナーの作成 | 自動 | 顧客が作成する | 顧客が作成する |
| ネットワークの分離 | N/A | いいえ | イエス |
Requirements
- プラットフォーム マネージド キーを使用した新しい KMS 暗号化、または自動キー ローテーション エクスペリエンスを備えたカスタマー マネージド キーには、Kubernetes バージョン 1.33 以降が必要です。
- プラットフォーム マネージド キーを使用した新しい KMS 暗号化、または自動キー ローテーション エクスペリエンスを備えたカスタマー マネージド キーは、クラスターの ID にマネージド ID が使用される AKS クラスターでのみサポートされます。
制限事項
- ダウングレードなし: 新しい KMS 暗号化エクスペリエンスを有効にした後、この機能を無効にすることはできません。
- キーの削除: 暗号化キーまたはキー コンテナーを削除すると、シークレットが回復できなくなります。
- プライベート エンドポイント アクセス: プライベート リンク/エンドポイント を使用した Key Vault アクセスはまだサポートされていません。 秘密キー ボールトの場合は、信頼されたサービスのファイアウォール例外を使用します。