En esta página se describen las cuentas de servicio y los permisos de acceso de las VM, y cómo se usan con Dataproc.
¿Qué son las cuentas de servicio?
Una cuenta de servicio es una cuenta especial que pueden usar los servicios y aplicaciones que se ejecutan en una instancia de máquina virtual (VM) de Compute Engine para interactuar con otras API de Google Cloud. Las aplicaciones pueden usar credenciales de cuentas de servicio con el fin de otorgar autorización para trabajar con un conjunto de API y realizar acciones en la VM dentro de los permisos otorgados a la cuenta de servicio.
Cuentas de servicio de Dataproc
Las siguientes cuentas de servicio tienen los permisos necesarios para realizar acciones de Dataproc en el proyecto en el que se encuentra el clúster.
Cuenta de servicio de la VM de Dataproc: Las VMs en un clúster de Dataproc usan esta cuenta de servicio para Dataproc las operaciones del plano de datos. La cuenta de servicio predeterminada de Compute Engine, Se usa
[project-number]-compute@developer.gserviceaccount.com
que la cuenta de servicio de la VM de Dataproc, a menos que especifiques Cuenta de servicio de VM cuando creas un clúster. De forma predeterminada, el clúster de Compute Engine a la cuenta de servicio predeterminada se le otorga el rol de Editor del proyecto que incluye permisos para crear y borrar recursos en la mayoría de Google Cloud servicios, incluidos los permisos necesarios para realizar datos de Dataproc las operaciones de plano de control.Cuentas de servicio personalizadas: Si especificas una cuenta de servicio personalizada cuando creas un clúster, debes otorgarle los permisos necesarios para las operaciones del plano de datos de Dataproc. Puedes hacerlo asignando el el rol de trabajador de Dataproc en la cuenta de servicio ya que este rol incluye los permisos mínimos necesarios para los datos de Dataproc las operaciones de plano de control. Se necesitan roles adicionales para otorgar permisos para otras operaciones, como leer y escribir datos en BigQuery.
Cuenta de servicio del agente de servicio de Dataproc: Dataproc crea esta cuenta de servicio con la función Agente de servicio de Dataproc en el proyecto de Google Cloud del usuario de Dataproc. Este servicio no se puede reemplazar por una cuenta de servicio de VM personalizada cuando de crear un clúster. Esta cuenta de agente de servicio se usa para realizar operaciones del plano de control de Dataproc, como la creación, la actualización y la eliminación de las VM del clúster (consulta Agente de servicio de Dataproc [identidad del plano de control]).
De forma predeterminada, Dataproc usa
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
como la cuenta de agente de servicio. Si esa cuenta de servicio no tiene permiso, Dataproc usa Cuenta de agente de servicio de las APIs de Google,[project-number]@cloudservices.gserviceaccount.com
, para el plano de control las operaciones.
Redes de VPC compartidas: Si el clúster usa una red de VPC compartida, un administrador de VPC compartida debe otorgar a ambas cuentas de servicio anteriores la función Usuario de red para el proyecto host de VPC compartida. Para obtener más información, consulte:
- Crear un clúster que use una red de VPC en otra proyecto
- Documentación de VPC compartida: cómo configurar cuentas de servicio como Administradores de proyectos de servicio
Permisos de acceso a la VM de Dataproc
Los permisos de acceso a la VM y los roles de IAM funcionan en conjunto para limitar el acceso a las VMs a Google Cloud
APIs Por ejemplo, si a las VMs del clúster se les otorga solo el
https://www.googleapis.com/auth/storage-full
permiso, aplicaciones en ejecución
en las VMs del clúster pueden llamar a las APIs de Cloud Storage, pero no pueden
Hacer solicitudes a BigQuery, incluso si se ejecutan como una cuenta de servicio de VM
a la que se le otorgó un rol
de BigQuery con permisos amplios.
Una práctica recomendada
es otorgar el amplio permiso cloud-platform
(https://www.googleapis.com/auth/cloud-platform
)
a las VMs y limitar el acceso a VM otorgando
Roles de IAM en la cuenta de servicio de VM.
Permisos de VM predeterminados de Dataproc. Si los permisos no están que se especifica cuando se crea un clúster (consulta gcloud dataproc cluster create --scopes), Las VMs de Dataproc tienen el siguiente conjunto de permisos predeterminados:
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Si especificas permisos cuando creas un clúster, las VM de clúster tendrán los permisos que especifiques y el siguiente conjunto de permisos mínimos necesarios (incluso si no los especificas):
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+
).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
Crea un clúster con una cuenta de servicio de VM personalizada
Cuando creas un clúster, puedes especificar un Cuenta de servicio de VM que tu clúster usará para las operaciones del plano de datos de Dataproc de la cuenta de servicio de VM predeterminada (no puedes cambiar la cuenta de servicio de la VM después de la VM de que se cree la función). Usa una cuenta de servicio de VM con funciones de IAM asignadas te permite proporcionarle al clúster acceso detallado a los recursos del proyecto.
Pasos preliminares
Crea la cuenta de servicio de VM personalizada en el proyecto en el que se creará el clúster.
Otorga a la cuenta de servicio de VM personalizada Trabajador de Dataproc rol en el proyecto y cualquier rol adicional necesario para tus trabajos, como el Lector y escritor de BigQuery (consulta Permisos de Dataproc y roles de IAM).
Ejemplo de gcloud CLI:
- El siguiente comando de muestra otorga a la cuenta de servicio de VM personalizada En el proyecto del clúster, el rol de Trabajador de Dataproc a nivel de proyecto:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
- Considera un rol personalizado: En lugar de otorgar servicios
del rol predefinido
Worker
de Dataproc, puedes otorgar a la cuenta de servicio un rol personalizado que contiene permisos de rol de trabajador pero limita elstorage.objects.*
permisos.- El rol personalizado debe otorgar, como mínimo, la cuenta de servicio de la VM
storage.objects.create
,storage.objects.get
ystorage.objects.update
en los objetos de la Etapa de pruebas de Dataproc y buckets temporales y en los buckets adicionales que necesiten los trabajos que se ejecutarán en la clúster.
- El rol personalizado debe otorgar, como mínimo, la cuenta de servicio de la VM
Crea el clúster
- Crea el clúster en tu proyecto.
Comando de gcloud
Usa el comando gcloud dataproc clusters create para crear un clúster con la cuenta de servicio de VM personalizada.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --scopes=SCOPE
Reemplaza lo siguiente:
- CLUSTER_NAME: El nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra minúscula y puede contener hasta 51 minúsculas. letras, números y guiones. No puede terminar con un guion. Es el nombre de una clúster borrado se puede volver a usar.
- REGION: Es la región. dónde se ubicará el clúster.
- SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio.
- PROJECT_ID: Es el ID del proyecto de Google Cloud del proyecto que contiene tu Cuenta de servicio de VM. Este será el ID de el proyecto en el que se creará tu clúster o el ID de otro proyecto, si estás crear un clúster con una cuenta de servicio de VM personalizada en otro clúster.
- SCOPE: Permisos de acceso para instancias de VM del clúster (por ejemplo,
https://www.googleapis.com/auth/cloud-platform
).
API de REST
Cuando completes el
GceClusterConfig
como parte del
clusters.create
solicitud a la API, configura los siguientes campos:
serviceAccount
: Se ubicará la cuenta de servicio. en el proyecto en el que se creará tu clúster, a menos que uses un Cuenta de servicio de VM de un proyecto diferente.serviceAccountScopes
: Especifica la permisos de acceso para instancias de VM del clúster (por ejemplo,https://www.googleapis.com/auth/cloud-platform
).
Console
Configura una cuenta de servicio de VM de Dataproc
en la consola de Google Cloud no es compatible. Puedes establecer el cloud-platform
permiso de acceso en el clúster
VMs cuando creas el clúster haciendo clic en
"Habilita el alcance cloud-platform para este clúster"
en la sección Acceso al proyecto de Administrar la seguridad
en el panel de Dataproc
Crea un clúster
en la consola de Google Cloud.
Crea un clúster con una cuenta de servicio de VM personalizada de otro proyecto
Cuando creas un clúster, puedes especificar un Cuenta de servicio de VM que tu clúster usará para las operaciones del plano de datos de Dataproc de usar la cuenta de servicio de VM predeterminada (no puedes especificar una cuenta de servicio de VM personalizada después de que el clúster de que se cree la función). Usa una cuenta de servicio de VM personalizada con roles de IAM asignados te permite proporcionarle al clúster acceso detallado a los recursos del proyecto.
Pasos preliminares
En el proyecto de la cuenta de servicio (el proyecto en el que se encuentra la cuenta de servicio de la VM personalizada), haz lo siguiente:
Habilita cuentas de servicio para que se vinculen a través de proyectos.
Enable the Dataproc API.
Otórgale a tu cuenta de correo electrónico (el usuario que crea el clúster) el Rol Usuario de cuenta de servicio en el proyecto de la cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de la cuenta de servicio.
Para obtener más información, consulta lo siguiente: Administra el acceso a proyectos, carpetas y organizaciones otorgar roles a nivel de proyecto y Administra el acceso a las cuentas de servicio otorgar roles a nivel de cuenta de servicio.
Ejemplos de CLI de gcloud:
- El siguiente comando de muestra le otorga al usuario el rol Usuario de cuenta de servicio a nivel de proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Notas:
USER_EMAIL
: Proporciona la dirección de correo electrónico de la cuenta de usuario en el formato:user:user-name@example.com
- El siguiente comando de muestra le otorga al usuario el rol Usuario de cuenta de servicio a nivel de cuenta de servicio:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=USER_EMAIL \ --role="roles/iam.serviceAccountUser"
Notas:
USER_EMAIL
: Proporciona la dirección de correo electrónico de la cuenta de usuario en el formato:user:user-name@example.com
Otorga a la cuenta de servicio de VM personalizada Trabajador de Dataproc en el proyecto del clúster.
Ejemplo de gcloud CLI:
gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --role="roles/dataproc.worker"
Otorga la cuenta de servicio del agente de servicios de Dataproc. En el proyecto de clúster, el usuario de cuenta de servicio y el Creador de tokens de cuenta de servicio roles en el proyecto de la cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de la cuenta de servicio. Al hacer esto, permites que la cuenta de servicio del agente de servicio de Dataproc en el proyecto del clúster crear tokens para la cuenta de servicio personalizada de la VM de Dataproc en el proyecto de la cuenta de servicio.
Para obtener más información, consulta lo siguiente: Administra el acceso a proyectos, carpetas y organizaciones otorgar roles a nivel de proyecto y Administra el acceso a las cuentas de servicio otorgar roles a nivel de cuenta de servicio.
Ejemplos de CLI de gcloud:
- Los siguientes comandos de muestra otorgan al agente de servicio de Dataproc de la cuenta de servicio en el proyecto de clúster, el usuario y el token de la cuenta de servicio Roles de creador a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- Los siguientes comandos de muestra otorgan al agente de servicio de Dataproc en el proyecto de clúster, el usuario y el servicio Roles del creador de tokens de cuenta a nivel de la cuenta de servicio de VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountUser"
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Otorga el Cuenta de servicio del agente de servicio de las APIs de Google en el proyecto del clúster el Creador de tokens de cuenta de servicio rol en el proyecto de la cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de la cuenta de servicio. De esta manera, otorgas a la cuenta de servicio del agente de servicio de las APIs de Google en el clúster proyectar la capacidad de crear tokens para el servicio personalizado de VM de Dataproc en el proyecto de la cuenta de servicio.
Para obtener más información, consulta lo siguiente: Administra el acceso a proyectos, carpetas y organizaciones otorgar roles a nivel de proyecto y Administra el acceso a las cuentas de servicio otorgar roles a nivel de cuenta de servicio.
Ejemplos de CLI de gcloud:
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de las APIs de Google En el proyecto de clúster, tienes el rol de creador de tokens de cuentas de servicio a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de las APIs de Google En el proyecto de clúster, tienes el rol Creador de tokens de cuenta de servicio a nivel de cuenta de servicio de VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:CLUSTER_PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Otorga el Cuenta de servicio del agente de servicio de Compute Engine en el proyecto del clúster el Creador de tokens de cuenta de servicio rol en el proyecto de la cuenta de servicio o, para un control más detallado, la cuenta de servicio de VM personalizada en el proyecto de la cuenta de servicio. De esta manera, otorgas a la cuenta de servicio del agente de servicio del agente de Compute en el clúster proyectar la capacidad de crear tokens para el servicio personalizado de VM de Dataproc en el proyecto de la cuenta de servicio.
Para obtener más información, consulta lo siguiente: Administra el acceso a proyectos, carpetas y organizaciones otorgar roles a nivel de proyecto y Administra el acceso a las cuentas de servicio otorgar roles a nivel de cuenta de servicio.
Ejemplos de CLI de gcloud:
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de Compute Engine En el proyecto de clúster, tienes el rol de creador de tokens de cuentas de servicio a nivel del proyecto:
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
- El siguiente comando de muestra otorga a la cuenta de servicio del agente de servicio de Compute Engine En el proyecto de clúster, tienes el rol Creador de tokens de cuenta de servicio a nivel de cuenta de servicio de VM:
gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role="roles/iam.serviceAccountTokenCreator"
Crea el clúster
¿Qué sigue?
- Cuentas de servicio
- Permisos de Dataproc y funciones de IAM
- Principales de Dataproc y sus funciones
- Multiusuario de seguridad basado en la cuenta de servicio de Dataproc
- Autenticación del clúster personal de Dataproc
- IAM detallada de Dataproc