クラスターのコンプライアンス要件を満たし、クラスターのセキュリティを向上させるために、セキュリティポリシー管理機能を有効にできます。セキュリティポリシー管理機能は、Kubernetes コンテナーシナリオ向けのセキュリティポリシールールを提供します。これらのルールは、インフラストラクチャ (Infra)、Kubernetes コンプライアンス仕様 (Compliance)、PodSecurityPolicy (PSP) 機能に基づく拡張、および一般ポリシー (K8s-general) などのディメンションをカバーしています。コンソールでコンテナーアプリケーションのセキュリティポリシーを有効化またはカスタマイズできます。これにより、Pod のデプロイメントと更新が安全で制御可能であることを保証できます。
ポリシー管理の概要
PodSecurityPolicy (PSP) は Kubernetes 1.21 で非推奨になりました。これに対応して、Container Service for Kubernetes (ACK) は、元の PSP ベースのポリシー管理機能をアップグレードしました。ACK は、Open Policy Agent (OPA) ポリシーに基づく Gatekeeper アドミッションコントローラーを使用して機能を拡張しました。これらの拡張には、ポリシー管理ステータスの統計、ログのレポートと取得が含まれます。ACK はまた、より広範な Kubernetes アプリケーションシナリオに対応する、豊富な組み込みのポリシー管理ルールライブラリを提供します。コンソールのシンプルなインターフェイスを使用してルールを設定できます。これにより、ポリシー管理機能を使用するための障壁が低くなります。
前提条件
クラスターのバージョンが 1.16 以降であること。クラスターをアップグレードするには、「ACK クラスターを手動でアップグレードする」をご参照ください。
RAM (Resource Access Management) ユーザーを使用してポリシーを管理する場合、RAM ユーザーに次の権限があることを確認してください:
cs:DescribePolicies: ポリシー管理ルールライブラリをリストします。cs:DescribePolicyDetails: ポリシールールテンプレートの詳細を取得します。cs:DescribePolicyGovernanceInCluster: クラスターのポリシー管理詳細を取得します。cs:DescribePolicyInstances: クラスターにデプロイされているポリシーインスタンスのリストを取得します。cs:DescribePolicyInstancesStatus: クラスター内の異なるポリシータイプのインスタンスのデプロイメントステータスを取得します。cs:DeployPolicyInstance: 指定されたクラスターにポリシールールインスタンスをデプロイします。cs:DeletePolicyInstance: 指定されたクラスターのポリシールールインスタンスを削除します。cs:ModifyPolicyInstance: 指定されたクラスターのポリシールールインスタンスを変更します。
カスタム RAM ポリシーの作成方法の詳細については、「RAM を使用してクラスターとクラウドリソースへのアクセス権限を付与する」をご参照ください。
セキュリティポリシーコンポーネントの比較
ACK は、マネージドとアンマネージドの 2 種類のセキュリティポリシーコンポーネントを提供します。一度にクラスター内で有効にできるのは 1 種類のみです。次の表は、2 つのタイプを比較したものです。
項目 | マネージド | アンマネージド |
デプロイモード | コントロールプレーンホスト型: コンポーネントはクラスターのコントロールプレーンにデプロイされ、ACK によって完全に管理されます。 | データプレーンホスト型: コンポーネントはワークロードとしてクラスターにデプロイされます。デフォルトでは、kube-system 名前空間にインストールされ、ワーカーノード上の Pod リソースを消費します。 |
適用クラスター | Auto モードの ACK クラスターで、Kubernetes 1.30 以降を実行しているもの | ACK マネージドクラスターおよびACK 専用クラスターで、Kubernetes 1.16 以降を実行しているもの |
起動パラメーターの設定 | コンポーネントの起動パラメーターはシステムによってデフォルト値に設定されており、カスタマイズはできません。 | コンポーネントの起動パラメーターをカスタマイズできます。 |
コアコンポーネントのインストール |
[コンポーネント管理][マネージド] |
|
ポリシーログ収集 | ログは指定された Simple Log Service (SLS) プロジェクトに送信されます。詳細については、「ACK マネージドクラスターのコントロールプレーンコンポーネントからログを収集する」をご参照ください。 | ログ収集コンポーネントがクラスターにインストールされ、ログを収集して指定された SLS プロジェクトに送信します。 |
ポリシールールライブラリ | コンテナーセキュリティポリシールールライブラリのすべてのポリシー |
|
注意事項
この機能は Linux ノードにのみ適用されます。
カスタムポリシールールはサポートされていません。すべてのルールは ACK の組み込みルールライブラリからのものです。
ステップ 1: セキュリティポリシー管理コンポーネントのインストールまたはアップグレード
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
[ポリシー管理] ページで、プロンプトに従ってコンポーネントをインストールまたはアップグレードします。
セキュリティポリシー管理機能を有効にするには、次のコンポーネントをインストールする必要があります。これらのコンポーネントは無料ですが、Pod リソースを消費します。
gatekeeper: OPA ポリシーエンジンに基づく Kubernetes ポリシーアドミッションコントローラーです。クラスター内の OPA ポリシーを管理および適用して、名前空間タグ管理などの機能を実現するのに役立ちます。
説明ACK が提供する gatekeeper コンポーネントのみがサポートされています。他のソースから gatekeeper コンポーネントをインストールしている場合は、それをアンインストールしてから、ACK が提供するものを再インストールする必要があります。gatekeeper コンポーネントのリリースノートの詳細については、「gatekeeper」をご参照ください。
ログ収集コンポーネント: ポリシー制約に違反するブロックまたはアラートイベントを収集および取得します。
policy-template-controller: Alibaba Cloud ポリシーテンプレートに基づいて開発された Kubernetes コントローラーです。異なるポリシーテンプレートからデプロイされたポリシーインスタンスと、クラスターの全体的な管理ステータスを管理するのに役立ちます。
ステップ 2: セキュリティポリシー管理機能の使用
エントリポイント
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
[ポリシー管理] ページで、必要に応じてプロンプトに従ってコンポーネントをインストールまたはアップグレードします。その後、必要に応じて次の操作を実行します。
クラスター内のセキュリティポリシーの現在の実行ステータスの表示
[ポリシー適用概要] タブをクリックして、クラスターのポリシー管理ステータスを表示します。
ポリシー有効化の概要: このセクションには、有効化された高リスクおよび中リスクの緩和ポリシーの総数と数が表示されます。また、有効化を推奨するポリシーのリストも提供されます。
過去 7 日間のブロックおよびアラートイベントの統計。
過去 7 日間のポリシー実装レコードのテーブルには、デフォルトで、過去 7 日間の最新のブロックまたはアラートのログが 100 件表示されます。より多くの監査ログを表示する場合は、[過去 7 日間のポリシー実装レコード] の横にある
アイコンをクリックし、ポップアップウィンドウで Simple Log Service リンクをクリックすると、Simple Log Service (SLS) コンソールで指定された Logstore 内のすべてのログを表示できます。
セキュリティポリシーインスタンスの作成と管理
[マイポリシー] タブをクリックします。次に、[ポリシーインスタンスの作成] をクリックし、[ポリシーインスタンスの作成] ダイアログボックスでパラメーターを設定します。
設定項目 | 説明 |
ポリシータイプ | ポリシータイプを選択します。次の主要なタイプが利用可能です:
詳細については、「コンテナーセキュリティポリシールールライブラリ」をご参照ください。 |
ポリシー名 | 選択したポリシータイプに基づいて、ドロップダウンリストからデプロイするポリシーテンプレートの名前を選択します。 |
アクション |
|
適用範囲 | ポリシーインスタンスが適用されるクラスター内の名前空間を選択します。 |
パラメーター設定 |
|
クラスター内のセキュリティポリシーとデプロイされたセキュリティポリシーインスタンスのリストの表示
[マイポリシー] タブをクリックして、クラスターにデプロイ可能なすべてのポリシーの名前を表示します。
リストの右上隅で表示されるポリシーをフィルターできます。有効化されたポリシーの名前が最初に表示されます。ポリシーインスタンスの数は、そのポリシーがクラスターにデプロイされているインスタンスの数を示します。
ポリシーインスタンスの数が空の場合、そのポリシーはまだクラスターにデプロイされていません。[アクション] 列で、[有効化] をクリックしてパラメーターを設定し、対応するポリシーインスタンスをデプロイします。

