Créer des certificateurs à l'aide de gcloud CLI

Cette page explique comment créer un certificateur dans l'autorisation binaire à l'aide de Google Cloud CLI. Vous pouvez également effectuer ces étapes à l'aide de la consoleGoogle Cloud ou de l'API REST. Cette tâche fait partie de la configuration de l'autorisation binaire.

En tant qu'utilisateur Cloud Build, vous pouvez utiliser le certificateur built-by-cloud-build pour déployer uniquement les images créées par Cloud Build.

Un certificateur est une ressourceGoogle Cloud utilisée par l'autorisation binaire pour valider une attestation. Pour en savoir plus sur les attestations, consultez la présentation de l'autorisation binaire.

Pour créer un certificateur, procédez comme suit :

  • Créer une note dans Artifact Analysis pour stocker les métadonnées de confiance utilisées dans le processus d'autorisation.
  • Configurez une paire de clés PKIX (Public-Key Infrastructure X.509) pouvant être utilisée pour vérifier l'identité du certificateur. (Les paires de clés asymétriques générées par Cloud Key Management Service (Cloud KMS) sont dans un format compatible avec PKIX.)
  • Créer le certificateur proprement dit dans l'autorisation binaire, puis lui associer la note et la clé publique que vous avez créées.

Dans une configuration à un seul projet, vous créez votre certificateur dans le même projet Google Cloud où vous configurez votre stratégie d'autorisation binaire. Pour accéder à un tutoriel de projet unique de bout en bout incluant ces étapes, consultez les pages suivantes : Premiers pas avec Google Cloud CLI ou Premiers pas avec la console Google Cloud .

Dans une configuration multiprojets, nous vous recommandons de disposer de projets distincts: un projet de déploiement, dans lequel votre stratégie est configurée, un projet certifiant, dans lequel sont stockés vos certificateurs et un projet d'attestation pour les attestations. Pour obtenir un tutoriel multiprojet de bout en bout qui inclut ces étapes, consultez la section Configuration multiprojet.

Avant de commencer

Avant de créer des certificateurs, procédez comme suit :

  1. Activer l'autorisation binaire.

  2. Configurez l'autorisation binaire pour votre plate-forme.

Configurer l'environnement du projet

Dans cette section, vous allez configurer les variables d'environnement.

Configurez des variables d'environnement pour stocker les noms et les numéros de vos projets. Si votre projet certifiant est le même que votre projet déployant, utilisez le même ID de projet pour les deux variables.

DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID=
DEPLOYER_PROJECT_NUMBER="$(
    gcloud projects describe "${DEPLOYER_PROJECT_ID}" \
      --format="value(projectNumber)"
)"

ATTESTOR_PROJECT_ID=ATTESTOR_PROJECT_ID
ATTESTOR_PROJECT_NUMBER="$(
    gcloud projects describe "${ATTESTOR_PROJECT_ID}" \
    --format="value(projectNumber)"
)"

Vous devez également obtenir les noms des comptes de service associés à ces projets :

DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
ATTESTOR_SERVICE_ACCOUNT="service-${ATTESTOR_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"

Créer une note Artifact Analysis

L'autorisation binaire utilise Artifact Analysis pour stocker les métadonnées de confiance utilisées dans le processus d'autorisation. Pour chaque certificateur que vous créez, vous devez créer une note Artifact Analysis. Chaque attestation est stockée en tant qu'occurrence de cette note.

Pour créer la note, procédez comme suit :

  1. Configurez des variables d'environnement pour stocker l'ID de note et une description lisible :

    NOTE_ID=NOTE_ID
    NOTE_URI="projects/${ATTESTOR_PROJECT_ID}/notes/${NOTE_ID}"
    DESCRIPTION=DESCRIPTION
    

    Remplacez les éléments suivants :

    • NOTE_ID est le nom interne de la note, composé de caractères alphanumériques sans espace (par exemple, test-attestor-note) ;
    • NOTE_URI est le chemin d'accès complet à la ressource de note ;
    • DESCRIPTION est le nom lisible à afficher pour la note (par exemple, Test Attestor Note).
  2. Créez un fichier JSON décrivant la note :

    cat > /tmp/note_payload.json << EOF
    {
      "name": "${NOTE_URI}",
      "attestation": {
        "hint": {
          "human_readable_name": "${DESCRIPTION}"
        }
      }
    }
    EOF
    
  3. Créez la note en envoyant une requête HTTP à l'API REST Container Analysis :

    curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${ATTESTOR_PROJECT_ID}" \
        --data-binary @/tmp/note_payload.json  \
        "https://containeranalysis.googleapis.com/v1/projects/${ATTESTOR_PROJECT_ID}/notes/?noteId=${NOTE_ID}"