create-service-account

Descripción general de create-service-account

create-service-account es una herramienta de línea de comandos proporcionada con Apigee Hybrid que crea cuentas de servicio de Google Cloud con roles que permiten que los componentes híbridos individuales de Apigee realicen llamadas a la API autorizadas y descarguen los archivos de claves de cuenta de servicio asociados. Puedes usar los archivos de claves de la cuenta de servicio que genera este comando en el archivo de configuración de anulaciones.

create-service-account crea una o más cuentas de servicio en tu proyecto actual de Google Cloud o el proyecto que especifiques, asigna el rol de IAM correcta a la cuenta de servicio y descarga el archivo de certificado para la cuenta de servicio en un directorio de tu máquina local.

Para obtener más información sobre las cuentas de servicio y leer la lista completa de las que están recomendadas para entornos de producción, consulta los siguientes vínculos:

También puedes crear cuentas de servicio en la consola de Google Cloud . Consulta también Crea y administra cuentas de servicio.

Requisitos previos

Rol

La herramienta create-service-account requiere que la CLI de gcloud esté instalada. Los usuarios que invoquen la utilidad deben tener la función Service Account Admin.

Proyecto

Las cuentas de servicio están vinculadas a un proyecto específico de Google Cloud. create-service-account crea cuentas de servicio en tu proyecto actual o en el que especifiques, y vincula las funciones de IAM a las cuentas de servicio dentro de ese proyecto. create-service-account también usa el ID del proyecto como parte del correo electrónico y el nombre del archivo de claves de la cuenta de servicio. Por ejemplo, si tu proyecto se llama my-hybrid-project, el archivo de claves de la cuenta de servicio apigee-logger se llamará my-hybrid-project-apigee-logger.json y la dirección de correo electrónico de la cuenta de servicio será apigee-logger@my-hybrid-project.iam.gserviceaccount.com.

Puedes especificar un proyecto si defines una variable de entorno PROJECT_ID o con la marca --project-id. Si se configuran ambos, la marca --project-id tiene prioridad sobre la variable de entorno PROJECT_ID y create-service-account registra un [WARNING]. En todos los casos, la herramienta registra la fuente desde la que se leyó el ID del proyecto y, antes de crear cualquier cuenta de servicio, imprime el tipo de implementación, el proyecto y el directorio de salida resueltos.

Si no especificas un ID de proyecto de Cloud, create-service-account usa el proyecto en tu configuración de proyecto actual de gcloud.

Puedes verificar la configuración actual del proyecto gcloud con el siguiente comando:

gcloud config list project

Si necesitas cambiar el ID del proyecto actual, usa el siguiente comando:

gcloud config set project PROJECT_ID

En el ejemplo anterior, PROJECT_ID es el ID de tu proyecto actual de Cloud. Las instrucciones para crear un proyecto de Cloud se tratan en el Paso 2: Crea un proyecto de Google Cloud.

Ubicación del archivo

Puedes encontrar la herramienta de create-service-account en el siguiente directorio:

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/

Verifica que la herramienta create-service-account sea ejecutable

Verifica que puedas ejecutar create-service-account. Si acabas de descargar los gráficos de Helm para Apigee, es posible que las herramientas de línea de comandos no estén en un modo ejecutable. Navega al directorio en el que está instalado create-service-account y ejecútalo con --help para verificar que sea ejecutable:

./create-service-account --help

Si el resultado indica permission denied, debes hacer que el archivo sea ejecutable, por ejemplo, con chmod en Linux, MacOS o UNIX, o en Windows Explorer o con el comando icacls en Windows. Por ejemplo:

chmod +x ./create-service-account

Usa create-service-account

En los siguientes ejemplos, se muestra cómo usar create-service-account para tareas comunes de configuración de Apigee Hybrid.

Crea cuentas de servicio para un entorno de producción

Nota: En un entorno híbrido de producción, Apigee recomienda usar una cuenta de servicio independiente para cada componente. Usa el siguiente comando a fin de crear todas las cuentas de servicio para los componentes híbridos con sus nombres predeterminados en el directorio predeterminado.

./tools/create-service-account --prod

Esto creará las siguientes cuentas de servicio con los archivos de certificación descargados en el directorio ./tools/service-accounts:

Cuenta de servicio Rol de IAM Correo electrónico Archivo de certificación
apigee-cassandra roles/storage.objectAdmin apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-cassandra.json
apigee-guardrails roles/serviceusage.serviceUsageViewer apigee-guardrails@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-guardrails.json
apigee-logger roles/logging.logWriter apigee-logger@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-logger.json
apigee-mart roles/apigeeconnect.Agent apigee-mart@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mart.json
apigee-metrics roles/monitoring.metricWriter apigee-metrics@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-metrics.json
apigee-mint-task-scheduler No hay ningún rol asignado apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mint-task-scheduler.json
apigee-runtime No hay ningún rol asignado apigee-runtime@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-runtime.json
apigee-synchronizer roles/apigee.synchronizerManager apigee-synchronizer@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-synchronizer.json
apigee-watcher roles/apigee.runtimeAgent apigee-watcher@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-watcher.json

Crea una cuenta de servicio única para un entorno que no sea de producción

Para entornos que no sean productos, como un entorno experimental o de demostración, puedes crear una sola cuenta de servicio llamada “apigee-non-prod” que puedas usar para todos los componentes. Esta cuenta de servicio tendrá todas las funciones de IAM que se asignaron en el ejemplo anterior.

./tools/create-service-account --non-prod

