制約テンプレート ライブラリ

制約テンプレートを使用すると、制約がどのように機能するかを定義できますが、制約の詳細な定義は、制約に関する専門知識を持つ個人またはグループに委任できます。懸念事項を分離することに加え、このことは制約のロジックをその定義からも分離します。

Anthos Policy Controller には、次の制約テンプレートが含まれています。制約テンプレートのライブラリは、Gatekeeper リポジトリでも閲覧できます。

anthos-service-mesh

AllowedServicePortName

サービスポート名には、指定されたリストの接頭辞が必要です。ACM v1.4.0 で導入されました。

名前
prefixes 配列

DestinationRuleTLSEnabled

Istio DestinationRules 内のすべてのホストとホスト サブセットに対する TLS の無効化を禁止します。ACM v1.4.0 で導入されました。

DisallowedAuthzPrefix

Istio AuthorizationPolicy ルールのプリンシパルと名前空間には、指定されたリストの接頭辞を使用できません。ACM v1.4.0 で導入されました。

名前
disallowedprefixes 配列

PolicyStrictOnly

Istio 認証ポリシーで STRICT 相互 TLS を使用するピアを指定する必要があります。ACM v1.4.0 で導入されました。

SourceNotAllAuthz

Istio AuthorizationPolicy ルールでソース プリンシパルが「*」以外に設定されている必要があります。ACM v1.4.0 で導入されました。

その他

GCPStorageLocationConstraintV1

StorageBucket Config Connector リソースに許可される locations を制限します。exemptions リストにあるバケット名は対象外です。ACM v1.6.1 で導入されました。

名前
exemptions 配列
locations 配列

K8sBlockProcessNamespaceSharing

Pod 仕様で shareProcessNamespacetrue に設定することを禁止します。これにより、Pod 内のすべてのコンテナが PID 名前空間を共有し、互いのファイル システムおよびメモリにアクセスできるようになるシナリオを回避できます。ACM v1.3.1 で導入されました。

K8sDisallowedRoleBindingSubjects

パラメータとして渡された disallowedSubjects に一致するサブジェクトを持つ RoleBindings または ClusterRoleBindings を禁止します。ACM v1.3.1 で導入されました。

名前
disallowedSubjects 配列

K8sEmptyDirHasSizeLimit

emptyDir ボリュームで sizeLimit を指定する必要があります。必要に応じて、maxSizeLimit パラメータに制約を設定して、最大サイズの上限を指定できます。ACM v1.3.1 で導入されました。

名前
maxSizeLimit 文字列

K8sLocalStorageRequireSafeToEvict

ローカル ストレージ(emptyDir または hostPath)を使用する Pod にはアノテーション "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" が必要です。クラスタ オートスケーラーは、このアノテーションのない Pod を削除しません。ACM v1.3.1 で導入されました。

K8sMemoryRequestEqualsLimit

すべてのコンテナがリクエストするメモリがメモリ制限に完全に一致することを要求することで Pod の安定性を高め、メモリ使用量がリクエストされた量を超える状態にならないようにします。メモリが必要な場合、Kubernetes はその状態で Pod を終了することがあります。ACM v1.3.1 で導入されました。

K8sNoExternalServices

ワークロードを外部 IP に公開する Gateway、Ingress、Service リソースの作成を禁止します。

  • Gateway: グループ networking.istio.io のすべてのリソースは禁止されています。
  • Ingress: グループ extensions または networking.k8s.io のすべてのリソースは禁止されています。
  • Service: すべての LoadBalancer タイプのリソースには Internal アノテーションが必要です。すべての externalIPs は、internalCIDRs パラメータで指定された CIDR に属している必要があります。
ACM v1.3.0 で導入されました。

名前
internalCIDRs 配列

K8sRestrictLabels

リソースにラベルを含めることを禁止します。例外は、group、kind、namespace、name で指定できます。ACM v1.6.1 で導入されました。

名前
exceptions 配列
restrictedLabels 配列

全般

K8sAllowedRepos

コンテナ イメージは、指定されたリストにあるリポ文字列で開始する必要があります。ACM v1.1.0 で導入されました。

名前
repos 配列

K8sBlockNodePort

NodePort タイプの Service をすべて無効にします。ACM v1.6.1 で導入されました。

K8sContainerLimits

コンテナにメモリと CPU の上限を設定し、指定した最大値を超えないようにする必要があります。ACM v1.1.0 で導入されました。

名前
cpu 文字列
memory 文字列

K8sContainerRatios

コンテナ リソースの制限に対するリクエストの最大比率を設定します。ACM v1.6.1 で導入されました。

名前
ratio 文字列

K8sExternalIPs

指定された許可リストの IP を除く externalIPs を含む Service を制限します。ACM v1.6.1 で導入されました。

名前
allowedIPs 配列

K8sHttpsOnly

Ingress リソースは HTTPS のみにする必要があります。TLS 構成を設定し、kubernetes.io/ingress.allow-http アノテーションを false にする必要があります。ACM v1.3.0 で導入されました。

