ポリシー適用レイヤーがない場合、セキュリティ体制に関係なく、任意のワークロードをクラスターにデプロイできます。Container Service for Kubernetes (ACK) は、Open Policy Agent (OPA) を Gatekeeper アドミッションコントローラーとして統合し、Pod デプロイメントと更新が適用される前にインターセプトします。これにより、セキュリティポリシーに準拠するワークロードのみがクラスターで実行できるようになります。ポリシーガバナンス機能は、OPA をステータスモニタリング、ログ収集、ログ検索で拡張し、ACK コンソールで直接構成できる事前定義されたセキュリティポリシーのライブラリを提供します。
PodSecurityPolicy (PSP) は Kubernetes 1.21 以降で非推奨になりました。ACK ポリシーガバナンス機能は、PSP ベースのポリシー管理に代わるものです。
前提条件
開始する前に、以下を確認してください。
-
Kubernetes 1.16 以降を実行している ACK マネージドクラスターまたは ACK 専用クラスター。詳細については、「ACK 専用クラスターの作成」または「ACK マネージドクラスターの作成」をご参照ください。既存のクラスターをアップグレードするには、「ACK クラスターの更新」をご参照ください。
-
Resource Access Management (RAM) ユーザーとしてセキュリティポリシーを管理する場合、以下の RAM 権限が必要です。カスタム RAM ポリシーを作成するには、「カスタム RAM ポリシーの作成」をご参照ください。
権限 説明 cs:DescribePoliciesポリシーのクエリ cs:DescribePoliceDetailsポリシーに関する情報のクエリ cs:DescribePolicyGovernanceInClusterクラスター内のポリシー情報のクエリ cs:DescribePolicyInstancesクラスターにデプロイされたポリシーインスタンスのクエリ cs:DescribePolicyInstancesStatusクラスター内のポリシーインスタンス情報のクエリ cs:DeployPolicyInstanceクラスターにポリシーインスタンスをデプロイ cs:DeletePolicyInstanceクラスター内のポリシーインスタンスを削除 cs:ModifyPolicyInstanceクラスター内のポリシーインスタンスを変更
制限事項
-
ポリシーガバナンスは Linux ノードにのみ適用されます。
-
事前定義された ACK ポリシーのみがサポートされています。カスタムポリシーは利用できません。
ステップ 1: ポリシーガバナンスコンポーネントのインストールまたは更新
ポリシーガバナンス機能には、次の 3 つのコンポーネントが必要です。
| コンポーネント | 説明 |
|---|---|
| gatekeeper | ACK クラスターでセキュリティポリシーを管理および適用する OPA ベースの Kubernetes アドミッションコントローラーで、名前空間ラベル管理を含みます。ACK が提供する gatekeeper コンポーネントのみを使用してください。サードパーティの gatekeeper がインストールされている場合は、まずアンインストールしてください。リリースノートについては、「gatekeeper」をご参照ください。 |
| logtail-ds | セキュリティポリシー違反によって生成されたブロッキングイベントとアラートイベントを収集および検索するログコンポーネント。 |
| policy-template-controller | Alibaba Cloud セキュリティポリシテンプレートに基づく Kubernetes コントローラーで、異なるポリシーテンプレート間で ACK クラスターとポリシーインスタンスのステータスを管理します。 |
これらのコンポーネントをインストールまたは更新するには、次の手順を実行します。
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のペインで、[セキュリティ] > [ポリシーガバナンス] を選択します。
-
[ポリシー管理] ページで、画面上の指示に従ってコンポーネントをインストールまたは更新します。
ステップ 2: ポリシーガバナンスの操作
セキュリティポリシーの概要表示
[ポリシーガバナンス] ページで、[概要] タブをクリックすると、以下が表示されます。
-
クラスター内のセキュリティポリシーの概要: 高リスクおよび中リスクのポリシーの数、それぞれの有効化済み数、および有効化が推奨されるポリシー。
-
過去 7 日間のブロッキングイベントとアラートイベントの数。
-
過去 7 日間のポリシー適用レコード。テーブルには、デフォルトで最新 100 件のブロッキングイベントまたはアラートイベントが表示されます。
デフォルトの 100 件を超えるすべてのイベントを表示するには、[過去 7 日間のアクション] の横にあるアイコンにカーソルを合わせ、ポップアップの Simple Log Service リンクをクリックして Simple Log Service コンソールにログインし、対応する Logstore 内のすべてのログを表示します。
ポリシーインスタンスの作成
[マイポリシー] タブをクリックし、次に [ポリシーインスタンスの作成] をクリックして、次のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| ポリシータイプ | セキュリティ制御のカテゴリ。詳細については、「ポリシータイプ」をご参照ください。 |
| アクション | ブロック: ポリシーに一致するリソースデプロイメントを防止します。アラート: 一致するデプロイメントに対してブロックせずにアラートを生成します。ブロックに切り替える前に、まずアラートで影響を観察してください。 |
| ポリシー名 | ドロップダウンリストからポリシーを選択します。 |
| 適用範囲 | ポリシーインスタンスが適用される名前空間。 |
| パラメーター | エディターが空白の場合、パラメーターは不要です。パラメーターが表示されている場合は、説明に基づいて設定します。 |
ヒント: 本番環境で新しいポリシーを展開する際は、まずアラートアクションから開始し、どのワークロードが影響を受けるかを特定してください。重要なワークロードがフラグ付けされていないことを確認した後、ブロックに切り替えてポリシーを適用します。これにより、実行中のサービスへの予期せぬ中断を防ぐことができます。
ポリシータイプ
| タイプ | 制御対象 |
|---|---|
| Infra | インフラストラクチャリソース — インフラストラクチャリソースに対するセキュリティ制御を適用します。 |
| Compliance | Kubernetes セキュリティベースライン — Alibaba Cloud Kubernetes Security Hardening で定義されたベースラインとのセキュリティコンプライアンスを保証します。 |
| PSP | Pod レベルのセキュリティ設定 — PSP リソースを置き換えます。 |
| K8s-general | Kubernetes リソース — Alibaba Cloud セキュリティのベストプラクティスに基づいて Kubernetes リソースに対するセキュリティ制御を適用します。 |
既存ポリシーの表示と管理
「[マイ ポリシー]」タブでは、現在のクラスター内のすべてのポリシーが一覧表示されます。右上隅にあるフィルターを使用して、一覧を絞り込みます。有効なポリシーは上部に表示されます。「[インスタンス]」列には、各ポリシーに対してデプロイされたポリシー インスタンスの数が表示されます。
インスタンス数が 0 の場合、ポリシーはデプロイされていません。[アクション] 列の [有効化] をクリックして設定およびデプロイします。
ポリシーインスタンスを変更するには、[操作] 列の [変更] をクリックします。ポリシーに対して複数のインスタンスがデプロイされている場合は、まず [インスタンスの表示] をクリックし、次にターゲットインスタンスの [変更] をクリックします。
ポリシーのすべてのインスタンスを削除するには、[削除] を [操作] 列でクリックします。
事前定義されたポリシーとそのテンプレートの完全なリストについては、「ACK の事前定義されたセキュリティポリシー」をご参照ください。
次のステップ
-
ポリシーガバナンスで利用可能なすべての事前定義されたポリシー (Compliance、Infra、K8s-general、および PSP) を確認します。「ACK の事前定義されたセキュリティポリシー」をご参照ください。
-
クラスター検査を実行して、ワークロード構成におけるセキュリティリスクを特定します。「ACK クラスターのワークロードにおけるセキュリティリスクを検出するための検査機能の使用」をご参照ください。