|
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. |
Configurando PolicyServers para usar uma instância privada do Sigstore
Você pode configurar um PolicyServer para usar uma instância privada ou auto-hospedada do Sigstore para verificação de assinatura de políticas, em vez da infraestrutura pública padrão do Sigstore. Isso é útil em ambientes isolados ou quando você opera sua própria implantação do Sigstore.
Passo 1 - Gere o JSON ClientTrustConfig
O PolicyServer espera um JSON ClientTrustConfig que descreve as âncoras de confiança e a configuração de assinatura da sua instância privada do Sigstore.
Obtenha certificados e chaves públicas
Recupere o seguinte da sua instância privada do Sigstore:
-
fulcio.pem- Cadeia de certificados da CA Fulcio (PEM) -
rekor.pub- Chave pública do log de transparência Rekor -
tsa.pem- Cadeia de certificados da Autoridade de Timestamp (PEM) -
ctfe.pub- Chave pública do log CT
# Fulcio CA certificate chain
curl --fail -o fulcio.pem "${FULCIO_URL}/api/v1/rootCert"
# Rekor transparency log public key
curl --fail -o rekor.pub "${REKOR_URL}/api/v1/log/publicKey"
# Timestamp Authority certificate chain
curl --fail -o tsa.pem "${TSA_URL}/api/v1/timestamp/certchain"
# CT log public key (from the Kubernetes secret in tuf-system namespace)
kubectl get secret -o json -n tuf-system ctlog-public-key \
| jq -r ".data.public" | base64 -d > ctfe.pub
|
Consideração de segurança
Certifique-se de baixar os certificados e chaves com segurança de sua instância Sigstore. Caso contrário, você pode acabar configurando SUSE Security Admission Controller com dados comprometidos. Os comandos acima são exemplos de como fazer isso em um ambiente de teste. Consulte a equipe apropriada em sua organização para aprender como obter essas informações corretamente. |
Gere a raiz confiável e a configuração de assinatura
Defina variáveis de ambiente apontando para as URLs do seu serviço Sigstore privado:
export FULCIO_URL=https://fulcio.example.com
export REKOR_URL=https://rekor.example.com
export TSA_URL=https://tsa.example.com
export CTLOG_URL=https://ctlog.example.com
export ISSUER_URL=https://oidc.example.com
Execute cosign para gerar a raiz confiável:
cosign trusted-root create \
--fulcio="url=$FULCIO_URL,certificate-chain=fulcio.pem" \
--rekor="url=$REKOR_URL,public-key=rekor.pub,start-time=2024-01-01T00:00:00Z" \
--tsa="url=$TSA_URL,certificate-chain=tsa.pem" \
--ctfe="url=$CTLOG_URL,public-key=ctfe.pub,start-time=2024-01-01T00:00:00Z" \
--out trusted_root.json
Execute cosign para gerar a configuração de assinatura:
cosign signing-config create \
--fulcio="url=$FULCIO_URL,api-version=1,start-time=2024-01-01T00:00:00Z,operator=sigstore.dev" \
--rekor="url=$REKOR_URL,api-version=1,start-time=2024-01-01T00:00:00Z,operator=sigstore.dev" \
--rekor-config="ANY" \
--oidc-provider="url=$ISSUER_URL/auth,api-version=1,start-time=2024-01-01T00:00:00Z,operator=sigstore.dev" \
--tsa="url=$TSA_URL/api/v1/timestamp,api-version=1,start-time=2024-01-01T00:00:00Z,operator=sigstore.dev" \
--tsa-config="EXACT:1" \
--out signing_config.json
|
O valor de |
Para uma descrição completa de todas as flags disponíveis e definições de campos JSON para ambos os comandos, consulte a referência da CLI cosign e a especificação de configuração de confiança do cliente Sigstore.
Passo 2 - Crie um ConfigMap no namespace kubewarden
Armazene o JSON ClientTrustConfig em um ConfigMap com a chave sigstore-trust-config. O ConfigMap deve estar no namespace do controlador de admissão. Neste exemplo, kubewarden:
kubectl --namespace kubewarden create configmap my-sigstore-trust-config \
--from-file=sigstore-trust-config=trust_config.json
Passo 3 - Crie um ConfigMap de configuração de verificação
Crie um arquivo verification_config.yaml especificando as restrições de identidade do certificado para suas políticas assinadas. Por exemplo, ao usar um token de conta de serviço do Kubernetes:
allOf:
- kind: genericIssuer
issuer: https://kubernetes.default.svc.cluster.local
subject:
equal: https://kubernetes.io/namespaces/<namespace>/serviceaccounts/<serviceaccount>
anyOf: null
Substitua <namespace> e <serviceaccount> pelo namespace e pela conta de serviço usados ao assinar a política.
Crie o ConfigMap:
kubectl --namespace kubewarden create configmap my-verification-config \
--from-file=verification-config=verification_config.yaml
|
A chave do ConfigMap deve ser |
Passo 4 - Configure o PolicyServer
Defina spec.sigstoreTrustConfig e spec.verificationConfig no seu PolicyServer para os nomes dos ConfigMaps que você criou:
apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
name: default
spec:
image: ghcr.io/kubewarden/policy-server:latest
replicas: 1
sigstoreTrustConfig: my-sigstore-trust-config
verificationConfig: my-verification-config
O controlador monta os ConfigMaps no pod do policy-server e o configura para usar sua instância privada do Sigstore para verificação de assinatura, aplicando as restrições de identidade especificadas na configuração de verificação.
|
Consideração de segurança
Qualquer usuário com acesso de escrita ao ConfigMap referenciado por Restringa o acesso a este ConfigMap usando RBAC do Kubernetes, seguindo o princípio do menor privilégio. |