Activer la distribution d’identifiants de connexion pour un catalogue externe

Avec la distribution d’identifiants, vous pouvez utiliser Snowflake Open Catalog pour configurer et gérer le contrôle d’accès à un catalogue et à son stockage Cloud sous-jacent en un seul endroit. Pour les catalogues internes, la distribution d’identifiants est activée par défaut. Pour les catalogues externes, vous pouvez activer les identifiants en utilisant l’une des options suivantes :

Important

Avant d’activer la distribution d’identifiants pour un catalogue externe, assurez-vous que les emplacements des répertoires de stockage de vos tables de catalogue ne se chevauchent pas. Dans le cas contraire, un utilisateur pourrait avoir accès à des tables auxquelles il ne devrait pas avoir l’autorisation d’accéder. Pour plus d’informations, voir Distribution d’identifiants pour les catalogues externes.

Utilisation d’Open Catalog

  1. Connectez-vous à Open Catalog.

  2. Dans le menu de gauche, sélectionnez Catalogues.

  3. Dans la liste des catalogues, sélectionnez le catalogue pour lequel vous souhaitez activer la distribution d’identifiants.

  4. Dans l’onglet Détails du catalogue, sous les détails du stockage, sous Distribution d’identifiants, sélectionnez l’icône Modifier.

    Capture d'écran montrant l'icône de modification permettant d'activer ou de désactiver le système de distribution d’identifiants

  5. Dans la fenêtre contextuelle qui s’affiche, sélectionnez Activer.

CLI d’Apache Polaris™ (en cours d’incubation)

Cette section décrit comment activer la distribution d’identifiants pour un catalogue externe à l’aide de la CLIde Polaris. La CLI d’Apache Polaris (en cours d’incubation) est une interface de ligne de commande permettant aux clients de mettre à jour les paramètres de manière programmatique. Pour plus d’informations, voir CLI d’Apache Polaris (en cours d’incubation).

Pour activer la distribution d’identifiants pour un catalogue externe, utilisez une connexion de service avec la CLI de Polaris.

Étape 1 : Préparer une connexion de service avec les privilèges nécessaires

  1. Créer un rôle principal à attribuer à la nouvelle connexion de service. Sautez cette étape si vous avez déjà un rôle de principal à attribuer à la connexion de service.

  2. Configurez une connexion de service et enregistrez l’ID client et le secret du client pour les utiliser ultérieurement avec la CLI de Polaris. Passez cette étape si vous disposez déjà d’une connexion de service pour utiliser la CLI de Polaris.

  3. Créez un rôle de catalogue dans le(s) catalogue(s) cible(s) afin de lui accorder les privilèges nécessaires pour permettre la distribution d’identifiants. Passez cette étape si vous disposez déjà d’un rôle de catalogue à utiliser pour activer la distribution d’identifiants.

  4. Sécuriser le catalogue cible. Lors de la sécurité, assurez-vous que le rôle de catalogue dispose d’au moins l’un des privilèges suivants :

    • CATALOG_MANAGE_CONTENT

    • CATALOG_MANAGE_METADATA

    • CATALOG_WRITE_PROPERTIES

    Pour permettre la distribution d’identifiants, le principal de service utilisé pour effectuer cette opération doit se voir accorder l’un de ces privilèges.

Étape 2 : Exécutez la commande CLI

Pour exécuter la commande CLI, voir les étapes applicables à votre environnement :

Exécutez la commande CLI en tant qu’utilisateur Linux ou Mac

Conditions préalables

