Todos os produtos
Search
Central de documentação

Container Compute Service:Políticas de segurança predefinidas do ACS

Última atualização: Jul 01, 2026

Configure políticas de segurança para pods a fim de verificar a segurança das solicitações de implantação ou atualização. O recurso de gerenciamento de políticas de cluster do Alibaba Cloud Container Compute Service (ACS) oferece quatro bibliotecas de regras integradas: Compliance, Infra, K8s-general e PSP.

Informações básicas

O ACS fornece os seguintes tipos de políticas de segurança predefinidas:

  • Compliance: políticas de segurança personalizadas com base em padrões de conformidade, como o Alibaba Cloud Kubernetes Security Hardening.

  • Infra: garantem e aprimoram a segurança dos recursos de infraestrutura de nuvem.

  • K8s-general: limitam e normalizam as configurações de recursos sensíveis em clusters ACS, aumentando a segurança das aplicações nesses ambientes.

  • PSP: funcionam como alternativa às políticas de segurança de pod (PSPs) do Kubernetes open source e oferecem as mesmas capacidades de controle de acesso.

Políticas de segurança predefinidas

A tabela a seguir descreve as políticas de segurança predefinidas do ACS.

Categoria

Política

Descrição

Gravidade

Compliance

ACKNoEnvVarSecrets

Não é permitido usar o parâmetro secretKeyRef para referenciar Secrets ao definir variáveis de ambiente de pods.

média

ACKPodsRequireSecurityContext

Os pods nos namespaces especificados devem ter o parâmetro securityContext configurado.

baixa

ACKRestrictNamespaces

Recursos dos tipos especificados não podem ser implantados nos namespaces indicados.

baixa

ACKRestrictRoleBindings

RoleBindings nos namespaces especificados só podem vincular as funções ou cluster roles indicadas.

alta

ACKNamespacesDeleteProtection

Os namespaces especificados não podem ser excluídos.

média

ACKServicesDeleteProtection

As instâncias de Service nos namespaces especificados não podem ser excluídas.

média

Infra

ACKBlockProcessNamespaceSharing

Os pods nos namespaces especificados não podem ter o parâmetro shareProcessNamespace configurado.

alta

ACKEmptyDirHasSizeLimit

É obrigatório configurar o parâmetro sizelimit ao montar volumes emptyDir.

baixa

ACKLocalStorageRequireSafeToEvict

Os pods nos namespaces especificados devem ter a anotação "cluster-autoscaler.kubernetes.io/safe-to-evict": "true". Por padrão, o autoscaler não remove pods montados com volumes hostPath ou emptyDir durante atividades de dimensionamento automático. Para permitir essa remoção, adicione essa anotação às configurações dos pods.

baixa

ACKOSSStorageLocationConstraint

Buckets do Object Storage Service (OSS) nas regiões especificadas podem ser montados em pods nos namespaces indicados.

baixa

ACKPVSizeConstraint

Define a capacidade máxima de disco que pode ser solicitada para volumes persistentes (PVs) criados em um cluster ACS.

média

ACKPVCConstraint

Especifica os namespaces onde reivindicações de volume persistente (PVCs) podem ser implantadas e a capacidade máxima de disco solicitável para PVs.

média

K8s-general

ACKAllowedRepos

Os pods nos namespaces especificados só podem baixar imagens dos repositórios indicados.

alta

ACKBlockAutoinjectServiceEnv

Os pods nos namespaces especificados devem ter enableServiceLinks: false, impedindo a injeção de endereços IP de Service nas variáveis de ambiente do pod.

baixa

ACKBlockAutomountToken

Os pods nos namespaces especificados devem ter automountServiceAccountToken: false, evitando a montagem automática de service accounts.

alta

ACKBlockEphemeralContainer

Os pods nos namespaces especificados não podem iniciar contêineres efêmeros.

média

ACKBlockLoadBalancer

Serviços LoadBalancer não podem ser implantados nos namespaces especificados.

alta

ACKContainerLimits

Os pods nos namespaces especificados devem ter limits de recursos configurados.

baixa

ACKExternalIPs

Os Services nos namespaces especificados não podem usar endereços IP externos que não estejam listados no conteúdo da política.

alta

ACKImageDigests

Os pods nos namespaces especificados devem ser implantados a partir de imagens cujos digests estejam em conformidade com o formato definido.

baixa

ACKRequiredLabels

Os pods nos namespaces especificados devem possuir rótulos que atendam ao conteúdo da política.

baixa

ACKRequiredProbes

Os pods nos namespaces especificados devem ter os tipos definidos de sondas de prontidão e sondas de atividade configurados.

média

ACKCheckNginxAnnotation

O parâmetro metadata.annotations na configuração do Ingress não pode conter definições de risco. Recomendamos ativar esta política para versões do ingress-nginx anteriores à 1.2.1.

alta

ACKBlockInternetLoadBalancer

Não é possível criar Services LoadBalancer voltados para a internet.

alta

PSP

ACKPSPAllowPrivilegeEscalationContainer

