Container Service for Kubernetes (ACK) では、Key Management Service (KMS) のカスタマーマスターキー (CMK) を使用して、Kubernetes Secret の保管時の暗号化を有効にできます。この機能により、簡単な設定でクラスターの機密データを保護できます。
ユースケース
Kubernetes は、異なるプロダクト、サービス、モジュール間の通信に必要なパスワード、証明書、認証情報、アクセスキーといった機密情報を管理します。Kubernetes は、クラスターシステムおよびそのアプリケーションのために、Secret オブジェクトを使用してこの機密データを格納・管理します。これらの Secret は、クラスターの etcd に保存され、複製されます。
たとえば、ワークロードのない新規 Kubernetes クラスターにも、約 50 のデフォルト Secret が含まれています。これらの Secret のいずれかが漏洩すると、クラスター、アプリケーション、およびビジネスオペレーションに重大なリスクをもたらします。したがって、潜在的なセキュリティ脅威からクラスターに保存されている認証情報を保護することがきわめて重要です。
仕組み
ACK Pro マネージドクラスターでは、Key Management Service (KMS) で作成されたカスタマーマスターキー (CMK) を使用して Kubernetes Secret を暗号化できます。暗号化プロセスは、Kubernetes の KMS Encryption Provider メカニズムに基づいており、エンベロープ暗号化を使用して etcd に保存されている Kubernetes Secret を自動的に暗号化および復号します。エンベロープ暗号化の詳細については、「KMS を使用したエンベロープ暗号化によるローカルでのデータの暗号化と復号」をご参照ください。Kubernetes Secret の暗号化と復号のプロセスは次のとおりです:
Kubernetes API を使用して Secret が保存されると、API サーバーはまずランダムに生成されたデータキーでデータを暗号化します。次に、API サーバーは指定された KMS の CMK でこのデータキーを暗号化し、暗号化されたデータキーを作成して etcd に保存します。
Secret が取得されると、API サーバーは KMS の Decrypt API を呼び出して暗号化されたデータキーを復号します。次に、API サーバーはそのプレーンテキストキーを使用して Secret データを復号し、クライアントに返します。
前提条件
Kubernetes クラスターの管理に使用する Alibaba Cloud アカウントには、AliyunCSManagedSecurityRole ロールが付与されている必要があります。このロールが付与されていない場合、新規または既存の ACK Pro クラスターで保管時の暗号化を有効にする際に、ロールの付与を求めるプロンプトが表示されます。
RAM ユーザーとしてログインする場合は、その RAM ユーザーに AliyunKMSCryptoAdminAccess 権限が付与されていることを確認してください。詳細については、「RAM ユーザー権限の管理」をご参照ください。
KMS コンソールでカスタマーマスターキー (CMK) を作成済みであることを確認してください。詳細については、「キーの作成」をご参照ください。
説明Aliyun_AES_256 タイプの CMK のみがサポートされています。
新規クラスターでの Secret 暗号化の有効化
ACKコンソールにログインします。
[クラスター] ページの右上隅にある [クラスターテンプレート] をクリックします。
クラスターテンプレートの選択 ダイアログボックスで、Professional マネージド Kubernetes クラスター を選択し、作成する をクリックします。
ACK マネージドクラスター タブの シークレット暗号化 セクションで、キーの選択 チェックボックスをオンにし、ドロップダウンリストからキー ID を選択します。
プロンプトに従って他のパラメーターを設定します。
詳細については、「ACK Pro クラスターの作成」をご参照ください。
既存クラスターでの Secret 暗号化の有効化
クラスターリスト ページで、対象の ACK Pro クラスターの名前をクリックします。
基本情報 タブをクリックし、基本情報 セクションで シークレット暗号化 スイッチをオンにします。
シークレット暗号化 ダイアログボックスで、ドロップダウンリストからキー ID を選択し、OK をクリックします。
クラスターのステータスが 更新中 から [Running] に変わると、保管時の暗号化機能が有効になります。
結果の確認
ActionTrail コンソールで、Secret の保管時の暗号化が有効になっていることを確認できます。[Event Query] ページで AliyunCSManagedSecurityRole に関連付けられた暗号化イベントと復号イベントが見つかった場合、この機能は有効になっています。ActionTrail を使用して、KMS へのすべての API コールを監査できます。