K8sImageDigests

コンテナ イメージにダイジェストが含まれている必要があります。ACM v1.6.1 で導入されました。

K8sRequiredLabels

すべてのリソースに、指定した正規表現に一致する値を持つラベルを指定する必要があります。ACM v1.1.0 で導入されました。

名前
labels 配列
message 文字列

K8sRequiredProbes

Pod に readiness Probe または liveness Probe が必要です。ACM v1.6.1 で導入されました。

名前
probeTypes 配列
probes 配列

K8sUniqueIngressHost

すべての Ingress ホストを一意にする必要があります。ACM v1.3.0 で導入されました。

K8sUniqueServiceSelector

Service に名前空間内で一意のセレクタが必要です。ACM v1.3.0 で導入されました。

cis-k8s

K8sNoEnvVarSecrets

コンテナ定義で環境変数として Secret の使用を禁止します。代わりに、マウントされた Secrets ファイルをデータ ボリュームで使用します。ACM v1.5.2 で導入されました。

K8sPodsRequireSecurityContext

すべての Pod とコンテナで、Pod レベルまたはコンテナレベルで SecurityContext が定義されている必要があります。ACM v1.5.2 で導入されました。

K8sProhibitRoleWildcardAccess

Roles と ClusterRoles のリソース アクセスにワイルドカード(*)値を使用できません。ACM v1.5.2 で導入されました。

K8sRequireNamespaceNetworkPolicies

クラスタで定義されているすべての名前空間に NetworkPolicy が必要です。ACM v1.5.2 で導入されました。

K8sRestrictNamespaces

リソースに対して、restrictedNamespaces パラメータにリストされた名前空間の使用を制限します。リソースでこの制限を回避するには、labelSelector を使用します。ACM v1.5.2 で導入されました。

名前
restrictedNamespaces 配列

K8sRestrictRoleBindings

ClusterRoleBinding と RoleBinding が、制約で指定された Role または ClusterRole を参照しないようにします。制約で allowedSubject として例外を指定できます。ACM v1.5.2 で導入されました。

名前
allowedSubjects 配列
restrictedRole オブジェクト

pod-security-policy

K8sPSPAllowPrivilegeEscalationContainer

エスカレーションの root 権限への制限を制御します。ACM v1.1.0 で導入されました。

K8sPSPAllowedUsers

コンテナのユーザー ID とグループ ID を制御します。ACM v1.3.0 で導入されました。

名前
fsGroup オブジェクト
runAsGroup オブジェクト
runAsUser オブジェクト
supplementalGroups オブジェクト

K8sPSPAppArmor

コンテナで使用される AppArmor プロファイルを制御します。ACM v1.3.0 で導入されました。

名前
allowedProfiles 配列

K8sPSPCapabilities

Linux 機能を制御します。ACM v1.3.0 で導入されました。

名前
allowedCapabilities 配列
requiredDropCapabilities 配列

K8sPSPFSGroup

Pod のボリュームを所有している FSGroup の割り当てを制御します。ACM v1.1.0 で導入されました。

名前
ranges 配列
rule 文字列

K8sPSPFlexVolumes

Flexvolume ドライバの許可リストを制御します。ACM v1.1.0 で導入されました。

名前
allowedFlexVolumes 配列

K8sPSPForbiddenSysctls

コンテナで使用される sysctl プロファイルを制御します。ACM v1.3.0 で導入されました。

名前
forbiddenSysctls 配列

K8sPSPHostFilesystem

ホスト ファイル システムの使用を制御します。ACM v1.1.0 で導入されました。

名前
allowedHostPaths 配列

K8sPSPHostNamespace

ホスト名前空間の使用を制御します。ACM v1.1.0 で導入されました。

K8sPSPHostNetworkingPorts

ホスト ネットワークとポートの使用を制御します。ACM v1.1.0 で導入されました。

名前
hostNetwork ブール値
max 整数
min 整数

K8sPSPPrivilegedContainer

特権コンテナの実行を制御します。ACM v1.1.0 で導入されました。

K8sPSPProcMount

コンテナで許可される Proc マウントタイプを制御します。ACM v1.1.0 で導入されました。

名前
procMount 文字列

K8sPSPReadOnlyRootFilesystem

読み取り専用ルート ファイル システムを使用する必要があります。ACM v1.1.0 で導入されました。

K8sPSPSELinuxV2

コンテナの SELinux コンテキストを制御します。ACM v1.5.2 で導入されました。

名前
allowedSELinuxOptions 配列

K8sPSPSeccomp

コンテナで使用される seccomp プロファイルを制御します。ACM v1.3.0 で導入されました。

名前
allowedProfiles 配列

K8sPSPVolumeTypes

ボリューム タイプの使用を制御します。ACM v1.1.0 で導入されました。

名前
volumes 配列

pod-security-policy-deprecated

K8sPSPSELinux

コンテナの SELinux コンテキストを制御します。ACM v1.3.0 で導入されました。

名前
allowedSELinuxOptions オブジェクト

次のステップ