本トピックでは、Container Service for Kubernetes (ACK) のセキュリティシステムを、ランタイムセキュリティ、信頼されたソフトウェアサプライチェーン、インフラストラクチャセキュリティの 3 つの観点から説明します。このシステムには、セキュリティ検査、ポリシー管理、ランタイム監視およびアラート通知、イメージスキャン、イメージ署名、クラウドネイティブアプリケーション配信チェーン、デフォルトのセキュリティ設定、ID 管理、および細かい粒度でのアクセス制御などの機能が含まれます。

ランタイムセキュリティ
セキュリティ検査
アプリケーション開発者は、アプリケーションのデプロイメントテンプレートを構成する際に、最小権限の原則に従う必要があります。攻撃者は、アプリケーション Pod に不要な特権機能を悪用してコンテナー脱出攻撃を仕掛けることがよくあります。そのため、ACK ではアプリケーションのランタイム向けにセキュリティ構成検査機能を提供しています。これにより、実行中のアプリケーションの構成におけるセキュリティリスクをリアルタイムで検査できます。
検査結果はレポートとして表示されます。このレポートには、スキャン対象項目の説明と修正に関する推奨事項も含まれます。また、定期的な検査を設定することも可能です。スキャン結果は、Simple Log Service (SLS) の指定された Logstore に保存されます。詳細については、「構成検査を使用してクラスターワークロードのセキュリティリスクを検査する」をご参照ください。
ポリシー管理
ACK では、Open Policy Agent (OPA) ポリシーに基づく Gatekeeper アドミッションコントローラーを使用し、ポリシーガバナンスのステータス統計やログの報告・取得などの拡張機能を提供しています。また、Kubernetes シナリオ向けに豊富な組み込みポリシーガバナンスルールライブラリも備えており、より多くのポリシールールを提供します。ACK コンソール上で、ポリシーガバナンスルールをビジュアル操作で設定できます。これにより、ポリシーガバナンス機能の利用障壁が低減されます。詳細については、「コンテナーのセキュリティポリシーの設定(新規)」をご参照ください。
ACK のポリシー管理機能により、企業のセキュリティ運用・保守エンジニアは、デプロイ段階においてポリシーに準拠しないリスクのあるアプリケーションを自動的にブロックできます。これにより、クラスター内のアプリケーションのランタイムセキュリティが向上し、企業のアプリケーション開発チームおよび運用・保守チーム間のコミュニケーションコストと学習コストが削減されます。
ランタイム監視およびアラート通知
コンテナ化されたアプリケーションが正常にデプロイされ、API サーバーの認証およびアドミッションコントロールを通過した後でも、アプリケーションのランタイム中にセキュリティ監視およびアラート通知機能が必要です。これは、クラウドネイティブアプリケーションに対するゼロトラストセキュリティ原則に則ったものです。そのため、ACK はセキュリティセンターのアラート処理および脆弱性検出機能と深く連携しています。クラスター管理者は、アプリケーションのランタイム中に監視およびアラート通知機能を提供できます。主なコンテナー側攻撃防止動作は以下のとおりです:
悪意のあるイメージ起動に対するアラート
ウイルスおよび悪意あるプログラムの検出と除去
コンテナー内部への侵入に対するアラート
コンテナー脱出および高リスク操作に対する早期警告
リアルタイムのアラートは、クラスター管理ページの ページで受信できます。画面の指示に従って、アラートの詳細を確認および対応してください。詳細については、「セキュリティ監視の使用」をご参照ください。
サンドボックス化コンテナー管理
従来の Docker ランタイムと比較して、サンドボックス化コンテナーは新しいコンテナーランタイムの選択肢を提供します。これにより、アプリケーションを軽量な仮想マシンサンドボックス環境で、独立したカーネルとともに実行でき、より優れたセキュリティ分離を実現できます。
サンドボックス化コンテナーは、信頼されていないアプリケーションの分離、障害分離、パフォーマンス分離、および複数ユーザー間のワークロード分離など、さまざまなシナリオに特に適しています。セキュリティを強化する一方で、パフォーマンスへの影響は最小限であり、ロギング、モニタリング、エラスティシティなどの機能に関しては、Docker コンテナーと同等のユーザーエクスペリエンスを提供します。サンドボックス化コンテナー管理の詳細については、「サンドボックス化コンテナー」をご参照ください。
ACK-TEE 機密コンピューティング
金融や政府など、セキュリティ要件が極めて高いアプリケーションシナリオ向けに、ACK-TEE 機密コンピューティングは、ハードウェア暗号化技術に基づくクラウドネイティブかつワンストップの機密コンピューティングコンテナープラットフォームを提供します。これにより、データの使用時(計算時)におけるセキュリティ、完全性、機密性を保護するとともに、信頼性または機密性の高いアプリケーションの開発、配信、管理コストを簡素化できます。
機密コンピューティングでは、重要なデータおよびコードを、システムの他の部分に公開することなく、特別なトラステッドエグゼキューションエンバイロメント(TEE)内に配置できます。他のアプリケーション、BIOS、OS、カーネル、管理者、運用・保守エンジニア、クラウドベンダー、CPU を除くハードウェアなどは、機密コンピューティングプラットフォーム上のデータにアクセスできません。これにより、機密データの漏洩リスクが大幅に低減され、より優れた制御性、透明性、およびプライバシーが実現されます。詳細については、「ACK-TEE 機密コンピューティング」をご参照ください。
信頼されたソフトウェアサプライチェーン
イメージスキャン
Container Registry は、すべての Linux ベースのコンテナイメージに対してセキュリティスキャンをサポートしており、イメージ内の既知の脆弱性を特定できます。脆弱性評価および関連する修正推奨事項を取得することで、コンテナー利用時のセキュリティリスクを大幅に低減できます。また、Container Registry はセキュリティセンターのスキャンエンジンと統合されており、イメージ内のシステム脆弱性、アプリケーション脆弱性、および悪意あるサンプルを検出できます。
イメージ署名
コンテナイメージ管理において、コンテンツトラスト機構を活用することで、イメージソースのセキュリティを確保し、改ざんを防止できます。イメージ作成者は、イメージをデジタル署名できます。このデジタル署名は Container Registry に保存されます。デプロイ前にコンテナイメージの署名を検証することで、信頼された機関によって署名されたコンテナイメージのみをクラスターにデプロイできます。これにより、予期しない、または悪意あるコードがご利用の環境で実行されるリスクが低減されます。また、ソフトウェアサプライチェーンからコンテナーのデプロイメントプロセスに至るまで、アプリケーションイメージのセキュリティおよびトレーサビリティを確保できます。イメージ署名および署名検証の設定および使用方法については、「kritis-validation-hook コンポーネントを使用してコンテナイメージの署名を自動検証する」をご参照ください。
クラウドネイティブアプリケーション配信チェーン
安全かつ効率的なコンテナー配信を必要とするシナリオでは、Container Registry のクラウドネイティブアプリケーション配信チェーン機能を利用できます。イメージのビルド、イメージスキャン、グローバルイメージ同期、イメージデプロイメントなどのタスクを設定できます。また、細かい粒度でのセキュリティポリシーをカスタマイズすることで、エンドツーエンドで可視化可能かつトレーサブルな安全な配信を実現できます。これにより、単一のコードコミットが世界中の複数リージョンにわたって安全な配布および効率的なデプロイメントをトリガーし、デリバリープロセスを DevOps から DevSecOps へと進化させます。クラウドネイティブアプリケーション配信チェーンの詳細については、「配信チェーンの作成」をご参照ください。
インフラストラクチャセキュリティ
デフォルトのセキュリティ
Alibaba Cloud ACK クラスター内のノードおよびコントロールプレーンコンポーネントの構成は、「Alibaba Cloud Kubernetes セキュリティ強化」機能に基づいて強化されています。また、クラスター内のすべてのシステムコンポーネントも、コンテナーのセキュリティに関するベストプラクティスに従って強化されています。これにより、システムコンポーネントのイメージには重大レベルの CVE 脆弱性が存在しません。
各新規クラスターには、デフォルトで対応するセキュリティグループが割り当てられます。このセキュリティグループでは、インターネットからのインバウンド ICMP リクエストのみを許可します。デフォルトでは、インターネット経由で SSH を使用してクラスターノードに接続することはできません。インターネット経由でクラスターノードへの SSH 接続を設定したい場合は、「ACK 専用クラスターのマスターノードへの SSH 接続」をご参照ください。
クラスターノードは NAT Gateway を介してパブリックネットワークにアクセスするため、セキュリティリスクがさらに低減されます。
マネージドクラスターのワーカーノードでは、ノードにアタッチされた RAM ロールが最小権限の原則に従います。これらのロールに対する Alibaba Cloud リソースアクセス権限は最小限に抑えられています。詳細については、「[製品変更] マネージドクラスターノードの RAM ロール権限統合に関するお知らせ」をご参照ください。
ID 管理
ACK クラスター内のコンポーネント間のすべての通信リンクでは、TLS 証明書検証が必須であり、エンドツーエンドの安全なデータ伝送を保証します。ACK コントロールプレーンは、システムコンポーネントの証明書の自動更新を担当します。RAM ユーザーまたは RAM ロールを偽装したユーザーは、コンソールまたは OpenAPI を通じて、指定されたクラスターの API サーバーに接続するための Kubeconfig アクセス認証情報を取得できます。詳細については、「クラスターの KubeConfig の取得」をご参照ください。ACK は、アクセス認証情報に発行された ID 情報を維持します。分散型の Kubeconfig が侵害された場合、すばやく取り消すことができます。詳細については、「クラスターの KubeConfig 認証情報の取り消し」をご参照ください。
クラスターを作成する際、ACK はアプリケーション内のサービスアカウントのセキュリティを強化するための サービスアカウントトークンボリュームプロジェクション 機能をサポートしています。詳細については、「サービスアカウントトークンボリュームプロジェクションのデプロイ」をご参照ください。
細かい粒度でのアクセス制御
ACK クラスター内の Kubernetes リソースに対するアクセス制御は、Kubernetes RBAC に基づいて実装されており、これはアプリケーションにとって基本的かつ必須のセキュリティ強化措置です。ACK コンソールの 許可管理 ページでは、名前空間レベルの細かい粒度での RBAC 権限付与機能を提供しています。主な特徴は以下のとおりです:
管理者、運用・保守エンジニア、開発者などの役割に応じた事前定義済み RBAC 権限テンプレートを提供し、多様な企業の権限要件に対応します。これにより、RBAC 権限付与の利用難易度が低減されます。
複数のクラスターおよび複数の RAM ユーザーに対する一括権限付与をサポートします。
RAM ロールを偽装したユーザーに対する権限付与をサポートします。
クラスター内のカスタム ClusterRole をユーザーにバインドすることをサポートします。
詳細については、「RAM ユーザーまたは RAM ロールに対する RBAC ロールの設定」をご参照ください。
ACK では、コンポーネント管理を通じて Gatekeeper コンポーネントをインストールし、OPA ポリシー・エンジンに基づく細かい粒度でのアクセス制御を提供することもサポートしています。詳細については、「gatekeeper」をご参照ください。
監査
ACK は Simple Log Service と深く連携しており、複数種類の監査ログの収集、取得、および可視化機能をサポートしています。これらには以下の 3 種類があります:
クラスター API サーバー監査ログ:クラスター訪問者の日常的な操作を記録または追跡するために使用され、クラスターのセキュリティ運用・保守の重要な要素です。クラスター監査 ページでは、充実した監査レポートを閲覧でき、ログ内容に基づいて指定されたリソースタイプに対する操作についてリアルタイムのアラートを設定できます。詳細については、「クラスター API サーバー監査機能の使用」をご参照ください。
Ingress トラフィック監査:さまざまな可視化トラフィックレポートを通じて、クラスター Ingress の全体状況を把握できます。これには、サービスアクセスの PV および UV、成功/失敗比率、レイテンシー情報などの包括的なトラフィック監視が含まれます。また、Simple Log Service が提供する機械学習アルゴリズムを活用し、さまざまな時系列分析アルゴリズムを用いて Ingress メトリックから異常を自動検出することもサポートしており、問題検出の効率を向上させます。詳細については、「NGINX Ingress アクセスログの収集および分析」をご参照ください。
イベント監視監査:イベントベースの監視により、イベントをキャプチャすることで、クラスターの異常およびセキュリティリスクをリアルタイムで診断できます。詳細については、「イベント監視」をご参照ください。
静止時のシークレット暗号化
ネイティブの Kubernetes Secrets は、etcd に静止時に格納される際に Base64 エンコーディングされるのみです。静止時の Secrets 内の機密データのセキュリティを保護するため、Alibaba Cloud Key Management Service (KMS) で作成したキーを使用して、ACK Pro マネージドクラスター内の Kubernetes クラスターシークレットを暗号化できます。これにより、機密アプリケーションデータの静止時暗号化が実現されます。詳細については、「Alibaba Cloud KMS を使用した静止時の Secrets の暗号化」をご参照ください。