Accede a los extremos de gRPC para Dataproc Metastore

En esta página, se explica cómo otorgar a una cuenta de usuario de Google Cloud o a una cuenta de servicio acceso a un servicio de Dataproc Metastore que use el protocolo de extremo de gRPC.

Información sobre la asignación de funciones de metadatos de gRPC

Cuando otorgues acceso a tus metadatos a una cuenta, ten en cuenta los siguientes conceptos:

  • El nivel de acceso que se proporcionará. El nivel de acceso que otorgas controla la cantidad de metadatos a los que puede acceder una cuenta. Por ejemplo, puedes optar por proporcionar acceso a los metadatos almacenados en una base de datos o una tabla determinadas, o puedes proporcionar acceso a todo el proyecto.
  • La principal que requiere acceso. Usas principales de IAM (identidades) para ejecutar tus trabajos. Por ejemplo, puedes ejecutar trabajos de clúster de Dataproc con cuentas de usuario o de servicio (por lo general, la cuenta de servicio de VM de Dataproc).

    Para obtener más información sobre las cuentas que puedes usar con Dataproc Metastore, consulta Cuentas de servicio de Dataproc.

Según el permiso de control requerido, otorga a tu principal uno de los siguientes roles de IAM predefinidos:

  • Otorgar acceso completo a los recursos de metadatos. Función de propietario de los metadatos (roles/metastore.metadataOwner)
  • Para otorgar acceso de lectura y escritura a los metadatos, usa la función Editor de metadatos roles/metastore.metadataEditor.
  • Para otorgar acceso de lectura a los metadatos, usa la función de visualizador de metadatos (roles/metastore.metadataViewer).

Antes de comenzar

  • Habilita Dataproc Metastore en tu proyecto.
  • Crea un servicio de almacén de metadatos que use el protocolo gRPC.
  • Comprende los requisitos de red específicos de tu proyecto.

    • Requisitos de gRPC y nube privada virtual (VPC). Si usas gRPC, no tienes que configurar una VPC compartida ni establecer ninguna configuración de red adicional. De forma predeterminada, se puede acceder a los extremos de gRPC desde cualquier VPC.

    Sin embargo, hay una excepción. Si tu proyecto usa un perímetro de servicio de VPC-SC, solo se puede acceder a los extremos de gRPC desde una VPC que pertenezca a proyectos en el perímetro. Para obtener más información, consulta los Controles del servicio de VPC con Dataproc Metastore.

Funciones requeridas

A fin de obtener los permisos que necesitas para otorgar a una principal acceso a los metadatos de Dataproc Metastore, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto, sin dejar de seguir el principio de privilegio mínimo:

Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.

Estos roles predefinidos contienen los permisos necesarios para otorgar a una principal acceso a los metadatos de Dataproc Metastore. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para otorgar a una principal acceso a los metadatos de Dataproc Metastore:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Es posible que también puedas obtener estos permisos con funciones personalizadas o con otras funciones predefinidas.

Para obtener más información sobre las funciones y los permisos específicos de Dataproc Metastore, consulta Descripción general de IAM de Dataproc Metastore.

Otorga a una cuenta principal acceso a los metadatos

Puedes otorgar a una cuenta principal acceso a los metadatos a nivel de proyecto, de servicio, de base de datos o de tabla.

Otorga acceso a nivel de proyecto

Para otorgar acceso a todos los metadatos de Dataproc Metastore a nivel de proyecto, debes otorgar un rol de metadatos a tu cuenta principal.

CLI de gcloud

Para otorgar funciones de metadatos a todos los servicios de Dataproc Metastore en un proyecto especificado, ejecuta el siguiente comando de gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=METASTORE_ROLE

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud al que deseas otorgar acceso a los metadatos.
  • PRINCIPAL: El tipo y el ID de correo electrónico (dirección de correo electrónico) de la principal.
    • Para cuentas de usuario: user:EMAIL_ID
    • Para cuentas de servicio: serviceAccount:EMAIL_ID
    • Para Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: Conceptos relacionados con la identidad
  • METASTORE_ROLE: Es uno de los siguientes roles, según el permiso de acceso que quieras otorgarle a la principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Cómo otorgar acceso a nivel de servicio

Para otorgar acceso a todos los metadatos de Dataproc Metastore a nivel de servicio, debes otorgar un rol de metadatos a tu cuenta principal.