Avant d’exécuter la commande CLI, vous devez remplir les conditions préalables suivantes pour votre environnement :

  • [Python 3.x] (https://www.python.org/downloads/)

  • [Git] (https://git-scm.com/)

Pour exécuter la commande CLI sous Linux ou Mac, procédez comme suit :

  1. Clonez le référentiel Apache Polaris™ GitHub en exécutant la commande suivante :

    git clone https://github.com/apache/polaris.git
    
    Copy

    Pour obtenir des instructions sur la manière de cloner un référentiel GitHub, consultez [Clonage d’un référentiel] (https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).

  2. Définissez les variables d’environnement suivantes pour la commande CLI :

    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com
    export catalogName=<my-catalog>
    
    Copy

    Où :

    • sfAccountUrl est l’URL suivante : https://<identificateur-compte_open_catalog>.snowflakecomputing.com. Pour <open_catalog_account_identifier>, indiquez l’identificateur de compte de votre compte Open Catalog. En fonction de la région et de la plateforme Cloud du compte, cet identificateur peut être le localisateur de compte à lui seul (par exemple, xy12345) ou inclure des segments supplémentaires. Pour plus d’informations, voir Utilisation d’un localisateur de compte comme identificateur.

    • CLIENT_ID est l’identifiant du client de votre connexion de service que vous avez sauvegardé.

    • CLIENT_SECRET est le secret du client de votre connexion de service que vous avez sauvegardé.

    • catalogName est le nom du catalogue externe pour lequel vous souhaitez activer la distribution d’identifiants.

  3. Depuis le répertoire dans lequel vous avez cloné le repo Apache Polaris, exécutez la CLI de Polaris :

    ./polaris \
      --base-url "${sfAccountUrl}/polaris" \
      --client-id ${CLIENT_ID} \
      --client-secret ${CLIENT_SECRET} \
      catalogs \
      update "${catalogName}" \
      --set-property "enable.credential.vending"="true"
    
    Copy

Exécuter la commande CLI en tant qu’utilisateur Windows

Conditions préalables

Pour exécuter le code suivant, il faut que Docker soit installé sur la machine Windows.

  1. Créez un Dockerfile en utilisant l’exemple de code suivant :

    FROM python:3.11
    
    # install git
    RUN apt-get update && apt-get install -y git
    
    # get polaris
    RUN git clone https://github.com/apache/polaris.git
    
    WORKDIR /polaris
    
    RUN pip install --upgrade pip
    
    # install polaris cli
    RUN ./polaris --help
    
    Copy
  2. À partir du dossier où se trouve le Dockerfile, construisez l’image docker pour la CLI de Polaris à l’aide de la commande suivante :

    % docker build -t polaris-cli .                                                                                                                 0.0s
    
    Copy
  3. Exécutez le conteneur Docker et le terminal bash avec la commande suivante :

    % docker run --rm -it polaris-cli /bin/bash
    root@ae4c8353b45f:/polaris# 
    
    Copy
  4. Exécutez le code suivant pour mettre à jour le catalogue afin de définir la propriété enable.credential.vending sur true :

    % docker run --rm -it polaris-cli /bin/bash
    root@ae4c8353b45f:/polaris# export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com
    export catalogName=<my-catalog>
    root@ae4c8353b45f:/polaris# ./polaris \
      --base-url "${sfAccountUrl}/polaris" \
      --client-id ${CLIENT_ID} \
      --client-secret ${CLIENT_SECRET} \
      catalogs \
      update "${catalogName}" \
      --set-property "enable.credential.vending"="true"
    
    Copy
  5. Exécutez le code suivant pour valider que le paramètre enable.credential.vending a été configuré correctement :

    root@ae4c8353b45f:/polaris# ./polaris \
      --base-url "${sfAccountUrl}/polaris" \
      --client-id ${CLIENT_ID} \
      --client-secret ${CLIENT_SECRET} \
      catalogs \
      get "${catalogName}"
    {"type": "EXTERNAL", "name": "<my-catalog>", "properties": {"default-base-location": "s3://<bucket-name>/polaris/my-catalog-v2-storage/", "enable.credential.vending": "true"}, "createTimestamp": 1722547448827, "lastUpdateTimestamp": 1730906335286, "entityVersion": 3, "storageConfigInfo": {"storageType": "S3", "allowedLocations": ["s3://<bucket-name>/polaris/my-catalog-v2-storage/"], "roleArn": "arn:aws:iam::<aws-account-id>:role/<polaris-aws-role>"}}
    
    Copy