Container Service for Kubernetes (ACK) を使用すると、Key Management Service (KMS) のカスタマーマスターキー (CMK) を利用して、プロフェッショナルマネージド Kubernetes クラスターの etcd に保存されているシークレットを暗号化できます。これにより、クラスターの約 50 個の組み込みシークレットと、作成するアプリケーションシークレットに保存されているパスワード、証明書、認証情報、アクセスキーなどの機密データを保護します。
仕組み
ACK は、Kubernetes の KMS プロバイダーメカニズムを使用してエンベロープ暗号化を実装します。エンベロープ暗号化では、2 つのキーレイヤーを使用します。
データ暗号化キー (DEK): 各シークレットに対して生成される一意キー。DEK は実際のシークレットデータを暗号化します。
キー暗号化キー (KEK): ご利用の KMS の CMK。KEK は DEK を暗号化します。
暗号化フロー
Kubernetes Secret API を使用して Kubernetes Secret を格納する場合、
API サーバーがランダムな DEK を生成します。
DEK がシークレットデータを暗号化します。
KMS がご利用の CMK を使用して DEK を暗号化します。
DEK の暗号文は、暗号化されたシークレットとともに etcd に保存されます。
復号フロー
Secret を取得するとき:
KMS がご利用の CMK を使用して DEK 暗号文を復号します (
Decrypt操作経由)。プレーンテキスト DEK がシークレットデータを復号します。
復号されたシークレットが返されます。
前提条件
開始する前に、以下を確認してください。
AliyunCSManagedSecurityRole ロールが割り当てられた Alibaba Cloud アカウント。ロールが割り当てられていない場合、シークレット暗号化を有効にするときに割り当てるよう求められます。
AliyunKMSCryptoAdminAccess 権限が付与された RAM ユーザー。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
KMS コンソールで作成された Aliyun_AES_256 タイプの CMK。詳細については、「CMK の作成」をご参照ください。
新しいクラスターでの保管時のシークレット暗号化の有効化
ACK コンソールにログインします。
左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページの右上隅で、[クラスターテンプレート] をクリックします。
[クラスターテンプレートの選択] ダイアログボックスで、[プロフェッショナルマネージド Kubernetes クラスター] を選択し、[作成] をクリックします。
[マネージド Kubernetes] タブで、[Secret の暗号化] を見つけ、[キーの選択] を選択し、ドロップダウンリストから CMK ID を選択します。
残りのパラメーターを設定し、クラスターの作成を完了します。
クラスター作成の詳細については、「ACK Pro クラスターの作成」をご参照ください。
既存のクラスターでの保管時のシークレット暗号化の有効化
[クラスター] ページで、プロフェッショナルマネージドKubernetes クラスターの名前をクリックします。
[基本情報] タブをクリックします。[基本情報] セクションで、[シークレット暗号化] を有効化します。
[シークレットの暗号化] ダイアログボックスで、[既存のキー] ドロップダウンリストから CMK ID を選択し、[OK] をクリックします。
クラスターのステータスが [更新中] から [実行中] に変更されると、Secret の保管時の暗号化が有効になります。
暗号化の検証
シークレット暗号化がアクティブであることを確認するには、次の手順を実行します。
ActionTrail コンソールを開きます。
[イベント詳細クエリ] ページに移動します。
AliyunCSManagedSecurityRole ロールでイベントをフィルタリングし、KMS の暗号化または復号の呼び出しを探します。
KMS イベントが表示された場合、クラスターの保管時のシークレット暗号化はアクティブです。