Utiliser l'ancienne validation continue

Cette page est destinée aux utilisateurs de l'ancienne validation continue (obsolète).

L'ancienne validation continue est une fonctionnalité de l'autorisation binaire qui vérifie régulièrement les images de conteneur associées aux pods en cours d'exécution pour assurer la conformité continue avec votre règle Singleton d'autorisation binaire. L'ancienne CV journalise ses résultats dans Cloud Logging.

L'ancienne CV n'arrête pas les pods en cours d'exécution.

Limites

L'ancienne CV présente les limites suivantes :

  • L'ancienne CV n'est compatible qu'avec les pods déployés sur Google Kubernetes Engine (GKE).
  • L'ancienne CV n'accepte pas les règles d'autorisation binaire qui spécifient des règles spécifiques pour les identités de service Cloud Service Mesh, les comptes de service Kubernetes ou les espaces de noms Kubernetes.

Avant de commencer

  1. Assurez-vous d'avoir configuré l'autorisation binaire pour Google Kubernetes Engine dans un projet. L'ancienne CV consigne les événements de conformité avec les règles issus des pods de tous les clusters du projet.

  2. Assurez-vous que gcloud CLI est mise à jour vers la dernière version

Autorisations requises

Les rôles Identity and Access Management (IAM) incluent des autorisations et peuvent être attribués aux utilisateurs, aux groupes et aux comptes de service. Les rôles suivants incluent les autorisations répertoriées pour la CV :

Nom du rôle Autorisations de l'ancienne CV Description
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update Activer et désactiver la CV

Pour définir les autorisations IAM requises, exécutez les commandes suivantes :

PROJECT_NUMBER=$(gcloud projects list \
  --filter="projectId:ATTESTATION_PROJECT_ID" \
  --format="value(PROJECT_NUMBER)")
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role='roles/containeranalysis.occurrences.viewer'

Activer l'ancienne CV

Console

Pour activer l'ancienne CV en utilisant la Google Cloud console, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Règle de l'autorisation binaire.

    Accéder à la page "stratégie d'autorisation binaire"

  2. Cliquez sur l'onglet Règle.

  3. Cliquez sur Modifier la règle.

  4. Développez la section Paramètres supplémentaires pour les déploiements GKE et Anthos.

  5. Cochez la case Activer la validation continue.

  6. Cliquez sur Save Policy (Enregistrer la stratégie).

API REST

Pour activer l'ancienne CV à l'aide de l'API REST, procédez comme suit :

  1. Stockez l'ID de votre projet :

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    Remplacez DEPLOYER_PROJECT_ID par l'ID du projet dans lequel vous exécutez GKE.

  2. Obtenez le jeton OAuth pour Google Cloud.

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    Le jeton n'est valide que pendant une courte période.

  3. Activer l'ancienne CV:

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
    

L'ancienne CV est maintenant configurée pour consigner les événements.

L'entrée de journal de Logging est semblable à l'exemple suivant :

{
"insertId": "6054e143-0000-2562-aa64-883d24f57e70",
"jsonPayload": {
  "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
  "podEvent": {
    "images": [
      {
        "description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
        attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
        No attestations found that were valid and signed by a key trusted by
        the attestor",
        "image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
        "result": "DENY"
      }
    ],
    "verdict": "VIOLATES_POLICY",
    "deployTime": "2021-03-19T17:00:08Z",
    "pod": "<var>POD_NAME</var>"
  }
},
"resource": {
  "type": "k8s_cluster",
  "labels": {
    "cluster_name":