Acceder a endpoints gRPC de Dataproc Metastore

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

Información sobre la concesión de roles de metadatos de gRPC

Cuando concedas acceso a tu cuenta a los metadatos, ten en cuenta los siguientes conceptos:

  • El nivel de acceso que se va a proporcionar. El nivel de acceso que concedas controla la cantidad de metadatos a los que puede acceder una cuenta. Por ejemplo, puedes proporcionar acceso a los metadatos almacenados en una base de datos o una tabla concretas, o bien a todo tu proyecto.
  • El principal que requiere acceso. Usas principales de gestión de identidades y accesos (identidades) para ejecutar tus trabajos. Por ejemplo, puedes ejecutar tareas de clúster de Dataproc con cuentas de usuario o cuentas de servicio (normalmente, 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.

En función del ámbito de control necesario, concede a tu principal uno de los siguientes roles predefinidos de gestión de identidades y accesos:

  • Para conceder acceso completo a los recursos de metadatos. Rol Propietario de metadatos (roles/metastore.metadataOwner)
  • Para conceder acceso de lectura y escritura a los metadatos: rol Editor de metadatos roles/metastore.metadataEditor)
  • Para conceder acceso de lectura a los metadatos: rol Lector de metadatos (roles/metastore.metadataViewer)

Antes de empezar

  • Habilita Dataproc Metastore en tu proyecto.
  • Crea un servicio de metastore que use el protocolo gRPC.
  • Consulta los requisitos de red específicos de tu proyecto.

    • Requisitos de gRPC y de la nube privada virtual (VPC). Si usas gRPC, no tienes que configurar una VPC compartida ni definir ninguna configuración de red adicional. De forma predeterminada, se puede acceder a los endpoints 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 endpoints de gRPC desde una VPC que pertenezca a proyectos del perímetro. Para obtener más información, consulta Controles de Servicio de VPC con Dataproc Metastore.

Roles obligatorios

Para obtener los permisos que necesitas para conceder a una entidad acceso a los metadatos de Dataproc Metastore, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto, siguiendo el principio de privilegio mínimo:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para conceder a una entidad principal acceso a los metadatos de Dataproc Metastore. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para conceder acceso a los metadatos de Dataproc Metastore a una entidad, se necesitan los siguientes permisos:

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

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener más información sobre roles y permisos específicos de Dataproc Metastore, consulta la información general sobre la gestión de identidades y accesos de Dataproc Metastore.

Conceder acceso a los metadatos a una cuenta principal

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

Conceder acceso a nivel de proyecto

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

CLI de gcloud

Para asignar roles de metadatos a todos los servicios de Dataproc Metastore de un proyecto específico, ejecuta el siguiente comando gcloud projects add-iam-policy-binding:

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

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud al que quieres conceder acceso a los metadatos.
  • PRINCIPAL: el tipo y el ID de correo (dirección de correo electrónico) de la entidad de seguridad.
    • En el caso de las cuentas de usuario: user:EMAIL_ID
    • En el caso de las cuentas de servicio: serviceAccount:EMAIL_ID
    • En Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: identificadores de principales
  • METASTORE_ROLE: uno de los siguientes roles, en función del ámbito de acceso que quieras conceder a la entidad de seguridad: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Conceder acceso a nivel de servicio

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

CLI de gcloud

Para asignar roles de metadatos con la granularidad de un solo servicio de metastore 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

Haz los cambios siguientes:

  • SERVICE_ID: el ID o el identificador completo de tu servicio Dataproc Metastore.
  • LOCATION: la región de Dataproc Metastore a la que vas a conceder acceso.
  • PRINCIPAL: el tipo y el ID de correo (dirección de correo) de la cuenta principal:
    • En el caso de las cuentas de usuario: user:EMAIL_ID
    • En el caso de las cuentas de servicio: serviceAccount:EMAIL_ID
    • En Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: identificadores de principales
  • METASTORE_ROLE: uno de los siguientes roles, en función del ámbito de acceso que quieras conceder a la entidad de seguridad: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Conceder acceso a nivel de base de datos

Para conceder acceso a todos los metadatos de Dataproc Metastore de una base de datos específica, debes añadir un rol de metadatos a tu cuenta principal.

CLI de gcloud

Para conceder roles de metadatos con la granularidad 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

Haz los cambios siguientes:

  • DATABASE_ID: ID de la base de datos a la que quieres conceder acceso a los metadatos. Este ID se obtiene del esquema de tu base de datos.
  • PROJECT: el ID del proyecto Google Cloud que contiene el servicio Dataproc Metastore al que vas a conceder acceso a los metadatos.
  • LOCATION: la región del servicio Dataproc Metastore al que vas a conceder acceso.
  • SERVICE_ID: el ID o el identificador completo de tu servicio Dataproc Metastore.
  • PRINCIPAL: el tipo y el ID de correo (dirección de correo) de la cuenta principal:
    • En el caso de las cuentas de usuario: user:EMAIL_ID
    • En el caso de las cuentas de servicio: serviceAccount:EMAIL_ID
    • En Grupos de Google: group:EMAIL_ID
    • Para otros tipos de principales: identificadores de principales
  • METASTORE_ROLE: uno de los siguientes roles, en función del ámbito de acceso que quieras conceder a la entidad de seguridad: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Conceder acceso a nivel de tabla

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

CLI de gcloud

Para conceder roles de metadatos a nivel de 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

Haz los cambios siguientes:

  • TABLE_ID: ID de la tabla a la que vas a conceder acceso. Este ID se obtiene del esquema de tu base de datos.
  • DATABASE_ID: ID de la base de datos que contiene la tabla a la que está concediendo acceso a los metadatos. Este ID se obtiene del esquema de tu base de datos.
  • PROJECT: ID del proyecto Google Cloud que contiene el servicio Dataproc Metastore al que vas a conceder acceso a los metadatos.
  • LOCATION: región del servicio Dataproc Metastore al que vas a conceder acceso a los metadatos.
  • SERVICE_ID: el ID o el identificador completo de tu servicio Dataproc Metastore.
  • PRINCIPAL: el tipo y el ID de correo (dirección de correo) de la cuenta principal:
    • En el caso de las cuentas de usuario: user:EMAIL_ID
    • En el caso de las cuentas de servicio: serviceAccount:EMAIL_ID
    • En Grupos de Google: group:EMAIL_ID
  • METASTORE_ROLE: uno de los siguientes roles, en función del ámbito de acceso que quieras conceder al principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor o roles/metastore.metadataOwner.

Después de conceder acceso a tus metadatos

Una vez que hayas asignado los roles necesarios a tus cuentas de servicio, podrás conectar tu Dataproc Metastore a un clúster de Dataproc. A continuación, el clúster usa el servicio Dataproc Metastore como almacén de metadatos de Hive.

Siguientes pasos