Ce document explique comment configurer l'autorisation binaire pour les clusters sur site créés dans Google Distributed Cloud. Il vous explique ensuite comment configurer un exemple de stratégie d'autorisation binaire.
Avant de commencer
Assurez-vous que vos clusters disposent d'une version Google Distributed Cloud compatible. L'autorisation binaire est compatible avec les environnements suivants.
Bare Metal
Google Distributed Cloud 1.14 ou 1.15. Pour la version 1.16 ou ultérieure, l'autorisation binaire peut être configurée lors de la création ou de la mise à jour du cluster.
VMware
Distributed Cloud pour VMware (Google Distributed Cloud) 1.4 ou version ultérieure.
Le service d'autorisation binaire utilise une adresse IP externe, accessible via une connexion Internet standard. Configurez vos règles de pare-feu pour HTTPS afin de permettre au cluster d'utilisateur d'accéder au point de terminaison
binaryauthorization.googleapis.com.Bare Metal
Configurez les règles de pare-feu Google Distributed Cloud.
VMware
Configurez les règles de pare-feu Google Distributed Cloud.
Si vous souhaitez utiliser des journaux d'audit Cloud centralisés pour afficher les entrées des journaux d'audit, y compris celles de l'autorisation binaire pour les clusters en dehors de Google Cloud, vous devez configurer Cloud Audit Logs dans la configuration de votre cluster.
Bare Metal
Configurez Cloud Audit Logs dans Google Distributed Cloud.
VMware
Configurez Cloud Audit Logs dans Google Distributed Cloud.
Vous devez activer l'API d'autorisation binaire comme suit :
Accédez à la console Google Cloud .
Dans la liste déroulante des projets, sélectionnez votre projet hôte du parc. Vous pouvez le trouver dans la section
gkeConnectde votre fichier de configuration de cluster d'utilisateur. Il s'agit du projet Google Cloud qui connecte votre cluster d'utilisateur à Google Cloud.
Configurer l'autorisation binaire
Dans cette section, vous allez configurer l'autorisation binaire dans votre cluster sur site.
Spécifier les variables d'environnement d'installation
Pour spécifier les variables d'environnement, procédez comme suit :
Utiliser Workload Identity
Spécifiez votre projet hôte de parc :
export PROJECT_ID=PROJECT_IDDéfinissez l'ID de membre de parc sur l'ID de votre cluster :
L'ID de membre est indiqué dans la colonne
NAMElorsque vous exécutez la commandegcloud container fleet memberships list.export MEMBERSHIP_ID=CLUSTER_NAME
Utiliser une clé de compte de service
Spécifiez votre projet hôte de parc :
export PROJECT_ID=PROJECT_IDRemplacez PROJECT_ID par le projet Google Cloud dans la section
gkeConnectdu fichier de configuration de votre cluster d'utilisateur.Spécifiez le chemin d'accès au fichier kubeconfig du cluster d'utilisateur :
export KUBECONFIG=PATHRemplacez PATH par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.
Choisissez un nom pour le compte de service d'accès à l'API d'autorisation binaire :
export SA_NAME=SERVICE_ACCOUNT_NAMERemplacez SERVICE_ACCOUNT_NAME par le nom de compte de service de votre choix. Le module d'autorisation binaire utilise ce compte de service pour accéder à l'API d'autorisation binaire.
Spécifiez le chemin d'accès au fichier de clé de compte de service que vous allez télécharger plus loin dans ce guide :
export SA_JSON_PATH=SA_KEY_FILE_PATHRemplacez SA_KEY_FILE_PATH par le chemin du fichier de clé JSON pour le compte de service.
Installer le module d'autorisation binaire dans votre cluster d'utilisateur
Pour installer le module d'autorisation binaire, procédez comme suit :
Utiliser Workload Identity
Fleet Workload Identity permet aux charges de travail de votre cluster de s'authentifier auprès de Google sans que vous ayez besoin de télécharger, d'alterner manuellement ni de gérer les clés des comptes de service Google Cloud . Pour en savoir plus sur le fonctionnement de Workload Identity pour parc et les avantages liés à son utilisation, consultez la page Utiliser Workload Identity pour parc.
Attribuez le rôle
binaryauthorization.policyEvaluatorau compte de service Kubernetes sur votre projet hôte de parc :gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_ID}.svc.id.goog[binauthz-system/binauthz-admin]" \ --role="roles/binaryauthorization.policyEvaluator"Créez un répertoire de travail :
Créez un répertoire appelé
binauthz.Accédez au répertoire.
Téléchargez le fichier
manifest-wi-0.2.6.yaml.tmplque vous utilisez pour installer le module d'autorisation binaire dans votre cluster d'utilisateur :Bare Metal
gcloud storage cp gs://anthos-baremetal-release/binauthz/manifest-wi-0.2.6.yaml.tmpl .VMware
gcloud storage cp gs://gke-on-prem-release/binauthz/manifest-wi-0.2.6.yaml.tmpl .Remplacez les variables d'environnement dans le modèle :
envsubst < manifest-wi-0.2.6.yaml.tmpl > manifest-0.2.6.yamlInstallez le module d'autorisation binaire dans votre cluster d'utilisateur :
kubectl apply -f manifest-0.2.6.yamlVérifiez que le déploiement a bien été créé :
kubectl get pod --namespace binauthz-systemLe pod
binauthz-module-deployment-*est répertorié avecStatusdeRunninget 1/1 Pods prêt, semblable à ce résultat :NAME READY STATUS RESTARTS AGE binauthz-module-deployment-5fddf9594f-qjprz 1/1 Running 0 11s
Utiliser une clé de compte de service
Définissez le projet par défaut pour la Google Cloud CLI :
gcloud config set project ${PROJECT_ID}Créez un compte de service d'accès à l'API d'autorisation binaire :
gcloud iam service-accounts create ${SA_NAME}Attribuez le rôle
binaryauthorization.policyEvaluatorau compte de service d'accès de l'API d'autorisation binaire sur votre projet hôte de parc :gcloud projects add-iam-policy-binding ${PROJECT_ID}\ --member="serviceAccount:${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/binaryauthorization.policyEvaluator"Créez un répertoire de travail :
Créez un répertoire appelé
binauthz.Accédez au répertoire.
Téléchargez le fichier
manifest-0.2.6.yamlque vous utilisez pour installer le module d'autorisation binaire dans votre cluster d'utilisateur :Bare Metal
gcloud storage cp gs://anthos-baremetal-release/binauthz/manifest-0.2.6.yaml .VMware
gcloud storage cp gs://gke-on-prem-release/binauthz/manifest-0.2.6.yaml .Créez un fichier YAML pour l'espace de noms
binauthz-system.Copiez le fichier suivant dans un fichier nommé
namespace.yaml:apiVersion: v1 kind: Namespace metadata: labels: control-plane: binauthz-controller name: binauthz-systemCréez l'espace de noms dans votre cluster d'utilisateur :
kubectl apply -f namespace.yamlVous obtenez un résultat semblable à celui-ci :
namespace/binauthz-system createdTéléchargez un fichier de clé JSON associé à votre compte de service :
gcloud iam service-accounts keys create ${SA_JSON_PATH} --iam-account ${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.comEnregistrez la clé du compte de service en tant que secret Kubernetes dans votre cluster d'utilisateur :
kubectl --namespace binauthz-system create secret generic binauthz-sa --from-file=key.json=${SA_JSON_PATH}Installez le module d'autorisation binaire dans votre cluster d'utilisateur :
kubectl apply -f manifest-0.2.6.yamlVérifiez que le déploiement a bien été créé :
kubectl get pod --namespace binauthz-systemLe pod
binauthz-module-deployment-*est répertorié avecStatusdeRunninget 1/1 Pods prêt, semblable à ce résultat :NAME READY STATUS RESTARTS AGE binauthz-module-deployment-5fddf9594f-qjprz 1/1 Running 0 11s
Configurer et utiliser des stratégies d'autorisation binaire
Cette section vous explique comment configurer et utiliser des stratégies d'autorisation binaire pour les clusters sur site.
Dans chaque exemple, vous configurez la stratégie, puis la testez en essayant de déployer une image de conteneur dans votre cluster.
Tout autoriser
Cette section décrit un cas de réussite. Vous configurez la stratégie d'autorisation binaire de sorte qu'une image de conteneur respecte la stratégie et soit déployée.
Dans Google Cloud, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page "Autorisation binaire".
Veillez à sélectionner l'ID de votre projet hôte de parc.
Cliquez sur Modifier la stratégie.
Sous Règle par défaut du projet, sélectionnez Autoriser toutes les images.
Cliquez sur Save Policy (Enregistrer la stratégie).
gcloud
Définissez
PROJECT_IDpour votre projet hôte de parc. Vous pouvez trouver cet ID de projet dans le champgkeConnectde votre fichier de configuration de cluster d'utilisateur.export PROJECT_ID=PROJECT_IDDéfinissez le projet Google Cloud par défaut.
gcloud config set project ${PROJECT_ID}Exportez le fichier YAML de stratégie vers votre système local :
gcloud container binauthz policy export > policy.yamlVotre fichier YAML se présente comme suit :
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE name: projects/<var>PROJECT_ID</var>/policyModifier
policy.yaml.Définissez
evaluationModesurALWAYS_ALLOW.Si le fichier contient un bloc
requireAttestationsBy, supprimez ce bloc.Enregistrez le fichier.
Importez
policy.yamlcomme suit :gcloud container binauthz policy import policy.yaml
Pour ajouter une image exclue à la liste d'autorisation, ajoutez ce qui suit au fichier de stratégie :
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
Remplacez EXEMPT_IMAGE_PATH par le chemin d'accès à l'image que vous souhaitez exclure. Pour exclure d'autres images, ajoutez d'autres entrées - namePattern. En savoir plus sur admissionWhitelistPatterns.
Sur votre poste de travail administrateur, procédez comme suit :
Créez un fichier manifeste pour un pod.
Enregistrez le fichier suivant dans un fichier nommé
pod.yaml:apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-container image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4Créez le pod :
kubectl apply -f pod.yamlVous constatez que le pod a bien été déployé.
Supprimez le pod :
kubectl delete -f pod.yaml
Refuser pour l'ensemble
Cette section présente un exemple d'échec. Dans cette section, vous allez configurer la stratégie par défaut pour interdire le déploiement de votre image de conteneur.
Dans Google Cloud , procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page "Autorisation binaire".
Assurez-vous que votre projet hôte du parc est sélectionné.
Cliquez sur