Os pods nos namespaces especificados devem ter o parâmetro allowPrivilegeEscalation configurado.

média

ACKPSPAllowedUsers

Os pods nos namespaces especificados devem ter as configurações de user, group, supplementalGroups e fsGroup.

média

ACKPSPAppArmor

Os pods nos namespaces especificados devem ter configurações de AppArmor.

baixa

ACKPSPCapabilities

Os pods nos namespaces especificados devem ter configurações de Linux Capabilities.

alta

ACKPSPFSGroup

Os pods nos namespaces especificados devem ter configurações de fsGroup que atendam ao conteúdo da política.

média

ACKPSPFlexVolumes

Os pods nos namespaces especificados não podem usar drivers FlexVolume que não estejam listados no conteúdo da política.

média

ACKPSPForbiddenSysctls

Os pods nos namespaces especificados não podem usar os sysctls indicados.

alta

ACKPSPHostFilesystem

Os volumes hostPath montados em pods nos namespaces especificados devem atender às condições definidas.

alta

ACKPSPPrivilegedContainer

Os pods nos namespaces especificados não podem executar contêineres privilegiados.

alta

ACKPSPReadOnlyRootFilesystem

Os pods nos namespaces especificados devem executar com sistemas de arquivos raiz somente leitura.

média

ACKPSPSELinuxV2

Os pods nos namespaces especificados não podem ter opções SELinux que não estejam listadas no conteúdo da política.

baixa

ACKPSPSeccomp

Os pods nos namespaces especificados devem ter os perfis seccomp indicados configurados.

baixa

ACKPSPVolumeTypes

Apenas volumes dos tipos especificados podem ser montados em pods no namespace indicado.

média

Compliance

  • ACKNoEnvVarSecrets

    Descrição da política: Não é permitido usar o parâmetro secretKeyRef para referenciar Secrets ao definir variáveis de ambiente de pods.

    Gravidade: Média

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKNoEnvVarSecrets
    metadata:
      name: no-env-var-secrets
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
      namespace: test-gatekeeper
    spec:
      containers:
      - name: mypod
        image: testimage
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"
      volumes:
      - name: foo
        secret:
          secretName: mysecret
          items:
          - key: username
            path: my-group/my-username

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - name: mycontainer
        image: testimage
        env:
          - name: SECRET_USERNAME
            valueFrom:
              secretKeyRef:
                name: mysecret
                key: username
          - name: SECRET_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysecret
                key: password
      restartPolicy: Never
  • ACKPodsRequireSecurityContext

    Descrição da política: Os pods nos namespaces especificados devem ter o parâmetro securityContext configurado.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPodsRequireSecurityContext
    metadata:
      name: pods-require-security-context
      annotations:
        description: "Requires that Pods must have a `securityContext` defined."
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: test
      namespace: test-gatekeeper
    spec:
      securityContext:
        runAsNonRoot: false
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: non-test-gatekeeper
    spec:
      containers:
      - image: testimage
        name: test2
      - image: testimage
        name: test
        resources: {}
        securityContext:
          runAsNonRoot: false
  • ACKRestrictNamespaces

    Descrição da política: Recursos dos tipos especificados não podem ser implantados nos namespaces indicados.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    restrictedNamespaces

    array

    Especifica os nomes dos namespaces onde os recursos não podem ser implantados.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKRestrictNamespaces
    metadata:
      name: restrict-default-namespace
      annotations:
        description: "Restricts resources from using the restricted namespace."
    spec:
      match:
        kinds:
          - apiGroups: ['']
            kinds: ['Pod']
      parameters:
        restrictedNamespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: test
      namespace: non-test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - name: mycontainer
        image: testimage
      restartPolicy: Never
  • ACKRestrictRoleBindings

    Descrição da política: Rolebindings nos namespaces especificados só podem ser usados para atribuir as Roles ou ClusterRoles indicadas.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    restrictedRole

    object

    Especifica as cluster roles ou roles cuja atribuição não é permitida.

    allowedSubjects

    array

    Especifica os subjects que podem ser vinculados.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKRestrictRoleBindings
    metadata:
      name: restrict-clusteradmin-rolebindings
      annotations:
        description: "Restricts use of sensitive role in specific rolebinding."
    spec:
      match:
        kinds:
          - apiGroups: ["rbac.authorization.k8s.io"]
            kinds: ["RoleBinding"]
      parameters:
        restrictedRole:
          apiGroup: "rbac.authorization.k8s.io"
          kind: "ClusterRole"
          name: "cluster-admin"
        allowedSubjects:
          - apiGroup: "rbac.authorization.k8s.io"
            kind: "Group"
            name: "system:masters"

    Permitido:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: good-2
      namespace: test-gatekeeper
    subjects:
      - kind: Group
        name: 'system:masters'
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io

    Não permitido:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: bad-1
      namespace: test-gatekeeper
    subjects:
      - kind: ServiceAccount
        name: policy-template-controller
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
  • ACKNamespacesDeleteProtection

    Descrição da política: Os namespaces especificados não podem ser excluídos. Defina o parâmetro protectionNamespaces com os nomes dos namespaces protegidos contra exclusão.

    Para ativar esta política, use o gatekeeper versão 3.10.0.130-g0e79597d-aliyun ou superior. Para mais informações sobre as versões do gatekeeper, consulte gatekeeper.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    protectionNamespaces

    array

    Os nomes dos namespaces que não podem ser excluídos.

    Exemplo:

    Restrição:

       apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: ACKNamespacesDeleteProtection
      metadata:
        name: namespace-delete-protection
      spec:
        match:
          kinds:
            - apiGroups: ['']
              kinds: ['Namespace']
        parameters:
          protectionNamespaces:
            - test-gatekeeper

    Permitido:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: will-delete

    Não permitido:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: test-gatekeeper
  • ACKServicesDeleteProtection

    Descrição da política: As instâncias de Service nos namespaces especificados não podem ser excluídas. Defina o parâmetro protectionServices com os nomes das instâncias de Service protegidas contra exclusão.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    protectionServices

    array

    Os nomes das instâncias de Service nos namespaces especificados que não podem ser excluídas.

    Exemplo:

    Restrição:

      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: ACKServicesDeleteProtection
      metadata:
        name: service-delete-protection
        annotations:
          description: "Protect to delete specific service."
      spec:
        enforcementAction: deny
        match:
          kinds:
            - apiGroups: ['']
              kinds: ['Service']
          namespaces: ["test-gatekeeper"]
        parameters:
          protectionServices:
            - test-svc

    Permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: good
      namespace: test-gatekeeper

    Não permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: test-svc

