このトピックでは、Container Service for Kubernetes (ACK) のセキュリティシステムについて、ランタイムセキュリティ、信頼できるソフトウェアサプライチェーン、インフラストラクチャセキュリティの3つの側面から説明します。 セキュリティシステムは、セキュリティ検査、ポリシー管理、実行時の監視とアラート、画像スキャン、画像署名、クラウドネイティブアプリケーション配信チェーン、デフォルトセキュリティ、ID管理、きめ細かなアクセス制御など、ACKが提供するさまざまな機能によってサポートされています。

ランタイムセキュリティ
セキュリティ検査
開発者は、ポッドテンプレートを構成するときに最小権限の原則に従う必要があります。 そうしないと、攻撃者はユーザーに付与された不要なポッド権限を悪用して、コンテナに対するエスケープ攻撃を開始できます。 ACKはランタイムのセキュリティ検査をサポートします。 これにより、実行中のアプリケーションのポッド構成を検査し、潜在的なリスクをリアルタイムでチェックできます。
検査レポートは、セキュリティ検査が実行された後に生成されます。 レポートには、各検査項目の説明とセキュリティ問題の修正方法に関する提案が含まれています。 定期検査を設定することもできます。 各定期検査の結果は、Simple Log Serviceの指定されたLogstoreに記録されます。 詳細については、「検査機能を使用してACKクラスターのワークロードのセキュリティリスクを検出する」をご参照ください。
ポリシー管理
ACKは、Open Policy Agent (OPA) をゲートキーパーのアドミッションコントローラーとして使用して、ポリシーガバナンスのステータスモニタリング、ログ収集、ログ取得などの拡張機能を提供します。 さらに、さまざまなポリシーライブラリがプリインストールされており、Kubernetesシナリオに適用できるセキュリティポリシーが増えています。 ACKコンソールでセキュリティポリシーを視覚化して設定できます。これにより、ポリシーガバナンスの設定が大幅に簡素化されます。 詳細については、「ポリシーガバナンス機能の有効化」をご参照ください。
ACKのポリシー管理機能は、セキュリティO&Mエンジニアのアプリケーション展開中に危険なアプリケーションを自動的にブロックするのに役立ちます。 これにより、アプリケーションのセキュリティが向上し、企業のアプリケーション開発およびO&Mチームの通信および学習コストが削減されます。
ランタイムのモニタリングとアラート
クラウドネイティブアプリケーションは、APIサーバーの認証およびアドミッション制御に合格した後、コンテナーにデプロイされます。 ただし、アプリケーションセキュリティのゼロ信頼原則に従って、アプリケーションランタイムのセキュリティを確保するために監視とアラートが必要です。 したがって、ACKは、Security Centerのアラートおよび脆弱性検出機能と深く統合されています。 これにより、クラスター管理者はアプリケーションの実行時間を監視し、セキュリティイベント時にアラートを受信できます。 ランタイムモニタリングとアラートは、コンテナに対して開始される次の攻撃を防ぐために使用されます。
悪意のあるイメージのロード
ウイルスや悪意のあるプログラムの移植
コンテナへの侵入
コンテナのエスケープとリスクの高い操作
受信したアラートをリアルタイムで表示し、アラートを処理するには、ACKコンソールのクラスターの詳細ページに移動します。 左側のウィンドウで、 を選択します。 詳細については、「セキュリティモニタリングの使用」をご参照ください。
サンドボックス容器
サンドボックス化されたコンテナは、Dockerランタイムに代わるもので、専用カーネルを使用してサンドボックス化された軽量の仮想マシンでアプリケーションを実行できます。 これにより、リソースの分離が強化され、セキュリティが向上します。
サンドボックスコンテナーは、信頼できないアプリケーションの分離、障害の分離、パフォーマンスの分離、複数のユーザー間のワークロードの分離などのシナリオに適用できます。 サンドボックス化されたコンテナーは、セキュリティを強化し、アプリケーションのパフォーマンスにわずかな影響を与え、ロギング、モニタリング、および柔軟なスケーリングの点でDockerと同じユーザーエクスペリエンスを提供します。 詳細については、「サンドボックスコンテナーの概要」をご参照ください。
TEEベースの機密コンピューティング
ACKは、信頼できる実行環境 (TEE) ベースの機密コンピューティングを提供します。これは、ハードウェア暗号化技術に基づくクラウドネイティブでオールインワンのソリューションです。 TEEベースの機密コンピューティングは、データのセキュリティ、整合性、および機密性を保証します。 信頼できるアプリケーションまたは機密アプリケーションの開発と配信を簡素化し、これらのアプリケーションの管理コストを削減します。
機密コンピューティングを使用すると、TEE内の機密データとコードを分離できます。 これは、データおよびコードがシステムの残りの部分によってアクセスされることを防止する。 TEE内に保存されたデータは、外部アプリケーション、BIOS、オペレーティングシステム、カーネル、管理者、O&Mエンジニア、クラウドサービスプロバイダ、およびCPU以外のハードウェアコンポーネントからアクセスできません。 これにより、データ漏えいの可能性が減り、データ管理が簡単になります。 詳細については、「TEEベースの機密コンピューティング」をご参照ください。
信頼できるソフトウェアサプライチェーン
画像スキャン
Container Registryを使用すると、既知の脆弱性についてすべてのLinuxベースのコンテナイメージをスキャンできます。 スキャンを実行すると、検出された脆弱性に関する情報とその修正方法に関する提案を含むレポートを受け取ることができます。 画像スキャンは、コンテナ画像のリスクを軽減するのに役立ちます。 Container Registryは、Security Centerのスキャンエンジンとも統合されています。 このエンジンは、システムの脆弱性、アプリケーションの脆弱性、イメージ内の悪意のあるサンプルを検出するために使用できます。
イメージの署名
コンテナイメージを管理するときは、コンテンツの信頼メカニズムを使用して、イメージとそのパブリッシャーが信頼されていることを確認できます。 画像発行者は、デジタル署名を使用して画像に署名できます。 デジタル署名はContainer Registryに保存されます。 イメージの署名を確認して、信頼できる機関によって署名されたイメージのみがデプロイされていることを確認できます。 これにより、悪意のあるコード実行のリスクが軽減され、ソフトウェアサプライチェーンからアプリケーション展開までのコンテナイメージのセキュリティとトレーサビリティが保証されます。 コンテナイメージの署名を検証する方法の詳細については、「kritis-validation-hookを使用してコンテナイメージの署名を自動的に検証する」をご参照ください。
クラウドネイティブアプリケーション配信チェーン
Container Registryは、高度なセキュリティと効率でコンテナ化されたアプリケーションを開発できるクラウドネイティブアプリケーション配信チェーン機能を提供します。 配信チェーンでは、イメージの構築、イメージのスキャン、グローバルイメージの同期、イメージの展開などのタスクを合理化できます。 きめ細かいセキュリティポリシーをカスタマイズすることもできます。 このように、アプリケーション開発のライフサイクル全体は、安全で、観測可能で、追跡可能です。 クラウドネイティブアプリケーション配信チェーンを使用した後は、アプリケーションごとに1回だけコードを送信する必要があります。 イメージは、安全で効率的な方法で世界中のすべての地域に分散および展開されます。 これにより、開発パイプラインがDevOpsからDevSecOpsに更新されます。 詳細については、「配信チェーンの作成」をご参照ください。
インフラストラクチャのセキュリティ
デフォルトのセキュリティ
ACKクラスタでは、制御プレーン上のノードおよびコンポーネントのセキュリティは、セキュリティ強化機能に基づいて強化される。 さらに、すべてのシステムコンポーネントの構成は、セキュリティに関するACKのベストプラクティスに従うことによって強化されます。 CVE (Common vulnerabilities and Exposures) によって識別される重大な脆弱性を含むコンポーネントイメージはありません。
新しく作成された各ACKクラスタには、インターネットからのインバウンドインターネット制御メッセージプロトコル (ICMP) パケットのみを許可するセキュリティグループが割り当てられます。 デフォルトでは、インターネット経由のSSHを使用してACKクラスターに接続することはできません。 インターネット経由でSSHを使用してACKクラスターに接続する方法の詳細については、「SSHを使用してACK専用クラスターのマスターノードに接続する」をご参照ください。
NAT Gatewayを使用して、ACKクラスター内のノードのインターネットアクセスを有効にできます。 これにより、インターネットアクセスが保護され、セキュリティリスクが軽減されます。
マネージドACKクラスター内のワーカーノードには、最小特権の原則に従って許可されるリソースアクセス管理 (RAM) ロールが割り当てられます。 これらのRAMロールには、Alibaba Cloudリソースに対する最小限の権限しかありません。 詳細については、「 [製品の変更] ACKによるマネージドKubernetesクラスターのワーカーRAMロールの権限の削減」をご参照ください。
ID管理
ACKクラスター内のすべてのコンポーネント間の通信とデータ送信は、TLSベースの認証を使用して保護する必要があります。 さらに、ACKはシステムコンポーネントの証明書を自動的に更新します。 ACKコンソールにログインするか、RAMユーザーとしてACK APIを呼び出すか、RAMロールを引き受けて、指定されたクラスターのkubeconfigファイルを取得できます。 詳細については、「クラスターのkubeconfigファイルの照会」をご参照ください。 クラスタ認証情報は、ACKによって維持される。 返されたkubeconfigファイルのクラスター資格情報が漏洩した場合は、すぐにkubeconfigファイルを取り消す必要があります。 詳細については、「クラスターのkubeconfigファイルの取り消し」をご参照ください。
ACKクラスターを作成するときに、サービスアカウントトークンボリュームプロジェクションを有効にできます。 この機能は、アプリケーションでサービスアカウントを使用するときのセキュリティを強化します。 詳細については、「ServiceAccountトークンボリューム予測の使用」をご参照ください。
きめ細かいアクセス制御
ACKは、ロールベースのアクセス制御 (RBAC) に基づいて、ACKクラスター内のKubernetesリソースの詳細なアクセス制御を提供します。 これは、アプリケーションセキュリティの基本的だが不可欠な強化です。 ACKコンソールの [権限付与] ページで、RAMユーザーまたはRAMロールに名前空間の詳細な権限を付与できます。 この承認方法には、次の利点があります。
管理者、O&Mエンジニア、開発者、制限付きユーザーの定義済みRBACロールを提供します。 これにより、企業の階層部門の従業員に権限を簡単に付与できます。
一度に複数のクラスターに権限を付与したり、複数のRAMユーザーに権限を付与したりできます。
RAMロールによって引き受けられるようにRAMユーザーを承認することができます。
カスタムクラスターロールを割り当てることができます。
詳細については、「RAMユーザーまたはRAMロールへのRBAC権限の付与」をご参照ください。
ゲートキーパーコンポーネントは、ACKコンソールの [アドオン] ページでインストールできます。 このコンポーネントは、OPAポリシーエンジンを使用してきめ細かいアクセス制御を提供します。 詳細は、「gatekeeper」をご参照ください。
監査
ACKはSimple Log Serviceと深く統合されています。 次のタイプの監査ログを収集、取得、および視覚化できます。
クラスターのAPIサーバーの監査ログ。 このタイプの監査ログは、ユーザーがクラスターにアクセスするときにユーザーによって実行される操作を記録します。 監査ログを確認して、各操作を追跡できます。 これは、クラスターを安全に維持するための重要なコンポーネントです。 [クラスター監査] ページでは、さまざまな監査レポートを表示し、ログの内容に基づいて特定のリソースタイプで実行される操作のアラートを設定できます。 詳細については、「クラスター監査の操作」をご参照ください。
Ingressトラフィックの監査ログ。 クラスター内のIngressのステータスを示すために、複数の可視化されたトラフィックレポートが提供されます。 レポートは、サービスのページビュー (PV) とユニークビジター (UV) 、リクエストの成功と失敗の比率、レイテンシなどの情報を提供します。 例外は、Simple Log Serviceが提供する機械学習アルゴリズムと時系列分析アルゴリズムを使用して自動的に検出することもできます。 詳細については、「nginx-ingress-controllerのアクセスログの分析と監視」をご参照ください。
イベントモニタリングの監査ログ。 イベントモニタリングは、監査ログにクラスターイベントを記録します。 これらのイベントに基づいて、クラスター内の例外とセキュリティリスクを診断できます。 詳細については、「イベントモニタリング」をご参照ください。
秘密の暗号化
Kubernetes Secretsは、etcdに保存されるときにBase64でエンコードされます。 保存されているKubernetes Secretsのセキュリティをさらに強化するために、Key Management Service (KMS) で作成されたキーを使用してACK ProクラスターのSecretsを暗号化できます。 詳細については、「KMSを使用したKubernetes Secretsの暗号化」をご参照ください。