ディスクを暗号化し、Kubernetes の Secret を保護し、キーをローテーションして、Container Service for Kubernetes (ACK) クラスター内の機密データを保護します。進化する脅威に対応するため、暗号化アルゴリズムとキー管理戦略を継続的に監視および更新します。
データ暗号化
ディスク暗号化の推奨事項
保存時のデータを保護するには:
-
ディスク暗号化の有効化:セキュリティベースラインとして ディスクボリュームを暗号化 します。
-
CMK の定期的なローテーション:自動キーローテーション とキーのバージョニングを設定して、侵害されたキーの影響範囲を限定します。
KMS を使用したディスクボリュームの暗号化
Key Management Service (KMS) のストレージ暗号化は、別のキー管理システムを必要とすることなく、Elastic Compute Service (ECS) インスタンス内のデータを保護します。詳細については、「ディスクボリュームの暗号化」をご参照ください。
作成時に KMS キーでディスクボリュームを暗号化するには:
-
StorageClass を作成します。
-
sc-kms.yamlという名前のファイルを作成します:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk provisioner: diskplugin.csi.alibabacloud.com parameters: fsType: ext4 type: cloud_ssd encrypted: "true" kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx reclaimPolicy: Delete -
StorageClass を作成します:
kubectl create -f sc-kms.yaml
-
-
PersistentVolumeClaim (PVC) を作成します。
-
sc-pvc.yamlという名前のファイルを作成します:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-disk-
ReadWriteOnce
-
-
PVC を作成します:
kubectl create -f sc-pvc.yaml
-
キー管理
Kubernetes の Secret は、パスワード、証明書、トークンなどの機密データを、Pod が消費するオブジェクトとして保存します:
-
Secret は Namespace スコープです。Kubernetes のロールベースのアクセス制御 (RBAC) を使用して、Namespace ごとに Secret の読み取りと書き込みを分離します。
-
Secret をファイルまたは環境変数として Pod 内のコンテナにマウントします。
-
Secret データは、ノード上の一時ファイルシステム (tmpfs) に存在します。
-
API サーバーは、Secret を Base64 エンコードされたプレーンテキストとして etcd に保存します。
-
Secret は 1 MB に制限されています。
Secret は、デフォルトではセキュリティを保証しません。クラウドのキー管理ソリューションと以下のベストプラクティスを使用して、機密データを保護してください。
セキュリティソリューション
責任共有モデルに基づき、クラウドプロバイダーはコントロールプレーンを保護し、キー管理ソリューションを提供します。
KMS の使用
KMS はキーのライフサイクルを管理し、自動キーローテーションを含むデータ暗号化を提供して、侵害リスクを低減し、コンプライアンス要件を満たします。
認証情報のハードコーディングを避けるため、KMS を使用して、開発、テスト、ビルドの各パイプラインにわたってキーを管理してください。詳細については、「KMS とは」をご参照ください。
Secret Store CSI driver の使用
ほとんどのアプリケーションは、ファイルシステムパスまたは環境変数からキーを取得します。Kubernetes コミュニティプロジェクトである secrets-store-csi-driver は、外部キー管理サービスのキーをボリュームとして Pod にマウントするため、アプリケーションは Kubernetes の Secret を作成したり、プレーンテキストを etcd に保存したりすることなくキーにアクセスできます。
機能:
-
外部キー管理サービスのキーをボリュームとして Pod にマウントします
-
etcd 内のプレーンテキストの Secret を回避し、大規模クラスターにおける Secret 管理のオーバーヘッドを削減します
-
KMS からのキーの変更をリアルタイムでコンテナに同期します
-
アプリケーションコードからキー管理サービスの API 呼び出しを排除します
Alibaba Cloud の secrets-store-csi-driver-provider-alibabacloud をデプロイして、KMS キーをファイルまたは Kubernetes Secret としてコンテナに同期してください。
The Last Key の問題 (CSI ドライバーが KMS のアクセス許可を必要とする問題) を解決するには、RAM Roles for Service Accounts (RRSA) を使用してください。RRSA は、Pod に直接アクセス許可を付与する代わりに、CSI ドライバーの ServiceAccount に KMS キーへのアクセスを付与します。
etcd 暗号化の有効化
etcd は、デフォルトで Kubernetes の Secret を Base64 エンコードされたプレーンテキストとして保存するため、セキュリティリスクをもたらします。マネージドクラスターでは、クラウドプロバイダーが etcd を管理します。クラウドのゼロトラスト原則と多くのシナリオにおけるコンプライアンス要件に基づき、etcd 暗号化 を有効にして、KMS から Secret に同期する際にキーを暗号化し、取得時に復号します。自動キーローテーションと組み合わせることで、データセキュリティをさらに強化できます。
機密コンテナの使用
金融決済、プライバシー認証、知的財産データコンピューティングなど、強化されたデータセキュリティが要求されるシナリオでは、高信頼実行環境 (TEE) ベースの機密コンピューティング向け ACK クラスターを使用してください。TEE ベースの機密コンピューティングは、ハードウェア暗号化に基づいた信頼できる暗号化された実行環境を提供し、ライフサイクル全体を通じて機密データの完全性と機密性を保護します。アプリケーションキーは、キーの伝送を減らすために、KMS のハードウェアセキュリティモジュール (HSM) に似た分離環境であるエンクレーブに保存できます。
セキュリティのベストプラクティス
クラウドプロバイダーのソリューションに加えて、開発者と運用保守 (O&M) エンジニアは、アプリケーションレイヤーでキーを保護する必要があります。
RBAC の適用
クラスターアクセスを割り当てる際は、最小権限の原則に従ってください。グローバルな Secret に対する読み取りおよび書き込み権限を持つ認証情報を発行することは避けてください。侵害された可能性のあるクラスター認証情報を失効させてください。
Pod セキュリティの強化
コンテナエスケープは、Kubernetes クラスターに対する一般的な攻撃です。攻撃者がホストにエスケープすると、ノードに保存されている Secret を読み取り、クラスター全体のアクセスにエスカレートする可能性があります。Pod のケーパビリティを最小限に抑えるには、Security Context を設定してください。特権設定、共有ホストネットワーク、または共有ファイルシステムは避けてください。security policies を使用して権限に違反するデプロイを拒否してください。NetworkPolicy を使用して Pod の東西トラフィックを制御し、ラテラルムーブメント攻撃のリスクを軽減してください。
ノードセキュリティの強化
プライベートネットワークを使用し、セキュリティグループにアクセスコントロールリスト (ACL) ルールを追加して、インバウンドおよびアウトバウンドトラフィックを制御してください。等級保護制度 (MLPS) または Alibaba Cloud Linux Security Hardening に基づいて、ID 検証、アクセス制御、監査、侵入防止のコンプライアンス基準を定義してください。詳細については、「MLPS に基づく ACK のセキュリティ強化」をご参照ください。
定期的にベースライン検査を実行して、リスクの高い設定を特定し、脆弱性に迅速にパッチを適用してください。
サプライチェーンセキュリティの強化
テンプレート、リポジトリ、設定ファイルに機密情報をハードコーディングしないでください。キー管理サービスを使用して、サプライチェーン全体でキーを一元管理してください。自動セキュリティ検査を実装して、サプライチェーンの各段階でのデータ侵害を防いでください。
キー操作の監査と監視
すべてのキー操作 (読み取り、書き込み、使用、ライフサイクル管理) を監査およびログに記録して、トレーサビリティを確保してください。機密データに対する疑わしい操作や侵害された AccessKey ペアに関するアラートを含むランタイム監視を設定してください。アラートとログは、運用保守エンジニアが侵害に対応し、影響を評価し、損失を最小限に抑えるのに役立ちます。
一時トークンとキーローテーションの使用
AccessKey ペアなどの静的キーは避けてください。代わりに一時トークンを使用してください。侵害された一時トークンは限られた時間のみ有効であり、攻撃対象領域を最小限に抑え、脆弱性にパッチを適用するための時間が確保できます。
KMS キーの場合は、自動キーローテーションを有効にするか、定期的にキーをローテーションしてセキュリティを強化してください。
エンベロープ暗号化による The Last Key の保護
エンベロープ暗号化では、コンテンツ暗号化キー (CEK) を使用してデータをローカルで暗号化し、次に KMS のキー暗号化キー (KEK) で CEK を暗号化します。これにより、暗号化と復号がオフラインに保たれ、クラウドへのキーのアップロードが回避され、大容量データのデータ伝送コストを削減し、クラウドプロバイダーにプレーンテキストデータを信頼することに関する懸念にも対応します。詳細については、「エンベロープ暗号化を使用したローカルデータの暗号化と復号」をご参照ください。
The Last Key は、KMS ベースの暗号化シナリオで一般的な問題です。最小権限で KEK を保護するには、Alibaba Cloud の Resource Access Management (RAM) を使用して、KEK の取得に使用される認証情報へのアクセスを制御してください。自動的にローテーションされる一時トークンを使用して、それらの認証情報を保護してください。RRSA などの分離メカニズムを使用して、RAM 認証情報にアクセスできるアプリケーションを制限してください。