Infra

  • ACKBlockProcessNamespaceSharing

    Descrição da política: Os pods nos namespaces especificados não podem ter o parâmetro shareProcessNamespace configurado.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockProcessNamespaceSharing
    ACKCheckNginxPathmetadata:
      name: block-share-process-namespace
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: test-3
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      shareProcessNamespace: true
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}
  • ACKEmptyDirHasSizeLimit

    Descrição da política: É obrigatório configurar o parâmetro sizelimit ao montar volumes emptyDir.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKEmptyDirHasSizeLimit
    metadata:
      name: empty-dir-has-sizelimit
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
        volumeMounts:
        - mountPath: /cache
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir:
          sizeLimit: "10Mi"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
        volumeMounts:
        - mountPath: /cache
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir: {}
  • ACKLocalStorageRequireSafeToEvict

    Descrição da política: Os pods nos namespaces especificados devem ter a anotação "cluster-autoscaler.kubernetes.io/safe-to-evict": "true". Pods sem essa anotação não são removidos durante atividades de dimensionamento.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKLocalStorageRequireSafeToEvict
    metadata:
      name: local-storage-require-safe-to-evict
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-1
      namespace: test-gatekeeper
      annotations:
        'cluster-autoscaler.kubernetes.io/safe-to-evict': 'true'
    spec:
      containers:
      - image: test
        name: test-container
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /data
          # this field is optional
          type: Directory

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
        volumeMounts:
        - mountPath: /cache
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir: {}
  • ACKOSSStorageLocationConstraint

    Descrição da política: Define se buckets do OSS nas regiões especificadas podem ser montados em pods nos namespaces indicados.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    mode

    string

    Define se o modo de lista de permissões está ativado. Valor padrão: allowlist, que indica o modo de lista de permissões ativo. Outros valores indicam o modo de lista de bloqueios ativo.

    regions

    array

    Os IDs das regiões especificadas.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKOSSStorageLocationConstraint
    metadata:
      name: restrict-oss-location
      annotations:
        description: "Restricts location of oss storage in cluster."
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["PersistentVolume", "Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        mode: "allowlist"
        regions:
          - "cn-beijing"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-oss-csi-good
      namespace: test-gatekeeper
    spec:
      containers:
        - name: test
          image: test
      volumes:
        - name: test
          csi:
            driver: ossplugin.csi.alibabacloud.com
            volumeAttributes:
              bucket: "oss"
              url: "oss-cn-beijing.aliyuncs.com"
              otherOpts: "-o max_stat_cache_size=0 -o allow_other"
              path: "/"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-oss-csi
      namespace: test-gatekeeper
    spec:
      containers:
        - name: test
          image: test
      volumes:
        - name: test
          csi:
            driver: ossplugin.csi.alibabacloud.com
            volumeHandle: pv-oss
            nodePublishSecretRef:
              name: oss-secret
              namespace: default
            volumeAttributes:
              bucket: "oss"
              url: "oss-cn-hangzhou.aliyuncs.com"
              otherOpts: "-o max_stat_cache_size=0 -o allow_other"
              path: "/"
  • ACKPVSizeConstraint

    Descrição da política: Define a capacidade máxima de disco que pode ser solicitada para PVs criados em um cluster ACS.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    maxSize

    string

    A capacidade máxima de disco que pode ser solicitada para PVs em um cluster ACS. Valor padrão: 50 GiB.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPVSizeConstraint
    metadata:
      name: limit-pv-size
      annotations:
        description: "Limit the pv storage capacity size within a specified maximum amount."
    spec:
      enforcementAction: deny
      match:
        kinds:
          - apiGroups: [ "" ]
            kinds: [ "PersistentVolume" ]
      parameters:
        maxSize: "50Gi"

    Permitido:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss-csi
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 25Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-oss
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "oss"
          url: "oss-cn-beijing.aliyuncs.com"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
          path: "/"

    Não permitido:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss-csi-bad
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 500Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-oss
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "oss"
          url: "oss-cn-beijing.aliyuncs.com"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
          path: "/"
  • ACKPVCConstraint

    Descrição da política: Especifica os namespaces onde PVCs podem ser implantadas e a capacidade máxima de disco solicitável para PVs.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    maxSize

    string

    A capacidade máxima de disco que pode ser solicitada para PVs. Valor padrão: 50 GiB.

    allowNamespaces

    array

    Os nomes dos namespaces onde PVCs podem ser implantadas.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPVCConstraint
    metadata:
      name: limit-pvc-size-and-ns
      annotations:
        description: "Limit the maximum pvc storage capacity size and the namespace whitelists that can be deployed."
    spec:
      enforcementAction: deny
      match:
        kinds:
          - apiGroups: [ "" ]
            kinds: [ "PersistentVolumeClaim" ]
      parameters:
        maxSize: "50Gi"
        allowNamespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
      namespace: test-gatekeeper
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi

    Não permitido:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bad-disk-pvc
      namespace: test-gatekeeper
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 200Gi
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bad-namespace-pvc
      namespace: test-gatekeeper-bad
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi      

K8s-general

  • ACKAllowedRepos

    Descrição da política: Os pods nos namespaces especificados só podem baixar imagens dos repositórios indicados.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    repos

    array

    Especifica os repositórios de imagens de onde os pods podem baixar imagens.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKAllowedRepos
    metadata:
      name: allowed-repos
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        repos:
          - "registry-vpc.cn-hangzhou.aliyuncs.com/acs/"
          - "registry.cn-hangzhou.aliyuncs.com/acs/"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-01
      namespace: test-gatekeeper
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/acs/test-webserver
        name: test-container-1
      initContainers:
      - image: registry.cn-hangzhou.aliyuncs.com/acs/test-webserver
        name: test-container

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
      initContainers:
      - image: test
        name: test-container-3
  • ACKBlockAutoinjectServiceEnv

    Descrição da política: Os pods nos namespaces especificados devem ter enableServiceLinks: false, impedindo a injeção de endereços IP de Service nas variáveis de ambiente do pod.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockAutoinjectServiceEnv
    metadata:
      name: block-auto-inject-service-env
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-0
      namespace: test-gatekeeper
    spec:
      enableServiceLinks: false
      containers:
      - image: openpolicyagent/test-webserver:1.0
        name: test-container

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
  • ACKBlockAutomountToken

    Descrição da política: Os pods nos namespaces especificados devem ter automountServiceAccountToken: false, evitando a montagem automática de service accounts.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockAutomountToken
    metadata:
      name: block-auto-mount-service-account-token
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-0
      namespace: test-gatekeeper
    spec:
      automountServiceAccountToken: false
      containers:
      - image: openpolicyagent/test-webserver:v1.0
        name: test-container

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
  • ACKBlockEphemeralContainer

    Descrição da política: Os pods nos namespaces especificados não podem iniciar contêineres efêmeros.

    Gravidade: Média

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockEphemeralContainer
    metadata:
      name: block-ephemeral-container
    spec:
      enforcementAction: deny
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: good-1
      namespace: test-gatekeeper
    spec:
      containers:
      - name: mycontainer
        image: testimage

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: non-test-gatekeeper
    spec:
      containers:
      - name: mycontainer
        image: testimage
      ephemeralContainers:
        - name: test
          image: test
  • ACKBlockLoadBalancer

    Descrição da política: Serviços LoadBalancer não podem ser implantados nos namespaces especificados.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    restrictedNamespaces

    array

    Especifica os nomes dos namespaces onde os recursos não podem ser implantados.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockLoadBalancer
    metadata:
      name: block-load-balancer
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Service"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service-1
      namespace: test-gatekeeper
    spec:
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376

    Não permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: test-gatekeeper
    spec:
      type: LoadBalancer
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376
  • ACKBlockNodePort

    Descrição da política: Serviços NodePort não podem ser implantados nos namespaces especificados.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockNodePort
    metadata:
      name: block-node-port
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Service"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service-1
      namespace: test-gatekeeper
    spec:
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376

    Não permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: test-gatekeeper
    spec:
      type: NodePort
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376
  • ACKContainerLimits

    Descrição da política: Os pods nos namespaces especificados devem ter limits de recursos configurados.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKContainerLimits
    metadata:
      name: container-must-have-limits
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        cpu: "1000m"
        memory: "1Gi"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: openpolicyagent/test-webserver
        name: test-container
        resources:
          limits:
            memory: "100Mi"
            cpu: "500m"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-2
      namespace: non-test-gatekeeper
    spec:
      containers:
      - image: openpolicyagent/test-webserver
        name: test-container
        resources:
          limits:
            memory: "100Gi"
            cpu: "2000m"
  • ACKExternalIPs

    Descrição da política: Os Services nos namespaces especificados não podem usar external IP addresses que não estejam listados no conteúdo da política.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedIPs

    array

    Especifica os external IP addresses permitidos.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKExternalIPs
    metadata:
      name: external-ips
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Service"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedIPs:
          - "192.168.0.5"

    Permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service-3
      namespace: test-gatekeeper
    spec:
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376

    Não permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: test-gatekeeper
    spec:
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376
      externalIPs:
        - 80.11.XX.XX
  • ACKImageDigests

    Descrição da política: Os pods nos namespaces especificados devem ser implantados a partir de imagens cujos digests estejam em conformidade com o formato definido.

    Gravidade: Baixa

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKImageDigests
    metadata:
      name: container-image-must-have-digest
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-0
      namespace: test-gatekeeper
    spec:
      containers:
      - image: openpolicyagent/test-webserver@sha256:12e469267d21d66ac9dcae33a4d3d202ccb2591869270b95d0aad7516c7d075b
        name: test-container

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test-container
      initContainers:
      - image: test
        name: test-container2
  • ACKRequiredLabels

    Descrição da política: Os pods nos namespaces especificados devem possuir labels definidos pelo parâmetro allowedRegex.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedRegex

    string

    Especifica os rótulos em expressões regulares.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKRequiredLabels
    metadata:
      name: must-have-label-test
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
    #            message: ''
        labels:
          - key: test
            # value
            allowedRegex: "^test.*$"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      name: test
      namespace: test-gatekeeper
      labels:
        'test': 'test_233'
    spec:
      containers:
      - name: mycontainer
        image: testimage

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      name: bad2
      namespace: test-gatekeeper
      labels:
        'test': '233'
    spec:
      containers:
      - name: mycontainer
        image: testimage
  • ACKRequiredProbes

    Descrição da política: Os pods nos namespaces especificados devem ter os tipos definidos de readiness probes e liveness probes configurados.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    probes

    array

    Especifica as sondas que devem ser configuradas para um pod. Valores válidos: readinessProbe e livenessProbe.

    probeTypes

    array

    Especifica os tipos de sondas que devem ser configuradas para um pod. Valores válidos: tcpSocket, httpGet e exec.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKRequiredProbes
    metadata:
      name: must-have-probes
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        probes: ["readinessProbe", "livenessProbe"]
        probeTypes: ["tcpSocket", "httpGet", "exec"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: p4
      namespace: test-gatekeeper
    spec:
      containers:
      - name: liveness
        image: k8s.gcr.io/busybox
        readinessProbe:
          exec:
            command:
              - cat
              - /tmp/healthy
          initialDelaySeconds: 5
          periodSeconds: 5
        livenessProbe:
          exec:
            command:
              - cat
              - /tmp/healthy
          initialDelaySeconds: 5
          periodSeconds: 5

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: p1
      namespace: test-gatekeeper
    spec:
      containers:
      - name: liveness
        image: k8s.gcr.io/busybox
  • ACKCheckNginxPath

    Esta política impede o uso de configurações de alto risco no campo spec.rules[].http.paths[].path de Ingresses. Recomendamos ativar a política para Ingress-nginx com versão anterior à 1.2.1.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKCheckNginxPath
    metadata:
      name: block-nginx-path
    spec:
      enforcementAction: deny
      match:
        kinds:
          - apiGroups: ["extensions", "networking.k8s.io"]
            kinds: ["Ingress"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: good-paths
      namespace: test-gatekeeper
    spec:
      rules:
        - host: cafe.example.com
          http:
            paths:
              - path: /tea
                pathType: Prefix
                backend:
                  service:
                    name: tea-svc
                    port:
                      number: 80
              - path: /coffee
                pathType: Prefix
                backend:
                  service:
                    name: coffee-svc
                    port:
                      number: 80

    Não permitido:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: bad-path-secrets
      namespace: test-gatekeeper
    spec:
      rules:
        - host: cafe.example.com
          http:
            paths:
              - path: /var/run/secrets
                pathType: Prefix
                backend:
                  service:
                    name: tea-svc
                    port:
                      number: 80
  • ACKCheckNginxAnnotation

    Esta política impede o uso de configurações de alto risco no campo metadata.annotations de Ingresses. Recomendamos ativar a política para Ingress-nginx com versão anterior à 1.2.1.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKCheckNginxAnnotation
    metadata:
      name: block-nginx-annotation
    spec:
      match:
        kinds:
          - apiGroups: ["extensions", "networking.k8s.io"]
            kinds: ["Ingress"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: good-annotations
      namespace: test-gatekeeper
      annotations:
        nginx.org/good: "value"
    spec:
      rules:
        - host: cafe.example.com
          http:
            paths:
              - path: /tea
                pathType: Prefix
                backend:
                  service:
                    name: tea-svc
                    port:
                      number: 80
              - path: /coffee
                pathType: Prefix
                backend:
                  service:
                    name: coffee-svc
                    port:
                      number: 80

    Não permitido:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: var-run-secrets
      namespace: test-gatekeeper
      annotations:
        nginx.org/bad: "/var/run/secrets"
    spec:
      rules:
        - host: cafe.example.com
          http:
            paths:
              - path: /tea
                pathType: Prefix
                backend:
                  service:
                    name: tea-svc
                    port:
                      number: 80
              - path: /coffee
                pathType: Prefix
                backend:
                  service:
                    name: coffee-svc
                    port:
                      number: 80
  • ACKBlockInternetLoadBalancer

    Descrição da política: Não é possível criar Services LoadBalancer voltados para a internet.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKBlockInternetLoadBalancer
    metadata:
      name: block-internet-load-balancer
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Service"]
        namespaces: ["test-gatekeeper"]

    Permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: non-test-gatekeeper
      annotations:
        'service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type': 'intranet'
    spec:
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376
      type: LoadBalancer

    Não permitido:

    apiVersion: v1
    kind: Service
    metadata:
      name: bad-service-2
      namespace: test-gatekeeper
      annotations:
        'service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type': 'internet'
    spec:
      type: LoadBalancer
      selector:
        app: MyApp
      ports:
        - name: http
          protocol: TCP
          port: 80
          targetPort: 9376

PSP

  • ACKPSPAllowedUsers

    Descrição da política: Os pods nos namespaces especificados devem ter as configurações de user, group, supplementalGroups e fsGroup.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    runAsUser

    object

    Para mais informações sobre este parâmetro, consulte as configurações de User, os tipos de regra suportados e os valores mínimo e máximo de UIDs na PSP do Kubernetes. Para mais detalhes, veja Usuários e grupos.

    runAsGroup

    object

    Para mais informações sobre este parâmetro, consulte as configurações de Group, os tipos de regra suportados e os valores mínimo e máximo de UIDs na PSP do Kubernetes. Para mais detalhes, veja Usuários e grupos.

    supplementalGroups

    object

    Para mais informações sobre este parâmetro, consulte as configurações de SupplementalGroups, os tipos de regra suportados e os valores mínimo e máximo de UIDs na PSP do Kubernetes. Para mais detalhes, veja Usuários e grupos.

    fsGroup

    object

    Para mais informações sobre este parâmetro, consulte as configurações de fsGroup, os tipos de regra suportados e os valores mínimo e máximo de UIDs na PSP do Kubernetes. Para mais detalhes, veja Usuários e grupos.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPAllowedUsers
    metadata:
      name: psp-pods-allowed-user-ranges
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        runAsUser:
          rule: MustRunAs # MustRunAsNonRoot # RunAsAny
          ranges:
            - min: 100
              max: 200
        runAsGroup:
          rule: MustRunAs # MayRunAs # RunAsAny
          ranges:
            - min: 100
              max: 200
        supplementalGroups:
          rule: MustRunAs # MayRunAs # RunAsAny
          ranges:
            - min: 100
              max: 200
        fsGroup:
          rule: MustRunAs # MayRunAs # RunAsAny
          ranges:
            - min: 100
              max: 200

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good2
      namespace: test-gatekeeper
    spec:
      securityContext:
        fsGroup: 150
        supplementalGroups:
          - 150
      containers:
      - image: test
        name: test
        securityContext:
          runAsUser: 150
          runAsGroup: 150

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
  • ACKPSPAllowPrivilegeEscalationContainer

    Descrição da política: Os pods nos namespaces especificados devem ter o parâmetro allowPrivilegeEscalation configurado.

    Gravidade: Média

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPAllowPrivilegeEscalationContainer
    metadata:
      name: psp-allow-privilege-escalation-container
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          allowPrivilegeEscalation: false
      initContainers:
        - image: test
          name: test2
          securityContext:
            allowPrivilegeEscalation: false

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
  • ACKPSPAppArmor

    Descrição da política: Os pods nos namespaces especificados devem ter as configurações de AppArmor.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    probes

    array

    Especifica as sondas que devem ser configuradas para um pod. Valores válidos: readinessProbe e livenessProbe.

    probeTypes

    array

    Especifica os tipos de sondas que devem ser configuradas para um pod. Valores válidos: tcpSocket, httpGet e exec.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPAppArmor
    metadata:
      name: psp-apparmor
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedProfiles:
          - runtime/default

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
      annotations:
        'container.apparmor.security.beta.kubernetes.io/test': 'runtime/default'
        'container.apparmor.security.beta.kubernetes.io/test2': 'runtime/default'
    spec:
      containers:
      - image: test
        name: test
      initContainers:
      - image: test
        name: test2

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
  • ACKPSPCapabilities

    Descrição da política: Os pods nos namespaces especificados devem ter as configurações de Linux Capabilities.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedCapabilities

    array

    Especifica as capabilities que podem ser configuradas para um pod.

    requiredDropCapabilities

    array

    Especifica as capabilities que não podem ser configuradas para um pod.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPCapabilities
    metadata:
      name: psp-capabilities
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedCapabilities: ["CHOWN"]
        requiredDropCapabilities: ["NET_ADMIN", "SYS_ADMIN", "NET_RAW"]

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good-4
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          capabilities:
            add:
              - CHOWN
            drop:
             - "NET_ADMIN"
             - "SYS_ADMIN"
             - "NET_RAW"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad-1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
  • ACKPSPFlexVolumes

    Descrição da política: Os pods nos namespaces especificados não podem usar drivers FlexVolume que não estejam listados no conteúdo da política.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedFlexVolumes

    array

    Especifica os drivers FlexVolume que podem ser usados por um pod.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPFlexVolumes
    metadata:
      name: psp-flexvolume-drivers
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod", "PersistentVolume"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedFlexVolumes: #[]
          - driver: "alicloud/disk"
          - driver: "alicloud/nas"
          - driver: "alicloud/oss"
          - driver: "alicloud/cpfs"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pv-nas
      namespace: test-gatekeeper
    spec:
      containers:
        - name: test
          image: test
      volumes:
        - name: test
          flexVolume:
            driver: "alicloud/nas"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pv-oss-flexvolume
      namespace: test-gatekeeper
    spec:
      containers:
        - name: test
          image: test
      volumes:
        - name: test
          flexVolume:
            driver: "alicloud/ossxx"
  • ACKPSPForbiddenSysctls

    Descrição da política: Os pods nos namespaces especificados não podem usar os sysctls indicados.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    forbiddenSysctls

    array

    Especifica os sysctls que não podem ser usados por um pod.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPForbiddenSysctls
    metadata:
      name: psp-forbidden-sysctls
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        forbiddenSysctls:
          # - "*" # * may be used to forbid all sysctls
          - "kernel.*"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good-2
      namespace: test-gatekeeper
    spec:
      securityContext:
        sysctls:
          - name: 'net.ipv4.tcp_syncookies'
            value: "65536"
      containers:
      - image: test
        name: test

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad-1
      namespace: test-gatekeeper
    spec:
      securityContext:
        sysctls:
          - name: 'kernel.shm_rmid_forced'
            value: '1024'
      containers:
      - image: test
        name: test
  • ACKPSPFSGroup

    Descrição da política: Os pods nos namespaces especificados devem ter configurações de fsGroup que atendam ao conteúdo da política.

    Gravidade: Média

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    rule

    string

    Para mais informações sobre este parâmetro, consulte as configurações de fsGroup na PSP do Kubernetes. Os parâmetros MustRunAs, MayRunAs e RunAsAny são suportados. Para mais detalhes, veja Volumes e sistemas de arquivos.

    ranges

    object

    Valores válidos:

    • min: o valor mínimo do ID de fsGroup.

    • max: o valor máximo do ID de fsGroup.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPFSGroup
    metadata:
      name: psp-fsgroup
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        rule: "MayRunAs" #"MustRunAs" #"MayRunAs", "RunAsAny"
        ranges:
          - min: 1
            max: 1000

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
    spec:
      securityContext:
        fsGroup: 100
      containers:
      - image: test
        name: test

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad-1
      namespace: non-test-gatekeeper
    spec:
      securityContext:
        fsGroup: 0
      shareProcessNamespace: true
      containers:
      - image: test
        name: test
  • ACKPSPHostFilesystem

    Descrição da política: Os volumes hostPath montados em pods nos namespaces especificados devem atender às condições definidas.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedHostPaths

    object

    Especifica os volumes hostPath que podem ser montados em um pod.

    readOnly

    boolean

    Define se os volumes são somente leitura.

    pathPrefix

    string

    Especifica os prefixos dos volumes.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPHostFilesystem
    metadata:
      name: psp-host-filesystem
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedHostPaths:
          - readOnly: true
            pathPrefix: "/foo"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        volumeMounts:
          - name: test-volume
            mountPath: "/projected-volume"
            readOnly: true
      volumes:
      - name: test-volume
        hostPath:
          path: /foo

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
      volumes:
      - name: test-volume
        hostPath:
          path: /data
          type: File
  • ACKPSPHostNamespace

    Descrição da política: Os pods nos namespaces especificados não podem compartilhar os namespaces do host.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPHostNamespace
    metadata:
      name: psp-host-namespace
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      hostPID: true
      containers:
      - image: test
        name: test
        resources: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Never
    status: {}
  • ACKPSPHostNetworkingPorts

    Descrição da política: Define se os pods nos namespaces especificados podem usar a rede do host e portas específicas.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    hostNetwork

    boolean

    Define se os pods podem usar a rede do host.

    min

    int

    Especifica o número mínimo da porta do host.

    max

    int

    Especifica o número máximo da porta do host.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPHostNetworkingPorts
    metadata:
      name: psp-host-network-ports
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        hostNetwork: true
        min: 80
        max: 9000

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: good-2
      namespace: test-gatekeeper
    spec:
      hostNetwork: true
      containers:
      - image: test
        name: test-container
        ports:
          - hostPort: 80
            containerPort: 80
      initContainers:
        - image: test
          name: test-container2
          ports:
            - hostPort: 8080
              containerPort: 8080

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bad-1
      namespace: non-test-gatekeeper
    spec:
      hostNetwork: true
      containers:
      - image: test
        name: test-container
        ports:
          - hostPort: 22
            containerPort: 22
  • ACKPSPPrivilegedContainer

    Descrição da política: Os pods nos namespaces especificados não podem executar contêineres privilegiados.

    Gravidade: Alta

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPPrivilegedContainer
    metadata:
      name: psp-privileged-container
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          privileged: true
      dnsPolicy: ClusterFirst
      restartPolicy: Never
  • ACKPSPProcMount

    Descrição da política: Os pods nos namespaces especificados devem ter o tipo de Proc Mount definido no conteúdo da política.

    Gravidade: Alta

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    procMount

    string

    Especifica o tipo de Proc Mount. Valores válidos:

    • Default: O diretório /proc não pode ser montado.

    • Unmasked: O diretório /proc pode ser montado.

    Para mais informações, veja AllowedProcMountTypes.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPProcMount
    metadata:
      name: psp-proc-mount
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        procMount: Default  # Default or Unmasked

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          procMount: "Default"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad3
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          procMount: "Unmasked"
      initContainers:
      - image: test
        name: test2
  • ACKPSPReadOnlyRootFilesystem

    Descrição da política: Os pods nos namespaces especificados devem executar com sistemas de arquivos raiz somente leitura.

    Gravidade: Média

    Descrição dos parâmetros: Nenhuma

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPReadOnlyRootFilesystem
    metadata:
      name: psp-readonlyrootfilesystem
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good1
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          readOnlyRootFilesystem: true

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad2
      namespace: non-test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          readOnlyRootFilesystem: false
      initContainers:
      - image: test
        name: test2
  • ACKPSPSeccomp

    Descrição da política: Os pods nos namespaces especificados devem ter os perfis seccomp indicados configurados.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedProfileTypes

    array

    Especifica o tipo de perfis seccomp permitidos.

    allowedProfiles

    array

    Especifica os perfis seccomp permitidos.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPSeccomp
    metadata:
      name: psp-seccomp
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedProfileTypes:
          # - Unconfined
          - RuntimeDefault
          - Localhost
        allowedProfiles:
          - runtime/default
          - docker/default
          - localhost/profiles/audit.json

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          seccompProfile:
            type: Localhost
            localhostProfile: profiles/audit.json
      initContainers:
      - image: test
        name: test2
        securityContext:
          seccompProfile:
            type: Localhost
            localhostProfile: profiles/audit.json

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
        echo-k8s-webhook-enabled: 'true'
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
  • ACKPSPSELinuxV2

    Descrição da política: Os pods nos namespaces especificados não podem ter opções SELinux que não estejam listadas pelo parâmetro allowedSELinuxOptions.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    allowedSELinuxOptios

    object

    Especifica as opções SELinux que podem ser configuradas para um pod. Para mais informações, consulte SELinuxOptions v1 core.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPSELinuxV2
    metadata:
      name: psp-selinux-v2
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        allowedSELinuxOptions:
          - level: s0:c123,c456
            role: object_r
            type: svirt_sandbox_file_t
            user: system_u

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: good
      namespace: test-gatekeeper
    spec:
      securityContext:
        seLinuxOptions:
          level: "s0:c123,c456"
      containers:
      - image: test
        name: test

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad
      namespace: test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
        securityContext:
          seLinuxOptions:
            level: "s0:c123,c455"
  • ACKPSPVolumeTypes

    Descrição da política: Apenas volumes dos tipos especificados podem ser montados em pods no namespace indicado.

    Gravidade: Baixa

    A seção a seguir descreve os parâmetros.

    Parâmetro

    Tipo

    Descrição

    volumes

    object

    Especifica os tipos de volumes permitidos para montagem.

    Exemplo:

    Restrição:

    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: ACKPSPVolumeTypes
    metadata:
      name: psp-volume-types
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaces:
          - "test-gatekeeper"
      parameters:
        volumes:
          # - "*" # * may be used to allow all volume types
          - configMap
          # - emptyDir
          - projected
          - secret
          - downwardAPI
          - persistentVolumeClaim
          # - hostPath #required for allowedHostPaths
          - flexVolume #required for allowedFlexVolumes

    Permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pv-oss
      namespace: test-gatekeeper
    spec:
      containers:
        - name: test
          image: test
      volumes:
        - name: test
          flexVolume:
            driver: "alicloud/oss"

    Não permitido:

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      labels:
        run: test
      name: bad-1
      namespace: non-test-gatekeeper
    spec:
      containers:
      - image: test
        name: test
      volumes:
      - name: test-volume
        hostPath:
          path: /data