- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
En este tema se explica cómo habilitar Workload Identity para las instalaciones de Apigee Hybrid en las plataformas AKS y EKS.
Información general
La federación de identidades de carga de trabajo permite que las aplicaciones que se ejecutan fuera de Google Cloud suplanten la identidad de una cuenta de servicio de Google Cloud Platform mediante credenciales de un proveedor de identidades externo.
Usar la federación de identidades de carga de trabajo puede ayudarte a mejorar la seguridad, ya que permite que las aplicaciones usen los mecanismos de autenticación que proporciona el entorno externo y puede ayudarte a sustituir las claves de cuentas de servicio.
Para obtener una descripción general, consulta las prácticas recomendadas para usar la federación de identidades de cargas de trabajo.
Configurar la federación de identidades de cargas de trabajo
Para usar la federación de identidades de carga de trabajo con Apigee hybrid, primero debes configurar tu clúster y, a continuación, aplicar la función a tu instalación de Apigee hybrid.
Configura tu clúster para que use la federación de identidades de cargas de trabajo.
Sigue las instrucciones de Google Cloud para configurar la federación de identidades de cargas de trabajo para Kubernetes, con las siguientes modificaciones:
-
Lista tus cuentas de servicio de gestión de identidades y accesos y tus cuentas de servicio de Kubernetes con los siguientes comandos:
-
Cuentas de servicio de IAM: lo más probable es que ya hayas creado las cuentas de servicio de IAM (también llamadas "cuentas de servicio de Google") durante la instalación inicial de Apigee hybrid con la herramienta
create-service-account
. Consulta la lista de cuentas de servicio de gestión de identidades y accesos que necesita Apigee hybrid en el artículo Acerca de las cuentas de servicio.Puedes ver una lista de las cuentas de servicio de gestión de identidades y accesos de tu proyecto con el siguiente comando:
gcloud iam service-accounts list --project PROJECT_ID
-
Cuentas de servicio de Kubernetes: los gráficos de Apigee hybrid crean las cuentas de servicio de Kubernetes necesarias para cada componente cuando ejecutas el comando
helm install
ohelm update
.Puedes ver las cuentas de servicio de Kubernetes de tu clúster con los comandos
kubectl get sa
:kubectl get sa -n APIGEE_NAMESPACE
kubectl get sa -n apigee-system
-
Cuentas de servicio de IAM: lo más probable es que ya hayas creado las cuentas de servicio de IAM (también llamadas "cuentas de servicio de Google") durante la instalación inicial de Apigee hybrid con la herramienta
-
En el paso Configurar federación de identidades de cargas de trabajo, la audiencia predeterminada de los grupos y proveedores de identidades de cargas de trabajo creados es la siguiente. Usa este valor predeterminado o define una audiencia esperada personalizada y guarda este valor para usarlo más adelante.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Detente después del paso 1 de la sección Desplegar una carga de trabajo de Kubernetes. Habrá un archivo de configuración de credenciales para cada cuenta de servicio de Google. Guarda cada archivo de configuración de credenciales y la ruta introducida para el parámetro
--credential-source-file
, por ejemplo:/var/run/service-account/token
.
Configurar Apigee hybrid para usar la federación de identidades de cargas de trabajo
-
Copia el archivo de origen de las credenciales y el archivo de salida (
credential-configuration.json
) en los siguientes directorios de gráficos. Estos son los valores que has proporcionado en el paso 1 de la sección Implementar una carga de trabajo de Kubernetes.apigee-datastore/
apigee-env
apigee-org/
apigee-telemetry/
-
Haz los siguientes cambios globales en el archivo de anulaciones de tu clúster:
gcp: workloadIdentity: enabled: false # must be set to false to use Workload Identity Federation federatedWorkloadIdentity: enabled: true audience: "AUDIENCE" credentialSourceFile: "CREDENTIAL_SOURCE_FILE"
Donde:
-
AUDIENCE es la audiencia permitida del proveedor de identidades de carga de trabajo, el valor de
.audience
en el archivo JSON de configuración de credenciales que has configurado en el paso 1 de Implementar una carga de trabajo de Kubernetes. -
CREDENTIAL_SOURCE_FILE es el nombre de archivo y la ruta al archivo de origen de las credenciales que usa Workload Identity Federation para obtener las credenciales de las cuentas de servicio. Este es el valor que proporcionas para
credential-source-file
cuando configuras la federación de identidades de cargas de trabajo con el comandocreate-cred-config
en el paso 1 de Implementar una carga de trabajo de Kubernetes. Por ejemplo:
Por ejemplo:
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 es la audiencia permitida del proveedor de identidades de carga de trabajo, el valor de
-
Configura las anulaciones de cada componente mediante la federación de identidades de cargas de trabajo. Selecciona las instrucciones para archivos de certificado, secretos de Kubernetes o Vault según corresponda a tu instalación.
Archivo de certificado
Sustituye el valor de
serviceAccountPath
por el archivo de origen de las credenciales. Debe ser la ruta relativa al directorio del gráfico. Por ejemplo:udca: serviceAccountPath: fwi/credential-configuration.json
Secreto de K8s
-
Crea un secreto de Kubernetes con el archivo de origen de las credenciales.
kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"
Por ejemplo:
kubectl create secret -n apigee generic udca-fwi-secret --from-file="client_secret.json=./fwi/credential-configuration.json"
-
Sustituye el valor de
serviceAccountRef
por el nuevo secreto. Por ejemplo:udca: serviceAccountRef: udca-fwi-secret
Vault
Actualiza la clave de cuenta de servicio,
SAKEY
, en Vault con el archivo de origen de las credenciales. Por ejemplo, en el caso de UDCA (el procedimiento es similar para todos los componentes):SAKEY=$(cat ./fwi/credential-configuration.json); kubectl -n apigee exec vault-0 -- vault kv patch secret/apigee/orgsakeys udca="$SAKEY"
-
Crea un secreto de Kubernetes con el archivo de origen de las credenciales.
-
Aplica los cambios a cada componente afectado con el comando
helm update
:Si es la primera vez que usas Vault con este clúster, actualiza el gráfico
apigee-operator
:helm upgrade operator apigee-operator/ \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Actualiza el resto de los gráficos afectados en el siguiente orden:
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
Actualiza el gráfico
apigee-env
de cada entorno y sustituye ENV_NAME cada vez:helm upgrade $ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Consulta la referencia de Helm de Apigee hybrid para ver una lista de componentes y sus gráficos correspondientes.
Para obtener más información sobre la federación de identidades de cargas de trabajo y las prácticas recomendadas, consulta el artículo Prácticas recomendadas para usar la federación de identidades de cargas de trabajo.