Ajout de l'emprunt d'identité Trino à un cluster

Vous pouvez configurer une grappe Hadoop pour permettre à l'utilisateur ou au principal que Trino exécute d'emprunter l'identité des utilisateurs qui se connectent à Trino.

Lors de l'utilisation de l'authentification du magasin de métadonnées Kerberos avec emprunt d'identité, le principal spécifié par la propriété hive.metastore.client.principal doit être activé pour emprunter l'identité de l'utilisateur Trino courant. L'emprunt d'identité dans Hadoop est configuré dans le fichier core-site.xml.

  1. Pour utiliser l'emprunt d'identité, la grappe Hadoop doit être configurée pour permettre à l'utilisateur ou au principal que Trino exécute d'emprunter l'identité des utilisateurs qui se connectent à Trino. L'emprunt d'identité dans Hadoop est configuré dans le fichier core-site.xml :
    hadoop.proxyuser.trino.groups = *
    hadoop.proxyuser.trino.hosts = *
  2. Ajoutez les propriétés d'emprunt d'identité Trino à la propriété connectors.to.add :
    1. Accédez à Apache Ambari.
    2. Dans la barre d'outils latérale, sous Services, sélectionnez Trino.
    3. Sélectionnez Configs.
    4. Dans la section Connecteurs, ajoutez ce qui suit à connectors.to.add :
      {'hive':['connector.name=hive','hive.metastore.thrift.impersonation.enabled=true', 
      'hive.hdfs.impersonation.enabled=true', 
      'hive.metastore.uri=thrift://server-mn1.oraclevcn.com:9083',
      'hive.metastore.authentication.type=KERBEROS',
      'hive.metastore.service.principal=hive/_HOST@BDSCLOUDSERVICE.ORACLE.COM',
      'hive.metastore.client.principal=trino/_HOST@BDSCLOUDSERVICE.ORACLE.COM',
      'hive.metastore.client.keytab=/etc/security/keytabs/trino.service.keytab',
      'hive.hdfs.authentication.type=KERBEROS',
      'hive.hdfs.trino.principal=trino/_HOST@BDSCLOUDSERVICE.ORACLE.COM',
      'hive.hdfs.trino.keytab=/etc/security/keytabs/trino.service.keytab',
      'hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml',]}

      Le fichier de connecteur Hive est alimenté avec les configurations ci-dessus dans /etc/trino/conf/catalog/hive.properties.

      Note

      Un contrôle d'accès au système applique l'autorisation au niveau global, avant toute autorisation au niveau du connecteur. Avec ce contrôle d'accès par défaut, toutes les opérations sont autorisées, à l'exception de l'emprunt d'identité d'utilisateur et du déclenchement de l'arrêt Graceful. Pour plus d'informations, voir Contrôle de l'accès au système.
  3. Ajoutez allow-all à access-control.properties :
    # pwd
    /etc/trino/conf
     
    # cat access-control.properties
    access-control.name=allow-all
    Note

    Pour le service de mégadonnées antérieur à la version 3.023, vous devez créer /etc/trino/conf/access-control.properties.
  4. Vérifiez les journaux de démarrage du serveur Trino. Par exemple :
    2024-02-08T12:58:40.908Z        INFO    main    io.trino.security.AccessControlManager  -- Loading system access control etc/access-control.properties --
    2024-02-08T12:58:40.909Z        INFO    main    io.trino.security.AccessControlManager  -- Loaded system access control allow-all --
    [...]
    2024-02-08T12:58:41.201Z        INFO    main    io.trino.server.Server  ======== SERVER STARTED ========
  5. Confirmez que l'emprunt d'identité fonctionne correctement. Par exemple :
    [root@server-un1 conf]# /usr/lib/trino/bin/trino-cli --server https://server-un1.oraclevcn.com:7778 --krb5-principal trino/server-un1.oraclevcn.com@BDSCLOUDSERVICE.ORACLE.COM --krb5-keytab-path /etc/security/keytabs/trino.service.keytab --krb5-remote-service-name trino --truststore-path=/etc/security/serverKeys/truststore.jks --user <username> --session-user <username> --debug
    trino> show catalogs;
     Catalog
    ---------
     hive
     system
     tpch
    (3 rows)
    Query 20240208_125940_00002_vdzw6, FINISHED, 1 node
    https://server-un1.oraclevcn.com:7778/ui/query.html?20240208_125940_00002_vdzw6
    Splits: 19 total, 19 done (100.00%)
    CPU Time: 0.0s total,     0 rows/s,     0B/s, 33% active
    Per Node: 0.1 parallelism,     0 rows/s,     0B/s
    Parallelism: 0.1
    Peak Memory: 0B
    0.37 [0 rows, 0B] [0 rows/s, 0B/s]