Cette page explique comment accorder à un Google Cloud compte utilisateur ou à un compte de service l'accès à un service Dataproc Metastore qui utilise le protocole de point de terminaison gRPC.
À propos de l'attribution de rôles de métadonnées gRPC
Lorsque vous accordez à un compte l'accès à vos métadonnées, tenez compte des concepts suivants :
- Le niveau d'accès à fournir. Le niveau d'accès que vous accordez contrôle la quantité de métadonnées auxquelles un compte peut accéder. Par exemple, vous pouvez choisir d'accorder l'accès aux métadonnées stockées dans une base de données spécifique, une table spécifique ou à l'ensemble de votre projet.
Le compte principal qui nécessite l'accès. Vous utilisez des comptes principaux (identités) IAM pour exécuter vos jobs. Par exemple, vous pouvez exécuter des jobs de cluster Managed Service pour Apache Spark avec des comptes utilisateur ou des comptes de service (généralement le compte de service de VM Dataproc account).
Pour en savoir plus sur les comptes que vous pouvez utiliser avec Dataproc Metastore, consultez la section Comptes de service Dataproc.
En fonction du niveau de contrôle requis, accordez à votre compte principal l'un des rôles IAM prédéfinis suivants :
- Pour accorder un accès complet aux ressources de métadonnées. Rôle Propriétaire de métadonnées (
roles/metastore.metadataOwner) - Pour accorder un accès en lecture/écriture aux métadonnées : rôle Éditeur de métadonnées (
roles/metastore.metadataEditor) - Pour accorder un accès en lecture aux métadonnées : rôle Lecteur de métadonnées (
roles/metastore.metadataViewer)
Avant de commencer
- Activez Dataproc Metastore dans votre projet.
- Créez un service de métastore qui utilise le protocole gRPC.
Comprenez les exigences réseau spécifiques à votre projet.
- Exigences gRPC et cloud privé virtuel (VPC). Si vous utilisez gRPC, vous n'avez pas besoin de configurer un VPC partagé ni de définir de configurations réseau supplémentaires. Par défaut, les points de terminaison gRPC sont accessibles depuis n'importe quel VPC.
Il existe cependant une exception. Si votre projet utilise un périmètre de service VPC-SC, les points de terminaison gRPC ne sont accessibles que depuis un VPC appartenant à des projets situés dans le périmètre. Pour en savoir plus, consultez la page VPC Service Controls with Dataproc Metastore.
Rôles requis
Pour obtenir les autorisations nécessaires pour accorder à un compte principal l'accès aux métadonnées Dataproc Metastore, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet, en respectant le principe du moindre privilège :
-
Pour accorder un contrôle total des ressources Dataproc Metastore (
roles/metastore.editor) -
Pour accorder un contrôle total des ressources Dataproc Metastore, y compris la mise à jour des autorisations IAM (
roles/metastore.admin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour accorder à un compte principal l'accès aux métadonnées Dataproc Metastore. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour accorder à un compte principal l'accès aux métadonnées Dataproc Metastore :
-
resourcemanager.projects.get -
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles et autorisations Dataproc Metastore spécifiques, consultez la présentation d'IAM pour Dataproc Metastore.Accorder à un compte principal l'accès aux métadonnées
Vous pouvez accorder à un compte principal l'accès aux métadonnées au niveau du projet, du service, de la base de données ou de la table.
Accorder l'accès au niveau du projet
Pour accorder l'accès à toutes les métadonnées Dataproc Metastore au niveau du projet, vous devez attribuer un rôle de métadonnées à votre compte principal.
Gcloud CLI
Pour attribuer des rôles de métadonnées à tous les services Dataproc Metastore d'un projet spécifié, exécutez la commande gcloud projects
add-iam-policy-binding suivante :
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=PRINCIPAL \
--role=METASTORE_ROLERemplacez les éléments suivants :
PROJECT_ID: ID du projet auquel vous souhaitez accorder l'accès aux métadonnées. Google CloudPRINCIPAL: type et ID de l'adresse e-mail du compte principal.- Pour les comptes utilisateur : user:EMAIL_ID
- Pour les comptes de service : serviceAccount:EMAIL_ID
- Pour les groupes Google : group:EMAIL_ID
- Pour les autres types de comptes principaux : Identifiants principaux
METASTORE_ROLE\`: One of the following roles, depending on the scope of access that you want to grant the principal:roles/metastore.metadataViewer,roles/metastore.metadataEditor, orroles/metastore.metadataOwner`.
Accorder l'accès au niveau du service
Pour accorder l'accès à toutes les métadonnées Dataproc Metastore au niveau du service, vous devez attribuer un rôle de métadonnées à votre compte principal.
Gcloud CLI
Pour attribuer des rôles de métadonnées au niveau d'un seul
service de métastore Dataproc Metastore, exécutez la
gcloud metastore services
add-iam-policy-binding
commande suivante :
gcloud metastore services add-iam-policy-binding SERVICE_ID \ --location=LOCATION \ --member=PRINCIPAL \ --role=METASTORE_ROLE
Remplacez les éléments suivants :
SERVICE_ID: ID ou identifiant complet de votre service Dataproc Metastore.LOCATION: région de Dataproc Metastore à laquelle vous accordez l'accès.PRINCIPAL: type et ID de l'adresse e-mail du compte principal :- Pour les comptes utilisateur : user:EMAIL_ID
- Pour les comptes de service : serviceAccount:EMAIL_ID
- Pour les groupes Google : group:EMAIL_ID
- Pour les autres types de comptes principaux : Identifiants principaux
METASTORE_ROLE: l'un des rôles suivants, en fonction du niveau d'accès que vous souhaitez accorder au compte principal :roles/metastore.metadataViewer,roles/metastore.metadataEditorouroles/metastore.metadataOwner.
Accorder l'accès au niveau de la base de données
Pour accorder l'accès à toutes les métadonnées Dataproc Metastore d'une base de données spécifique, vous devez ajouter un rôle de métadonnées à votre compte principal.
Gcloud CLI
Pour attribuer des rôles de métadonnées au niveau d'une base de données spécifique, exécutez la
commande gcloud metastore services databases
add-iam-policy-binding
suivante :
gcloud metastore services databases add-iam-policy-binding DATABASE_ID \ --project=PROJECT \ --location=LOCATION \ --service=SERVICE_ID \ --member=PRINCIPAL \ --role=METASTORE_ROLE
Remplacez les éléments suivants :
DATABASE_ID: ID de la base de données à laquelle vous accordez l'accès aux métadonnées. Vous obtenez cet ID à partir du schéma de votre base de données.PROJECT: ID du projet contenant le service Dataproc Metastore auquel vous accordez l'accès aux métadonnées. Google CloudLOCATION: région du service Dataproc Metastore auquel vous accordez l'accès.SERVICE_ID: ID ou identifiant complet de votre service Dataproc Metastore.PRINCIPAL: type et ID de l'adresse e-mail du compte principal :- Pour les comptes utilisateur : user:EMAIL_ID
- Pour les comptes de service : serviceAccount:EMAIL_ID
- Pour les groupes Google : group:EMAIL_ID
- Pour les autres types de comptes principaux : Identifiants principaux
METASTORE_ROLE: l'un des rôles suivants, en fonction du niveau d'accès que vous souhaitez accorder au compte principal :roles/metastore.metadataViewer,roles/metastore.metadataEditorouroles/metastore.metadataOwner.
Accorder l'accès au niveau de la table
Pour accorder l'accès à toutes les métadonnées Dataproc Metastore d'une table spécifique, vous devez attribuer un rôle de métadonnées à votre compte principal.
Gcloud CLI
Pour attribuer des rôles de métadonnées au niveau d'une table, exécutez la commande gcloud metastore services databases tables add-iam-policy-binding suivante :
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
Remplacez les éléments suivants :
TABLE_ID: ID de la table à laquelle vous accordez l'accès. Vous obtenez cet ID à partir du schéma de votre base de données.DATABASE_ID: ID de la base de données contenant la table à laquelle vous accordez l'accès aux métadonnées. Vous obtenez cet ID à partir du schéma de votre base de données.PROJECT: ID du projet contenant le service Dataproc Metastore auquel vous accordez l'accès aux métadonnées. Google CloudLOCATION: région du service Dataproc Metastore auquel vous accordez l'accès aux métadonnées.SERVICE_ID: ID ou identifiant complet de votre service Dataproc Metastore.PRINCIPAL: type et ID de l'adresse e-mail du compte principal :- Pour les comptes utilisateur : user:EMAIL_ID
- Pour les comptes de service : serviceAccount:EMAIL_ID
- Pour les groupes Google : group:EMAIL_ID
METASTORE_ROLE: l'un des rôles suivants, en fonction du niveau d'accès que vous souhaitez accorder au compte principal :roles/metastore.metadataViewer,roles/metastore.metadataEditorouroles/metastore.metadataOwner.
Après avoir accordé l'accès à vos métadonnées
Une fois que vous avez attribué les rôles requis à vos comptes de service, vous pouvez connecter votre Dataproc Metastore à un cluster Managed Service pour Apache Spark. Votre cluster utilise ensuite le service Dataproc Metastore comme métastore Hive.
Étape suivante
- Associer un cluster Managed Service pour Apache Spark
- Mettre à jour et supprimer Dataproc Metastore
- Importer des métadonnées dans Dataproc Metastore