Cet article explique comment activer Workload Identity pour les installations Apigee hybrid sur les plates-formes AKS et EKS.
Présentation
La fédération d'identité de charge de travail permet aux applications exécutées en dehors de Google Cloud d'emprunter l'identité d'un compte de service Google Cloud Platform en utilisant les identifiants d'un fournisseur d'identité externe.
La fédération d'identité de charge de travail peut vous aider à améliorer la sécurité en permettant aux applications d'utiliser les mécanismes d'authentification fournis par l'environnement externe et à remplacer les clés de compte de service.
Pour en savoir plus, consultez la page Bonnes pratiques d'utilisation de la fédération d'identité de charge de travail.
Configurer la fédération d'identité de charge de travail
Pour utiliser la fédération d'identité de charge de travail avec Apigee hybrid, configurez d'abord votre cluster, puis appliquez la fonctionnalité à votre installation Apigee hybrid.
Configurez votre cluster pour qu'il utilise la fédération d'identité de charge de travail.
Suivez les instructions Google Cloud pour configurer la fédération d'identité de charge de travail pour Kubernetes, en tenant compte des modifications suivantes :
-
Listez vos comptes de service IAM et vos comptes de service Kubernetes à l'aide des commandes suivantes :
-
Comptes de service IAM : vous avez probablement déjà créé les comptes de service IAM (également appelés "comptes de service Google") lors de l'installation initiale d'Apigee hybrid avec l'outil
create-service-account
. Pour obtenir la liste des comptes de service IAM requis par Apigee hybrid, consultez la section À propos des comptes de service.Vous pouvez afficher la liste des comptes de service IAM de votre projet à l'aide de la commande suivante :
gcloud iam service-accounts list --project PROJECT_ID
-
Comptes de service Kubernetes : les graphiques Apigee hybrid créent les comptes de service Kubernetes nécessaires pour chaque composant lorsque vous exécutez la commande
helm install
ouhelm update
.Vous pouvez afficher les comptes de service Kubernetes dans votre cluster à l'aide des commandes
kubectl get sa
:kubectl get sa -n APIGEE_NAMESPACE
kubectl get sa -n apigee-system
-
Comptes de service IAM : vous avez probablement déjà créé les comptes de service IAM (également appelés "comptes de service Google") lors de l'installation initiale d'Apigee hybrid avec l'outil
-
À l'étape Configurer la fédération d'identité de charge de travail, l'audience par défaut des pools et fournisseurs d'identité de charge de travail créés est la suivante. Utilisez cette valeur par défaut ou définissez une audience attendue personnalisée, puis enregistrez cette valeur pour une utilisation ultérieure.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Arrêtez-vous après l'étape 1 sous Déployer une charge de travail Kubernetes. Il existe un fichier de configuration des identifiants pour chaque compte de service Google. Enregistrez chaque fichier de configuration des identifiants, puis enregistrez le chemin d'accès saisi pour le paramètre
--credential-source-file
, par exemple :/var/run/service-account/token
.
Configurer Apigee hybrid pour utiliser la fédération d'identité de charge de travail
-
Copiez le fichier source et le fichier de sortie (
credential-configuration.json
) des identifiants dans les répertoires de chart suivants. Il s'agit des valeurs que vous avez fournies à l'étape 1 sous Déployer une charge de travail Kubernetes.apigee-datastore/
apigee-env
apigee-org/
apigee-telemetry/
-
Apportez les modifications globales suivantes au fichier de remplacement de votre cluster :
gcp: workloadIdentity: enabled: false # must be set to false to use Workload Identity Federation federatedWorkloadIdentity: enabled: true audience: "AUDIENCE" credentialSourceFile: "CREDENTIAL_SOURCE_FILE"
Où :
-
AUDIENCE correspond à l'audience autorisée du fournisseur d'identité de charge de travail, la valeur sous
.audience
dans le fichier de configuration des identifiants JSON que vous avez configuré dans l'Étape 1 sous Déployer une charge de travail Kubernetes. -
CREDENTIAL_SOURCE_FILE correspond au nom de fichier et chemin d'accès au fichier source d'identifiants utilisé par la fédération d'identité de charge de travail pour obtenir les identifiants des comptes de service. Il s'agit de la valeur que vous fournissez pour
credential-source-file
lorsque vous configurez la fédération d'identité de charge de travail avec la commandecreate-cred-config
à l'étape 1 sous Déployer une charge de travail Kubernetes. Exemple :
Exemple :
gcp: workloadIdentity: enabled: false federatedWorkloadIdentity: enabled: true audience: "//iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/aws-pool/providers/aws-provider" credentialSourceFile: "/var/run/service-account/token"
-
AUDIENCE correspond à l'audience autorisée du fournisseur d'identité de charge de travail, la valeur sous
-
Configurez les remplacements pour chaque composant à l'aide de la fédération d'identité de charge de travail. Sélectionnez les instructions correspondant aux fichiers de certificat, aux secrets Kubernetes ou à Vault en fonction de votre installation.
Fichier de certification
Remplacez la valeur de
serviceAccountPath
par le fichier source des identifiants. Il doit s'agir du chemin d'accès relatif au répertoire de chart. Exemple :udca: serviceAccountPath: fwi/credential-configuration.json
Secret K8s
-
Créez un secret Kubernetes en utilisant le fichier source des identifiants.
kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"
Exemple :
kubectl create secret -n apigee generic udca-fwi-secret --from-file="client_secret.json=./fwi/credential-configuration.json"
-
Remplacez la valeur de
serviceAccountRef
par le nouveau secret. Exemple :udca: serviceAccountRef: udca-fwi-secret
Vault
Mettez à jour la clé de compte de service
SAKEY
dans Vault avec le fichier de source des identifiants. Par exemple, pour UDCA (la procédure est similaire pour tous les composants) :SAKEY=$(cat ./fwi/credential-configuration.json); kubectl -n apigee exec vault-0 -- vault kv patch secret/apigee/orgsakeys udca="$SAKEY"
-
Créez un secret Kubernetes en utilisant le fichier source des identifiants.
-
Appliquez les modifications à chaque composant concerné à l'aide de la commande
helm update
:Si vous utilisez Vault pour la première fois avec ce cluster, mettez à jour le chart
apigee-operator
:helm upgrade operator apigee-operator/ \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Mettez à jour les autres charts concernés dans l'ordre suivant :
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
helm upgrade telemetry apigee-telemetry/ \ --namespace apigee \ --atomic \ -f overrides.yaml
helm upgrade $ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f overrides.yaml
Mettez à jour le chart
apigee-env
pour chaque environnement, en remplaçant ENV_NAME à chaque fois :helm upgrade $ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Consultez la documentation de référence de Helm sur Apigee hybrid pour obtenir la liste des composants et des charts correspondants.
Pour en savoir plus sur la fédération d'identité de charge de travail et les bonnes pratiques, consultez la page Bonnes pratiques d'utilisation de la fédération d'identité de charge de travail.