Gatekeeper は、Open Policy Agent (OPA) をアドミッションコントローラーとして使用して、Kubernetes のシナリオに適したセキュリティポリシーを適用します。Container Service for Kubernetes (ACK) クラスタに Gatekeeper コンポーネントが導入されると、ACK コンソールでセキュリティポリシーを有効化またはカスタマイズして、Pod のデプロイと更新のセキュリティを検証できます。
ポリシーガバナンスの概要
PodSecurityPolicy (PSP) は、Kubernetes 1.21 以降では非推奨とマークされています。そのため、ACK は PSP ベースのポリシーガバナンス機能を最適化しています。ACK は、OPA を Gatekeeper アドミッションコントローラーとして使用して、ポリシーガバナンスの状態監視、ログ収集、ログ取得に関連する機能を拡張します。さらに、さまざまなポリシーライブラリが提供されており、Kubernetes のシナリオに適したより多くのセキュリティポリシーを使用できます。コンソールでセキュリティポリシーを直接設定できるため、ポリシーガバナンスの設定が大幅に簡素化されます。
前提条件
ACK マネージドクラスタまたはACK 専用クラスタが作成されており、クラスタで Kubernetes 1.16 以降が実行されていること。詳細については、ACK 専用クラスタの作成またはACK マネージドクラスタの作成を参照してください。ACK クラスタの更新方法の詳細については、ACK クラスタの更新を参照してください。
Resource Access Management (RAM) ユーザーとしてセキュリティポリシーを管理する場合は、RAM ユーザーに次の権限が付与されていることを確認してください。
cs:DescribePolicies
: ポリシーをクエリします。cs:DescribePoliceDetails
: ポリシーに関する情報をクエリします。cs:DescribePolicyGovernanceInCluster
: クラスタ内のポリシーに関する情報をクエリします。cs:DescribePolicyInstances
: クラスタにデプロイされているポリシーインスタンスをクエリします。cs:DescribePolicyInstancesStatus
: クラスタ内のポリシーインスタンスに関する情報をクエリします。cs:DeployPolicyInstance
: クラスタにポリシーインスタンスをデプロイします。cs:DeletePolicyInstance
: クラスタ内のポリシーインスタンスを削除します。cs:ModifyPolicyInstance
: クラスタ内のポリシーインスタンスを変更します。
カスタム RAM ポリシーの作成方法の詳細については、カスタム RAM ポリシーの作成を参照してください。
考慮事項
ポリシーガバナンス機能は、Linux ノードにのみ適用されます。
ポリシーガバナンス機能では、カスタムポリシーを設定できません。ACK の定義済みポリシーのみを使用できます。
手順 1: ポリシーガバナンスコンポーネントをインストールまたは更新する
ポリシーガバナンス機能を有効にするには、次のコンポーネントをインストールする必要があります。
gatekeeper: OPA ベースの Kubernetes アドミッションコントローラー。このコンポーネントを使用して、ACK クラスタで OPA によって実行されるセキュリティポリシーを管理および適用できます。これにより、名前空間ラベルを管理できます。
説明ACK が提供する gatekeeper コンポーネントのみを使用できます。ACK が提供していない gatekeeper コンポーネントを使用している場合は、アンインストールしてから、ACK が提供するコンポーネントをインストールしてください。gatekeeper コンポーネントのリリースノートの詳細については、gatekeeper を参照してください。
logtail-ds: ログコンポーネント。このコンポーネントを使用して、セキュリティポリシーのコンプライアンスの問題によって生成されたブロッキングイベントまたはアラートイベントを収集および取得できます。
policy-template-controller: Alibaba Cloud セキュリティポリシーテンプレートに基づいて開発された Kubernetes コントローラー。このコンポーネントを使用して、ACK クラスタと、さまざまなポリシーテンプレートからデプロイされたポリシーインスタンスの状態を管理できます。
ACK コンソール にログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その名前をクリックします。左側のペインで、 を選択します。
ポリシーガバナンスページで、画面上の指示に従ってコンポーネントをインストールまたは更新します。
手順 2: ポリシーガバナンス機能を操作する
プラットフォーム
ACK コンソール にログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その名前をクリックします。左側のペインで、 を選択します。
ポリシーガバナンスページで、画面上の指示に従ってコンポーネントをインストールまたは更新し、必要に応じて次の操作を実行します。
現在のクラスタのセキュリティポリシーに関する情報を表示する
概要タブをクリックして、現在のクラスタのセキュリティポリシーに関する情報を表示できます。
クラスタのセキュリティポリシーの概要。高リスクポリシーの数、有効になっている高リスクポリシー、中リスクポリシー、有効になっている中リスクポリシーなどが含まれます。システムが有効にすることを推奨するセキュリティポリシーも一覧表示されます。
過去 7 日間に生成されたブロッキングイベントとアラートイベントの数。
過去 7 日間のポリシー適用レコード。デフォルトでは、テーブルには過去 7 日間の最新の 100 件のブロッキングイベントまたはアラートイベントが表示されます。より多くのイベントを表示するには、過去 7 日間のアクションの横にある アイコンにポインタを移動し、ポップアップメッセージの Simple Log Service ハイパーリンクをクリックして Simple Log Service コンソールにログインし、対応するログストアのすべてのログを表示します。
ポリシーインスタンスを作成および管理する
マイポリシータブをクリックします。次に、ポリシーインスタンスの作成をクリックし、ポリシーインスタンスの作成ダイアログボックスでパラメータを設定します。
パラメータ | 説明 |
ポリシータイプ | ポリシータイプを選択します。有効な値:
|
アクション |
|
ポリシー名 | ドロップダウンリストからポリシー名を選択します。 |
適用範囲 | ポリシーインスタンスを適用する名前空間を選択します。 |
パラメータ |
|
現在のクラスタのポリシーとポリシーインスタンスを表示する
マイポリシータブをクリックして、現在のクラスタのすべてのポリシーを表示します。
リストの右上隅にあるフィルタ条件をクリックして、ポリシーをフィルタできます。有効なポリシーは、リストの上部に表示されます。[インスタンス] 列には、各ポリシーにデプロイされているポリシーインスタンスの数が表示されます。
ポリシーインスタンスの数がゼロの場合は、対応するポリシーはクラスタにデプロイされていません。ポリシーの アクション列の 有効化をクリックして、ポリシーインスタンスを設定およびデプロイできます。
ポリシーインスタンスの設定を変更するには、アクション列の 変更をクリックします。
1 つのポリシーに複数のポリシーインスタンスがデプロイされている場合は、アクション列の インスタンスの表示をクリックし、変更をクリックして設定を変更できます。
ポリシーにデプロイされているすべてのポリシーインスタンスを削除するには、アクション列の 削除をクリックします。
セキュリティポリシーとそのテンプレートの詳細については、ACK の定義済みセキュリティポリシーを参照してください。
参考資料
コンプライアンス、Infra、K8s-general、PSP など、ポリシーガバナンスでサポートされている定義済みセキュリティポリシーの詳細については、ACK の定義済みセキュリティポリシーを参照してください。
クラスタ検査を設定して、クラスタのワークロード設定における潜在的なセキュリティリスクを特定できます。詳細については、検査機能を使用して ACK クラスタのワークロードのセキュリティリスクを検出するを参照してください。