|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
|
Esta é uma documentação não divulgada para Admission Controller 1.34-dev. |
Verifique as imagens da Coleção de Aplicativo do Rancher
Esta seção descreve como verificar aplicativos e imagens da Coleção de Aplicativo do Rancher com SUSE Security Admission Controller.
Você realiza a verificação de imagens implantando a política Verificar Assinaturas de Imagem e configurando os PolicyServers para puxar as camadas de assinatura das imagens da Coleção de Aplicativo.
|
Você precisa de um token de acesso ou autenticação de conta de serviço para a Coleção de Aplicativo. |
Autenticando-se na Coleção de Aplicativo do Rancher
Seguindo a documentação da Coleção de Aplicativo, crie um token de acesso e configure o cluster para puxar do registro da Coleção de Aplicativo, com um Segredo de Configuração Docker:
$ kubectl create secret docker-registry application-collection \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
Crie um Segredo para o PolicyServer para que ele possa puxar da Coleção de Aplicativo do Rancher
O PolicyServer em uso precisa de configuração para que possa puxar as camadas de imagem que contêm as assinaturas.
Siga os procedimentos de registries privados para os PolicyServers para criar um Segredo de Configuração Docker no namespace do PolicyServer. Você faz isso instanciando um Segredo com o mesmo conteúdo do anterior application-collection.
Para o PolicyServer default, instalado com o gráfico Helm kubewarden-defaults no namespace kubewarden, seria:
$ kubectl create secret docker-registry application-collection-kw -n kubewarden \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
Configure os PolicyServers para usar o novo Segredo
Se estiver usando o PolicyServer default do gráfico Helm kubewarden-defaults, configure-o com o imagePullSecret application-collection-kw. Isso no mesmo namespace e é feito definindo os seguintes valores para o gráfico:
$ helm upgrade -i --wait --namespace kubewarden \
--create-namespace kubewarden-defaults kubewarden/kubewarden-defaults \
--reuse-values \
--set policyServer.imagePullSecret=application-collection-kw
Se você estiver usando outros PolicyServers, defina seus spec.imagePullSecret. O Segredo deve estar no mesmo namespace que o PolicyServer.
Aplique a política
Você pode aplicar uma ClusterAdmissionPolicy utilizando a política Verificar Assinaturas de Imagem. Esta política verifica todas as imagens de contêiner de dp.apps.rancher.io/containers/*. A política suporta registros OCI e artefatos.
Você pode configurar as configurações da política com a chave pública da Coleção de Aplicativo (no momento da redação) no array pubKeys.
$ kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
annotations:
artifacthub/pkg: verify-image-signatures/verify-image-signatures/0.2.9
name: check-appcollection-signatures
spec:
backgroundAudit: true
mode: protect
module: ghcr.io/kubewarden/policies/verify-image-signatures:v0.2.9
mutating: true
policyServer: default
# On first policy call, the policy-server downloads the image layers to
# verify the signatures. Later on it's cached. It may be useful to increase
# this timeout:
timeoutSeconds: 30 # default 10 seconds.
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE", "UPDATE"]
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["replicationcontrollers"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["apps"]
apiVersions: ["v1"]
resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["batch"]
apiVersions: ["v1"]
resources: ["jobs", "cronjobs"]
operations: ["CREATE", "UPDATE"]
settings:
modifyImagesWithDigest: true
rule: PublicKey
signatures:
- image: dp.apps.rancher.io/containers/*
pubKeys:
# Note: this array constitutes an AND in validation, not an OR.
- |-
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02FtEt5gBywiyxbmkVsb
CujcBg5lur0kpEbfDk10gCcs9shVEqEO3ZsOXHursgoaDAWqdPtsYhsgczGeJz9w
Aw+r6BuRV8YOkE37A8s/7IOQUW0tlqtnt11OKhIiZ9+e5l3ed2H1ymKQO3dgreSy
rShqYdA3hrItswyp41ApF6zhjSPlR6lAmq3X4wMYLAPptmzfxigTnR4hxB5UNPhs
i2qA4vLrUM/i+NohECuLr1EAymvupH26HLEdM+eZnlQn+WbhIP5Grc4ba7XrBv7K
kywgTC7CxkiJZR0mUcUD2wTX/Je8Ewj6oPSalx09e2jtzvmU5Kr9XUyMF7Zsj5CA
IwIDAQAB
-----END PUBLIC KEY-----
EOF
$ kubectl apply -f mypolicy.yml
$ kubectl get admissionpolicies -n default # wait for status active
Para testá-la, implante um Pod com uma imagem assinada da Coleção de Aplicativo:
$ kubectl run nginx --image [dp.apps.rancher.io/containers/nginx:1.24.0](http://dp.apps.rancher.io/containers/nginx:1.24.0) --overrides='{"spec": {"imagePullSecrets":[{"name": "application-collection"}]}}'
pod/nginx created
Você pode inspecionar os logs do seu PolicyServer Pod para ver que a verificação ocorreu.