CLI de gcloud

Para otorgar funciones de metadatos con el nivel de detalle de un solo servicio de almacén de metadatos de Dataproc Metastore, ejecuta el siguiente comando gcloud metastore services add-iam-policy-binding:

gcloud metastore services add-iam-policy-binding SERVICE_ID \
  --location=LOCATION \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Reemplaza lo siguiente:

  • SERVICE_ID: El ID o el identificador completamente calificado de tu servicio de Dataproc Metastore.
  • LOCATION: La región de Dataproc Metastore a la que otorgas acceso.
  • PRINCIPAL: El tipo y el ID de correo electrónico (dirección de correo electrónico) de la cuenta principal:
    • Para cuentas de usuario: user:EMAIL_ID
    • Para cuentas de servicio: serviceAccount:EMAIL_ID
    • Para Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: Conceptos relacionados con la identidad
  • METASTORE_ROLE: Es uno de los siguientes roles, según el permiso de acceso que desees otorgarle a la principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Otorga acceso a nivel de la base de datos

Para otorgar acceso a todos los metadatos de Dataproc Metastore en una base de datos específica, debes agregar un rol de metadatos a tu cuenta principal.

CLI de gcloud

Para otorgar funciones de metadatos con el nivel de detalle de una base de datos específica, ejecuta el siguiente comando gcloud metastore services databases add-iam-policy-binding:

gcloud metastore services databases add-iam-policy-binding DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Reemplaza lo siguiente:

  • DATABASE_ID: El ID de la base de datos a la que le otorgas acceso a los metadatos. Este ID se obtiene del esquema de la base de datos.
  • PROJECT: El ID del proyecto de Google Cloud que contiene el servicio de Dataproc Metastore al que otorgas acceso a los metadatos.
  • LOCATION: La región del servicio de Dataproc Metastore a la que le otorgas acceso.
  • SERVICE_ID: El ID o el identificador completamente calificado de tu servicio de Dataproc Metastore.
  • PRINCIPAL: El tipo y el ID de correo electrónico (dirección de correo electrónico) de la cuenta principal:
    • Para cuentas de usuario: user:EMAIL_ID
    • Para cuentas de servicio: serviceAccount:EMAIL_ID
    • Para Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: Conceptos relacionados con la identidad
  • METASTORE_ROLE: Es uno de los siguientes roles, según el permiso de acceso que quieras otorgarle a la principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Otorga acceso a nivel de la tabla

Para otorgar acceso a todos los metadatos de Dataproc Metastore en una tabla específica, debes otorgar un rol de metadatos a tu cuenta principal.

CLI de gcloud

Para otorgar funciones de metadatos con el nivel de detalle de una tabla, ejecuta el siguiente comando gcloud metastore services databases tables add-iam-policy-binding:

gcloud metastore services databases tables add-iam-policy-binding TABLE_ID \
  --database=DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Reemplaza lo siguiente:

  • TABLE_ID: El ID de la tabla a la que otorgas acceso. Este ID se obtiene del esquema de la base de datos.
  • DATABASE_ID: El ID de la base de datos que contiene la tabla a la que le otorgas acceso a los metadatos. Este ID se obtiene del esquema de la base de datos.
  • PROJECT: El ID del proyecto de Google Cloud que contiene el servicio de Dataproc Metastore al que le otorgas acceso a los metadatos.
  • LOCATION: La región del servicio de Dataproc Metastore a la que le otorgas acceso a los metadatos.
  • SERVICE_ID: El ID o el identificador completamente calificado de tu servicio de Dataproc Metastore.
  • PRINCIPAL: El tipo y el ID de correo electrónico (dirección de correo electrónico) de la cuenta principal:
    • Para cuentas de usuario: user:EMAIL_ID
    • Para cuentas de servicio: serviceAccount:EMAIL_ID
    • Para Grupos de Google: group:EMAIL_ID
  • METASTORE_ROLE: Es uno de los siguientes roles, según el permiso de acceso que quieras otorgarle a la principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Después de otorgar acceso a los metadatos

Después de otorgar los roles necesarios a tus cuentas de servicio, puedes conectar tu Dataproc Metastore a un clúster de Dataproc. Luego, el clúster usa el servicio de Dataproc Metastore como su almacén de metadatos de Hive.

¿Qué sigue?