ACK セキュリティポリシー管理機能は、Kubernetes コンテナシナリオに適したセキュリティポリシールールを提供します。 ポッドが ASM サイドカーを注入するように制限する新しいポリシーが追加され、ASM に接続されたクラスタのセキュリティがさらに強化されました。 このトピックでは、ACK クラスタでサイドカーポリシーの強制注入を有効にする方法と、このポリシーを有効にした後の効果について説明します。
背景
ポリシーガバナンス
PSP は、Kubernetes 1.21 以後で非推奨とマークされています。 そのため、ACK は PSP ベースのポリシーガバナンス機能を最適化します。 ACK は OPA を Gatekeeper アドミッションコントローラーとして使用して、ポリシーガバナンスステータスの監視、ログ収集、ログ検索などの機能を拡張します。 さらに、Kubernetes シナリオを対象とするより多くのセキュリティポリシーを使用できるように、さまざまなポリシーライブラリが提供されています。 コンソールでセキュリティポリシーを直接構成できるため、ポリシーガバナンスの構成が大幅に簡素化されます。
主なポリシーを以下に示します。
Infra:このタイプのポリシーは、インフラストラクチャリソースに対するセキュリティ制御を強制するために使用されます。
Compliance:このタイプのポリシーは、Alibaba Cloud Kubernetes セキュリティ強化 などの Kubernetes コンプライアンス標準に基づいてカスタマイズされます。
PSP:このタイプのポリシーは、PSP リソースを置き換えるために使用されます。
K8s-general:このタイプのポリシーは、Alibaba Cloud セキュリティベストプラクティスの標準に基づいて、Kubernetes リソースに対するセキュリティ制御を強制するために使用されます。
サイドカー注入
アプリケーションのポッドにサイドカープロキシをインストールすると、ポッドに独立したコンテナが作成され、サイドカープロキシの機能が提供されます。 これらの機能を最大限に活用するには、アプリケーションの各サービスで、サービスのポッド内でサイドカープロキシを実行する必要があります。 サイドカープロキシは、サービスのすべての受信および送信 HTTP トラフィックをインターセプトし、対応する ASM インスタンスの Istio コントロールプレーン上の Pilot コンポーネントと通信します。
前提条件
クラスタは Kubernetes 1.16 以降を実行しています。 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 ポリシーを作成する」をご参照ください。
構成方法
クラスタが ASM インスタンスに追加された後、名前空間レベルの自動注入はデフォルトでは有効になりません。 クラスタで自動注入が有効になっている場合、関連する名前空間にポッドを作成できないか、ポッドの作成後にクラスタが高リスクのセキュリティアラートを受信し、対応するアラートログが生成される可能性があります。 構成プロセスを次の図に示します。
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 左側のウィンドウで、 を選択します。
[ポリシーガバナンス] ページで、プロンプトに従ってコンポーネントをインストールまたはアップグレード (必要な場合) し、必要に応じて次の操作を実行します。
セキュリティポリシーリストから強制注入ポリシーを有効にします。
[マイポリシー] タブをクリックして、クラスタにデプロイされているすべてのポリシーの名前を表示します。
[ポリシー名] 列で [ASMSidecarInjectionEnforced] ポリシーを見つけ、[アクション] 列の [有効化] をクリックします。
次のパラメータを構成し、[作成] をクリックします。
パラメータ
説明
[アクション]
ビジネス要件に基づいて、次のオプションのいずれかを選択できます。
ブロック:ポリシーに一致するリソースデプロイメントをブロックします。
アラート:ポリシーに一致するリソースデプロイメントに対してアラートを生成します。 リソースデプロイメントは引き続き実行できます。
[適用範囲]
ポリシーインスタンスを適用する名前空間を選択します。 すべての名前空間を選択することもできます (推奨されません)。
[パラメータ]
このパラメータは指定しないでください。
ポリシーインスタンスを作成します。
[マイポリシー] タブをクリックし、[ポリシーインスタンスの作成] をクリックします。 [ポリシーインスタンスの作成] ダイアログボックスで、次のパラメータを構成します。
パラメータ
説明
[ポリシータイプ]
[infra] を選択します。 詳細については、「ACK の定義済みセキュリティポリシー」をご参照ください。
[ポリシー名]
選択したポリシータイプに基づいて、[ポリシー名] ドロップダウンリストから [ASMSidecarInjectionEnforced] を選択します。
[アクション]
ビジネス要件に基づいて、次のオプションのいずれかを選択できます。
ブロック:ポリシーに一致するリソースデプロイメントをブロックします。
アラート:ポリシーに一致するリソースデプロイメントに対してアラートを生成します。 リソースデプロイメントは引き続き実行できます。
[適用範囲]
ポリシーインスタンスを適用する名前空間を選択します。 すべての名前空間を選択することもできます (推奨されません)。
[パラメータ]
このパラメータは指定しないでください。
ポリシーを確認します。
デフォルトの名前空間では自動注入が有効になっておらず、[アクション] が [ブロック] に設定された ACK に対して強制注入ポリシーが有効になっています。
ワークロードを表示します。
次の図は、ポッドの作成に失敗したことを示しています。
[概要] タブをクリックします。 [過去 7 日間のアクション] セクションに、ブロッキングレコードが表示されます。
ポリシーを編集し、[アクション] として [アラート] を選択します。
HTTPBin アプリケーションを再デプロイします。
ワークロードを表示します。
次の図は、アプリケーションが正常にデプロイされたことを示しています。
[概要] タブをクリックします。 [過去 7 日間のアクション] セクションに、アラートレコードが表示されます。