[アクション] 列の [編集] をクリックして、ポリシーインスタンスの設定を変更します。
ポリシーのインスタンスがクラスターに複数デプロイされている場合は、[アクション] 列の [ポリシーインスタンスの表示] をクリックします。次に、[編集] をクリックして関連する設定を変更します。
[アクション] 列の [削除] をクリックして、クラスターにデプロイされているそのポリシーのすべてのインスタンスを削除します。
ポリシーの説明とサンプルテンプレートの詳細については、「コンテナーセキュリティポリシールールライブラリ」をご参照ください。
関連操作: 名前空間またはサービスの削除保護の有効化
ステップ 1: セキュリティポリシー管理コンポーネントのインストールまたはアップグレードで説明されているように セキュリティポリシー管理機能を有効にした後、重要なビジネスや機密データに関わる名前空間やサービスの削除保護を有効にすることもできます。これにより、誤った削除によるメンテナンスコストを防ぐことができます。この機能を有効にすると、対応するリソースは、手動で削除保護を無効にした後にのみ削除できます。
次のプロシージャは、既存の名前空間の削除保護を有効にする方法を示しています。他の操作の手順も同様です。コンソールで対応するページに移動し、プロンプトに従って設定を完了できます。
既存の名前空間の削除保護の有効化
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。
名前空間リストで、管理したい名前空間を見つけます。[アクション] 列で、[編集] をクリックします。表示されるダイアログボックスで、プロンプトに従って削除保護を有効にします。
既存のサービスの削除保護の有効化
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
サービスリストで、管理したいサービスを見つけます。[アクション] 列で、
アイコンをクリックし、次に [削除保護の有効化] をクリックします。表示されるダイアログボックスで、プロンプトに従って削除保護を有効にします。
参考
検査機能を設定して、クラスターのワークロード構成のセキュリティリスクをスキャンできます。詳細については、「クラスターワークロードをチェックするための検査の設定」をご参照ください。