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 console Google Cloud, procédez comme suit:

  1. Dans Google Cloud Console, accédez à la page Stratégie 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": "<var>CLUSTER_NAME</var>",
    "location": "<var>CLUSTER_LOCATION</var>",
    "project_id": "<var>DEPLOYER_PROJECT_ID</var>"
  }
},
"timestamp": "2021-03-19T17:15:43.872702342Z",
"severity": "WARNING",
"logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}

Pour savoir comment interroger des événements d'ancienne CV, consultez la page Afficher les événements d'ancienne CV sur Cloud Logging.

Dépannage

L'ancienne CV utilise d'autres services Google Cloud, tels que Cloud Asset Inventory et Pub/Sub. En cas d'échec de l'ancienne CV, vous pouvez rechercher les erreurs liées à Cloud Asset Inventory dans Cloud Logging.

En outre, l'ancienne CV crée une ressource de flux appelée binauthz-cv-cai-feed. La suppression ou la modification du flux peut entraîner un échec de l'ancienne CV. L'ancienne CV restaure automatiquement les flux manquants ou modifiés, mais elle ne peut pas journaliser ses résultats tant que la restauration n'est pas effectuée.

Désactiver la CV

Console

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

  1. Dans Google Cloud Console, accédez à la page 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écochez la case Activer la validation continue.

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

API REST

Pour désactiver 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. Désactivez l'ancienne CV à l'aide de la commande suivante :

    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": "false"}}'
    

Afficher les événements d'ancienne CV dans Cloud Logging.

Une fois la CV activée, elle enregistre régulièrement tous les pods qui ne respectent pas la règle d'autorisation binaire dans Cloud Logging.

Ces entrées de journal contiennent le nom de journal suivant :

logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"

Explorateur de journaux

Pour afficher des événements d'ancienne CV dans Cloud Logging à l'aide de l'explorateur de journaux, procédez comme suit :

  1. Accéder à l'explorateur de journaux.

  2. Sélectionnez l'ID du projet dans lequel vous avez activé Google Cloud Observability.

  3. Saisissez la requête suivante dans la zone de requête de recherche :

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. Sélectionnez la période dans le sélecteur de période.

Ancienne visionneuse de journaux

Pour afficher des événements d'ancienne CV dans Cloud Logging à l'aide de l'explorateur de journaux, procédez comme suit :

  1. Accéder à l'explorateur de journaux.

  2. Sélectionnez Retour à l'ancienne visionneuse de journaux dans le menu déroulant Options.

  3. Choisissez le projet Google Cloud pour lequel vous configurez Google Cloud Observability.

  4. Saisissez la requête suivante dans la zone de requête de recherche :

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. Sélectionnez la période dans le sélecteur de période.

gcloud

Pour afficher les événements d'ancienne CV de la semaine précédente dans Cloud Logging à l'aide de gcloud, exécutez la commande suivante :

gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'

Étapes suivantes