Esto creará una cuenta de servicio única llamada apigee-non-prod y descargará el archivo de certificación en el directorio ./tools/service-accounts:

Cuenta de servicio Funciones de IAM Correo electrónico Archivo de certificación
apigee-non-prod roles/apigee.runtimeAgent
roles/apigee.synchronizerManager
roles/apigeeconnect.Agent
roles/logging.logWriter
roles/monitoring.metricWriter
roles/serviceusage.serviceUsageViewer
roles/storage.objectAdmin
apigee-non-prod@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-non-prod.json

Asigna un nombre personalizado a una sola cuenta de servicio de producción

De forma predeterminada, una sola cuenta de servicio de producción se denomina según el nombre de la cuenta de servicio compatible que selecciones. Por ejemplo, --prod apigee-cassandra crea una cuenta de servicio llamada apigee-cassandra. Para asignar un nombre diferente a una sola cuenta de servicio de producción y conservar el mismo rol de IAM, agrega la marca --name (o su alias -n):

./tools/create-service-account --prod apigee-cassandra --name my-cassandra-sa

Esto crea una cuenta de servicio de producción llamada my-cassandra-sa con el rol de IAM de apigee-cassandra (roles/storage.objectAdmin). El rol de IAM siempre proviene del nombre de la cuenta de servicio que pasas a --prod; --name solo cambia el nombre de la cuenta.

create-service-account syntax

La herramienta create-service-account usa la siguiente sintaxis:

create-service-account [flags] 

En la siguiente tabla, se enumeran las marcas create-service-account:

Marcar Valores Descripción
--dir
-d
nombre del directorio Especifica un directorio de salida para los archivos de claves de la cuenta de servicio. Si el directorio no existe, create-service-account lo creará. Si el directorio ya existe, create-service-account reemplazará los archivos del directorio que tengan el mismo nombre que los archivos de claves que crea.

Si no especificas un directorio de salida, create-service-account escribirá los archivos de cuenta de servicio en el directorio service-accounts/, dentro del directorio en el que reside create-service-account.

--prod Nombre de la cuenta de servicio
(opcional)
Crea cuentas de servicio para un entorno híbrido de producción. Este es el valor predeterminado: si ejecutas create-service-account sin ninguna marca de tipo de implementación, se comportará como si se hubiera pasado --prod.

En un entorno de producción, se recomienda que tengas una sola cuenta de servicio para cada servicio de Apigee. Cada cuenta de servicio creada tiene un solo rol de IAM asociado.

create-service-account --prod sin un nombre de cuenta de servicio crea todas las cuentas de servicio que usa Apigee Hybrid. Para crear solo una cuenta de servicio de producción, pasa su nombre, por ejemplo, --prod apigee-cassandra. Los nombres de las cuentas de servicio de producción compatibles se enumeran en la tabla de cuentas de servicio que se encuentra más arriba en esta página, en Crea cuentas de servicio para un entorno de producción.

--non-prod Nombre de la cuenta de servicio
(opcional)
Crea una única cuenta de servicio con todos los roles de IAM vinculados a ella. Esto es útil para entornos que no son de producción, como una instalación experimental o de demostración.

La cuenta de servicio se llama apigee-non-prod, a menos que pases un nombre, por ejemplo, --non-prod my-account.

--name
-n
Nombre de la cuenta de servicio Solo cambia el nombre de la cuenta de servicio creada, nunca los roles de IAM que recibe. Los roles se siguen determinando según el tipo de implementación y, para una sola cuenta de servicio de producción, según SA_NAME.

Las reglas de precedencia dependen del tipo de implementación:

  • --prod SA_NAME --name NAME crea una sola cuenta de servicio de producción llamada NAME con el rol de IAM de SA_NAME. Esto te permite asignar a una cuenta de servicio de producción un nombre distinto de SA_NAME.
  • --prod --name NAME sin SA_NAME es un error: sin un nombre de cuenta de servicio, --prod crea una cuenta de servicio separada para cada nombre de cuenta de servicio de producción admitido, por lo que un solo --name sería ambiguo. Usa --prod SA_NAME --name NAME para cambiar el nombre de una sola cuenta de servicio de producción.
  • --non-prod SA_NAME --name NAME: --name tiene prioridad. La herramienta registra un [WARNING] que indica que se proporcionaron un nombre posicional y --name, y denomina a la única cuenta de servicio que no es de producción NAME.
  • --non-prod --name NAME nombra la única cuenta de servicio que no es de producción NAME.
--skip-key-download none Crea las cuentas de servicio y asigna sus roles de IAM, pero no descarga los archivos de claves JSON. Usa esta marca cuando no necesites los archivos de claves, como con los métodos de autenticación de Workload Identity Federation for GKE.
--help
-h
none Muestra el texto de ayuda.
‑‑project‑id
-i
project id El ID del proyecto de Google Cloud en el que creas las cuentas de servicio.

Puedes proporcionar el ID del proyecto con la marca --project-id o exportando una variable de entorno PROJECT_ID. Si se configuran ambos, la marca --project-id tiene prioridad sobre la variable de entorno PROJECT_ID y create-service-account registra un [WARNING]. En todos los casos, la herramienta registra de qué fuente se leyó el ID del proyecto.

Si no especificas un ID del proyecto con la marca o la variable de entorno, create-service-account usará el ID del proyecto en tu configuración actual de gcloud.

Para obtener más información sobre las cuentas de servicio que usa Apigee Hybrid, consulta Acerca de las cuentas de servicio.

También puedes crear cuentas de servicio en la consola de Google Cloud . Consulta también Crea y administra cuentas de servicio.