Configurer l’OAuth externe dans Snowflake Open Catalog

Cette rubrique décrit comment configurer des serveurs externes qui utilisent l’OAuth pour accéder à Snowflake Open Catalog.

Note

Cette rubrique vous montre comment utiliser Auth0 pour configurer l’OAuth externe pour Open Catalog. Cependant, les étapes pour la configurer dans Okta ou Microsoft Entra ID sont similaires.

Conditions préalables

  • Créez un ou plusieurs catalogues dans votre compte Open Catalog.

  • Assurez-vous de disposer d’un compte auprès d’un fournisseur d’identité (IdP). À des fins de démonstration, cette rubrique utilise Auth0 comme IdP. Pour créer un compte Auth0 pour votre entreprise ou organisation, consultez https://auth0.com/. Cependant, le processus est similaire pour Okta et Microsoft Entra ID.

  • Vous devez avoir [Snowflake CLI] (https://docs.snowflake.com/en/developer-guide/snowflake-cli/installation/installation) installé sur votre machine.

  • Pour configurer l’OAuth externe, vous devez disposer du rôle d’administrateur de service dans Open Catalog. Pour plus d’informations, consultez [Rôles utilisateur] (https://other-docs.snowflake.com/en/opencatalog/access-control#user-roles). Dans Snowflake CLI, ce rôle est affiché comme POLARIS_ACCOUNT_ADMIN.

Avant de commencer

Pour configurer l’OAuth externe, vous avez besoin de créer une connexion Snowflake CLI pour Open Catalog.

Pour créer cette connexion, vous avez besoin de votre identificateur de compte Open Catalog complet, qui comprend le nom de votre organisation Snowflake et le nom de votre compte Open Catalog ; par exemple : <orgname>.<my-snowflake-open-catalog-account-name>.

  • Pour trouver le nom de votre organisation Snowflake (<orgname>), consultez :ref:label-account_name_find.

  • Pour trouver votre nom de compte Snowflake Open Catalog (<my-snowflake-open-catalog-account-name>), voir :doc:/user-guide/opencatalog/find-account-name.

Créer une connexion Snowflake CLI

Créez une connexion Snowflake CLI pour votre compte Open Catalog afin de pouvoir l’utiliser pour configurer l’OAuth externe pour le compte.

Étape 1 : Ajouter une connexion CLI Snowflake pour Snowflake Open Catalog

  • Add a connection with the following values. For all other parameters, press Enter to skip specifying a value for the parameter.

    Paramètres de configuration de la connexion

    Valeur

    Nom de cette connexion

    Spécifiez un nom pour la connexion ; par exemple, myopencatalogconnection.

    Nom du compte

    Indiquez le nom de votre organisation Snowflake, suivi du nom de votre compte Open Catalog, au format :

    <orgname>-<my-snowflake-open-catalog-account-name>.

    Par exemple, ABCDEFG-MYACCOUNT1.

    Pour trouver ces noms, voir Avant de commencer_.

    Nom d’utilisateur

    Indiquez votre nom d’utilisateur pour Open Catalog ; par exemple, jsmith.

    Mot de passe [facultatif]

    Ce paramètre n’est pas facultatif lorsque vous créez une connexion pour Open Catalog.

    Saisissez votre mot de passe pour Open Catalog ; par exemple, MyPassword123456789.

    Rôle pour la connexion [facultatif]

    Ce paramètre n’est pas facultatif lorsque vous créez une connexion pour Open Catalog.

    Vous devez saisir POLARIS_ACCOUNT_ADMIN.

Étape 2 : Test de la connexion CLI Snowflake

  • Pour tester votre connexion CLI, suivez cet exemple, qui teste la connexion pour myopencatalogconnection :

    snow connection test -c myopencatalogconnection
    
    Copy

    La réponse devrait ressembler à ceci :

    +------------------------------------------------------------------------------+
    | key              | value                                                     |
    |----------------------------+-------------------------------------------------|
    | Connection name  | myopencatalogconnection                                   |
    | Status           | OK                                                        |
    | Host             | ABCDEFG-MYACCOUNT1.snowflakecomputing.com                 |
    | Account          | ABCDEFG-MYACCOUNT1                                        |
    | User             | jsmith                                                    |
    | Role             | POLARIS_ACCOUNT_ADMIN                                     |
    | Database         | not set                                                   |
    | Warehouse        | not set                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

Étape 3 : Configurer une connexion Snowflake CLI par défaut

Pour que la connexion que vous utilisez dispose toujours du bon rôle POLARIS_ACCOUNT_ADMIN qui lui est attribué, vous pouvez définir la connexion CLI Snowflake que vous avez créée pour Open Catalog comme connexion par défaut. Pour plus d’informations sur la connexion par défaut, consultez :ref:label-cli_set_default_connection.

  1. Suivez cet exemple, qui définit la connexion myopencatalogconnection par défaut :

    snow connection set-default myopencatalogconnection
    
    Copy
  2. Pour confirmer que vous utilisez le bon utilisateur et le bon rôle, exécutez la commande suivante :

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    La réponse doit renvoyer votre nom d’utilisateur Open Catalog et le ROLE CURRENT devrait être POLARIS_ACCOUNT_ADMIN.

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

Étape 1 : Configurer Auth0 en tant que serveur d’autorisation d’OAuth externe

Dans cette section, vous configurez Auth0 en tant que serveur d’autorisation d’OAuth externe. Cependant, les étapes pour configurer Microsoft Entra ID ou Okta en tant que serveur d’autorisation d’OAuth externe sont similaires.

Note

Pour créer un compte Auth0 pour votre entreprise ou organisation, voir https://auth0.com/.

Définir une API

Définissez une API pour pouvoir lui attribuer des autorisations.

  1. Connectez-vous à la console Auth0.

  2. Dans le panneau de gauche, sélectionnez Applications> APIs.

  3. Sélectionnez + Créer une API.

  4. Saisissez un Nom et un Identificateur, puis acceptez les paramètres par défaut.

  5. Sélectionnez Créer.

Ajouter des autorisations à l’API

Ajoutez des autorisations à l’API pour pouvoir les accorder au client.

Ce client sera le client principal dans Open Catalog, et l’autorisation que vous lui accordez sera un rôle principal dans Open Catalog.

  1. Connectez-vous à la console Auth0.

  2. Dans le panneau de gauche, sélectionnez Applications> APIs.

  3. Sélectionnez votre API.

  4. Dans l’onglet Autorisations, ajoutez des autorisations :

    1. Utilisez les champs Autorisation et Description pour ajouter des autorisations à votre API. Utilisez le format SESSION:ROLE:<nom_rôle_personnnalisé>. Par exemple : SESSION:ROLE:ENGINEER.

      Important

      Pour [générer votre jeton d’accès d’administrateur de service] (#step-4-generate-your-service-admin-access-token), vous devez ajouter l’autorisation SESSION:ROLE:POLARIS_ACCOUNT_ADMIN, qui vous permet d’attribuer le rôle d’administrateur de service dans Open Catalog avec des autorisations pour l’API.

    2. Sélectionnez + Ajouter.

Créez une application.

Créez des applications pour pouvoir leur accorder des autorisations pour l’API que vous avez créée.

  1. Connectez-vous à la console Auth0.

  2. Dans le panneau de gauche, sélectionnez Applications> Applications.

  3. Sélectionnez + Créer une application, puis créez une application. Répétez cette étape pour créer chaque application dont vous avez besoin pour configurer l’OAuth externe.

    Important

    Veillez à créer une application pour générer le jeton d’accès d’administrateur de service. Plus tard, vous lui accorderez l’autorisation SESSION:ROLE:POLARIS_ACCOUNT_ADMIN.

Attribuer des autorisations à l’API

Suivez les étapes suivantes pour sélectionner les autorisations que vous souhaitez accorder au client :

  1. Connectez-vous à la console Auth0.

  2. Dans le panneau de gauche, sélectionnez Applications> Applications.

  3. Sélectionnez l’application que vous avez créée.

  4. Sélectionnez l’onglet APIs.

  5. Si nécessaire, activez le bouton Autorisé pour votre API.

  6. Sélectionnez l’icône Développer pour votre API.

  7. Dans le champ Autorisations, cochez la case de chaque permission que vous souhaitez attribuer à l’API.

  8. Sélectionnez Mettre à jour.

    Répétez ces étapes pour chaque application que vous avez créée.

Important

Assurez-vous de sélectionner l’application que vous avez créée pour générer le jeton d’accès d’administrateur de service et attribuer l’autorisation SESSION:ROLE:POLARIS_ACCOUNT_ADMIN à l’API. Sinon, vous ne pouvez pas générer le jeton d’accès à l’administrateur de service.

Étape 2 : Récupérer le nom de votre organisation et de votre compte

Vous avez besoin du nom de votre organisation et du nom de votre compte Snowflake Open Catalog, séparés par un trait d’union, pour des tâches comme la création d’une intégration de sécurité.

  1. Pour récupérer le nom de votre organisation et le nom de votre compte Snowflake Open Catalog dans ce format, dans Snowflake CLI, exécutez la commande suivante :

    snow sql -q "SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();"
    
    Copy
  2. Dans la réponse, copiez les valeurs renvoyées et collez-les dans un éditeur de texte pour une utilisation ultérieure. Par exemple : ABCDEFG-MYACCOUNT1.

Étape 3 : Créer une intégration de sécurité

Pour créer une intégration de sécurité, exécutez la commande CREATE SECURITY INTEGRATION à l’aide d’une commande de connexion CLI Snowflake.

 snow sql -q "create or replace security integration external_oauth_auth0
    type = external_oauth
    enabled = true
    external_oauth_type = custom
    external_oauth_issuer = 'https://<Auth0_domain>/'
    external_oauth_jws_keys_url = 'https://<Auth0_domain>/.well-known/jwks.json'
    external_oauth_audience_list = ('https://<your_org_name>-<your_open_catalog_account_name>.snowflakecomputing.com')
    external_oauth_token_user_mapping_claim = 'sub'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
    EXTERNAL_OAUTH_SCOPE_DELIMITER = ' '
    EXTERNAL_OAUTH_SCOPE_MAPPING_ATTRIBUTE = 'scope';"
Copy

Où :

  • <Auth0_domain> est votre domaine Auth0. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ Domaine.

  • <your_org_name>-<your_open_catalog_account_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

Étape 4 : Générer votre jeton d’accès d’administrateur de service

Pour configurer l’OAuth externe de manière programmatique, vous avez besoin d’un jeton d’accès d’administrateur de service. Toutefois, vous avez la possibilité d’utiliser l’UI d’Open Catalog pour effectuer certaines tâches pour configurer l’OAuth externe.

Si vous avez déjà généré un jeton d’accès d’administrateur de service pour vous-même et qu’il est toujours actif, vous pouvez ignorer cette étape.

Pour générer votre jeton d’accès d’administrateur de service, dans Snowflake CLI, exécutez la commande suivante et copiez la valeur dans un éditeur de texte :

ACCESS_TOKEN=$(curl -X POST https://<Auth0_domain>/oauth/token --header 'content-type: application/x-www-form-urlencoded' --data grant_type=client_credentials --data client_id=<client_id> --data client_secret=<client_secret> --data-urlencode "audience=https://<your_org_name>-<your_open_catalog_account_name>.snowflakecomputing.com" --data "scope=SESSION:ROLE:POLARIS_ACCOUNT_ADMIN" | jq -r '.access_token')
Copy

Où :

  • <Auth0_domain> est votre domaine Auth0. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ Domaine.

  • <client_id>est l’ID client pour votre application dans Auth0 à laquelle vous accordez l’accès au privilège POLARIS_ACCOUNT_ADMIN. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ ID client.

  • <client_secret>est le secret client pour votre application dans Auth0 à laquelle vous accordez l’accès au privilège POLARIS_ACCOUNT_ADMIN. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ Secret client.

  • <audience> est l’identificateur de votre API. Pour trouver cette valeur, dans Auth0, accédez à Applications > APIs > Sélectionnez votre API > Paramètres > Champ Identificateur.

  • <your_org_name>-<your_open_catalog_account_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

  • POLARIS_ACCOUNT_ADMIN est le nom du rôle intégré dans Open Catalog qui vous permet d’effectuer des tâches administratives dans Open Catalog, ce qui inclut la configuration de l’OAuth externe. Dans l’UI d’Open Catalog, ce rôle est appelé rôle d’administrateur de service.

Étape 5 : Créer un rôle personnalisé

À cette étape, vous utilisez votre connexion Snowflake CLI pour créer un rôle personnalisé.

Créez un rôle personnalisé pour pouvoir ensuite lui accorder des rôles de catalogue et accorder le rôle personnalisé à un principal de service, ce qui lui confère des privilèges. Pour plus d’informations sur les rôles personnalisés, consultez [Rôle personnalisé] (access-control.md#custom-role). Pour plus d’informations sur le modèle RBAC dans Open Catalog, consultez [Modèle RBAC] (./access-control.md#rbac-model).

Note

Si la connexion CLI Snowflake par défaut que vous avez définie n’a pas le rôlePOLARIS_ACCOUNT_ADMIN attribué, vous devez inclure l’instruction suivante avec votre commande : USE ROLE POLARIS_ACCOUNT_ADMIN.

L’exemple suivant crée un rôle personnalisé OPEN_CATALOG_ADMIN :

snow sql -q "create role OPEN_CATALOG_ADMIN;"
Copy

Étape 6 : Accorder un rôle de catalogue à un rôle personnalisé

Dans cette section, vous accordez un rôle de catalogue au rôle personnalisé que vous avez créé.

Après avoir accordé un rôle de catalogue au rôle personnalisé, vous accordez le rôle personnalisé à un principal de service pour lui conférer tous les privilèges accordés aux rôles de catalogue qui sont accordés au rôle principal. Pour plus d’informations sur le modèle RBAC dans Open Catalog, consultez [Modèle RBAC] (./access-control.md#rbac-model).

Vous pouvez accorder le rôle personnalisé avec un rôle de catalogue qui dispose de privilèges d’administrateur de catalogue pour le catalogue ou qui dispose d’un ensemble de privilèges pour le catalogue que vous spécifiez :

  • Si vous souhaitez accorder à un principal de service des privilèges d’administrateur de catalogue pour un catalogue, [accordez un rôle de catalogue avec des privilèges d’administrateur de catalogue au rôle personnalisé] (#grant-a-catalog-role-with-catalog-admin-privileges-to-the-custom-role). Pour obtenir des informations sur les privilèges d’un administrateur de catalogue, consultez [Rôle d’administrateur de catalogue] (access-control.md#catalog-admin-role).

  • Si vous souhaitez accorder au principal de service un ensemble de privilèges que vous spécifiez, [accordez un rôle de catalogue avec un ensemble de privilèges que vous spécifiez au rôle personnalisé] (#grant-a-catalog-role-with-a-set-of-privileges-you-specify-to-the-custom-role). Par exemple, sélectionnez cette option si vous souhaitez accorder un rôle de catalogue catalog_reader, catalog_writer ou catalog_metadata_reader au rôle personnalisé.

Accorder un rôle de catalogue avec des privilèges d’administrateur de catalogue au rôle personnalisé

Dans cette section, vous accordez un rôle de catalogue avec des privilèges d’administrateur de catalogue au rôle personnalisé. Le workflow est le suivant :

  1. [Créer un rôle de catalogue] (#create-a-catalog-role).

  2. [Accorder des privilèges d’administrateur de catalogue au rôle de catalogue] (#grant-catalog-admin-privileges-to-the-catalog-role).

  3. [Accorder le rôle de catalogue à un rôle personnalisé] (#grant-the-catalog-role-to-a-custom-role).

Créer un rôle de catalogue

Exécutez la commande suivante pour créer un rôle de catalogue dans le catalogue que vous spécifiez :

 curl -X POST \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
   "name": "<catalog_role_name>"
   }'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom du catalogue dans Open Catalog dans lequel vous souhaitez créer un rôle de catalogue.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • Pour <catalog_role_name>, spécifiez un nom pour le rôle de catalogue. Par exemple : CatalogAdmin.

Accorder des privilèges d’administrateur de catalogue au rôle de catalogue

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"grant": {"type": "catalog", "privilege": "CATALOG_MANAGE_CONTENT"}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom d’un catalogue dans Open Catalog auquel vous souhaitez accorder des privilèges.

  • {catalogRoleName} est le nom du rôle de catalogue sur lequel vous souhaitez accorder des privilèges. Par exemple, TableReader.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • CATALOG_MANAGE_CONTENT est le nom du privilège dans Open Catalog avec les privilèges d’administrateur de catalogue.

Accorder le rôle de catalogue à un rôle personnalisé

Important

Les rôles personnalisés sont sensibles à la casse. Vous devez spécifier un rôle personnalisé avec toutes les lettres en majuscules, même si vous le créez avec des lettres minuscules ou des lettres minuscules et majuscules.

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/principal-roles/{customRoleName}/catalog-roles/{catalogName}" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"catalogRole": {"name": "<catalog_role_name>", "properties": {}, "entityVersion": 1}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {customRoleName} est le nom du rôle personnalisé que vous souhaitez accorder avec le rôle de catalogue qui dispose des privilèges d’administrateur de catalogue. Par exemple, OPEN_CATALOG_ADMIN.

  • {catalogName} est le nom d’un catalogue dans Open Catalog auquel vous souhaitez accorder des privilèges d’administrateur de catalogue.

  • <catalog_role_name> est le nom du rôle de catalogue d’un catalogue, auquel sont accordés des privilèges d’administrateur de catalogue. Par exemple : CatalogAdmin.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

Si nécessaire, répétez cette étape pour accorder au rôle personnalisé des privilèges d’administrateur de catalogue pour d’autres catalogues.

Accorder un rôle de catalogue avec un ensemble de privilèges spécifié au rôle personnalisé

Le workflow est le suivant :

  1. [Créer un rôle de catalogue] (#create-a-catalog-role).

  2. [Accorder des privilèges au rôle de catalogue] (#grant-privileges-to-the-catalog-role). Ces privilèges permettent au principal de service d’effectuer des actions dans Open Catalog.

  3. [Accorder le rôle de catalogue à un rôle personnalisé] (#grant-the-catalog-role-to-a-custom-role).

Créer un rôle de catalogue

Dans cette section, vous créez un rôle de catalogue. Pour plus d’informations sur les rôles de catalogue, voir Rôle de catalogue.

Exécutez la commande suivante pour créer un rôle de catalogue dans le catalogue que vous spécifiez :

 curl -X POST \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
   "name": "<catalog_role_name>"
   }'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom du catalogue dans Open Catalog dans lequel vous souhaitez créer un rôle de catalogue.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • Pour <catalog_role_name>, spécifiez un nom pour le rôle de catalogue. Par exemple : TableReader.

Accorder des privilèges au rôle de catalogue

Vous pouvez accorder des privilèges à l’ensemble du catalogue ou à un espace de noms ou une table du catalogue :

  • [Accorder des privilèges de catalogue sur le rôle de catalogue] (#grant-catalog-privileges-on-the-catalog-role)

  • [Accorder des privilèges d’espace de noms sur le rôle de catalogue] (#grant-namespace-privileges-on-the-catalog-role)

  • [Accorder des privilèges de table sur le rôle de catalogue] (#grant-table-privileges-on-the-catalog-role)

Accorder des privilèges de catalogue sur le rôle de catalogue

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"grant": {"type": "catalog", "privilege": "<privilege_name>"}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom d’un catalogue dans Open Catalog auquel vous souhaitez accorder des privilèges.

  • {catalogRoleName} est le nom du rôle de catalogue sur lequel vous souhaitez accorder des privilèges. Par exemple, TableReader.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • <privilege_name> est le nom du privilège que vous souhaitez accorder au rôle de catalogue. Pour voir la liste des privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

Accorder des privilèges d’espace de noms sur le rôle de catalogue

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"grant": {"type": "namespace", "namespace": ["<namespace_name>"], "privilege": "<privilege_name>"}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom d’un catalogue dans Open Catalog auquel vous souhaitez accorder des privilèges.

  • {catalogRoleName} est le nom du rôle de catalogue sur lequel vous souhaitez accorder des privilèges. Par exemple, TableReader.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • <namespace_name> is the name of the namespace you want to grant privileges to. To grant privileges to a nested namespace, specify it, along with each parent namespace, separated by a comma. For example: « ns1 », « ns1a ».

  • <privilege_name> est le nom du privilège d’espace de noms que vous souhaitez accorder au rôle de catalogue. Pour voir la liste des privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

Accorder des privilèges de table sur le rôle de catalogue

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/catalogs/{catalogName}/catalog-roles/{catalogRoleName}/grants" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"grant": {"type": "table", "namespace": ["<namespace_name>"], "tableName": "<table_name>", "privilege": "<privilege_name>"}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {Catalogname} est le nom d’un catalogue dans Open Catalog auquel vous souhaitez accorder des privilèges.

  • {catalogRoleName} est le nom du rôle de catalogue sur lequel vous souhaitez accorder des privilèges. Par exemple, TableReader.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • <namespace_name> is the name of the namespace whose table you want to grant privileges to. To grant privileges on a table located under a nested namespace, specify the nested namespace, along with each parent namespace, separated by a comma. For example: « ns1 », « ns1a ».

  • <table_name> est le nom de la table à laquelle vous souhaitez accorder des privilèges.

  • <privilege_name> est le nom du privilège que vous souhaitez accorder au rôle de catalogue. Pour voir la liste des privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

Accorder le rôle de catalogue à un rôle personnalisé

Important

Les rôles personnalisés sont sensibles à la casse. Vous devez spécifier un rôle personnalisé avec toutes les lettres en majuscules, même si vous le créez avec des lettres minuscules ou des lettres minuscules et majuscules.

Exécutez la commande suivante :

curl -X PUT \
"https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/management/v1/principal-roles/{customRoleName}/catalog-roles/{catalogName}" \
-H "Authorization: Bearer <service_admin_access_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"catalogRole": {"name": "<catalog_role_name>", "properties": {}, "entityVersion": 1}}'
Copy
Où :
  • <your_org_name>-<your_open_catalogaccount_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez :ref:label-retrieve_org_account_name_external_oauth.

  • {customRoleName} est le nom du rôle personnalisé auquel vous souhaitez accorder le rôle de catalogue.

  • {catalogName} est le nom d’un catalogue dans Open Catalog où vous avez créé le rôle de catalogue sur lequel vous souhaitez accorder des privilèges.

  • <service_admin_access_token> est le :ref:jeton d’accès d’administrateur de service que vous avez généré <label-generate_service_admin_access_token_external_oauth>.

  • <catalog_role_name> est le nom du rôle de catalogue que vous souhaitez accorder au rôle personnalisé.

Si nécessaire, répétez ce workflow pour accorder des rôles de catalogue supplémentaires que vous créez au rôle personnalisé.

Étape 7 : Créer un principal de service

À cette étape, vous utilisez votre connexion Snowflake CLI pour créer un principal de service.

Note

Si la connexion CLI Snowflake par défaut que vous avez définie n’a pas le rôlePOLARIS_ACCOUNT_ADMIN attribué, vous devez inclure l’instruction suivante avec votre commande : USE ROLE POLARIS_ACCOUNT_ADMIN.

Pour se connecter à Open Catalog via l’OAuth externe, nous avons besoin d’un principal de service. Dans Open Catalog, les principaux de service sont des utilisateurs dont le paramètre TYPE est défini sur service. Nous utiliserons donc la commande CREATE USER pour créer un utilisateur de TYPE=service.

Pour créer un principal de service, exécutez la commande suivante :

snow sql -q "CREATE USER <user_name> LOGIN_NAME='<client_id>@clients' TYPE='service';"
Copy

Où :

  • Pour <user_name>, indiquez un nom pour le principal de service.

  • Pour <client_id>, spécifiez l’ID client pour votre application. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ ID client.

Étape 8 : Accorder un rôle personnalisé au principal de service

Dans cette section, vous utilisez votre connexion Snowflake CLI pour accorder le rôle personnalisé à un ou plusieurs principaux de service. Par conséquent, vous conférez au principal de service les privilèges accordés à tout rôle de catalogue qui sont accordés au rôle personnalisé. Pour plus d’informations sur le modèle RBAC dans Open Catalog, consultez [Modèle RBAC] (./access-control.md#rbac-model).

Note

Si la connexion CLI Snowflake par défaut que vous avez définie n’a pas le rôlePOLARIS_ACCOUNT_ADMIN attribué, vous devez inclure l’instruction suivante avec votre commande : USE ROLE POLARIS_ACCOUNT_ADMIN.

Important

Les rôles personnalisés sont sensibles à la casse. Vous devez spécifier un rôle personnalisé avec toutes les lettres en majuscules, même si vous le créez avec des lettres minuscules ou des lettres minuscules et majuscules.

L’exemple suivant accorde le rôle personnalisé ENGINEER au principal de service service_principal1.

snow sql -q "GRANT ROLE ENGINEER to user service_principal1;"
Copy

Pour confirmer que le rôle est accordé au principal de service, exécutez :

snow sql -q "show grants to user service_principal1;" 
Copy

Dans la réponse, vérifiez que le rôle personnalisé que vous avez créé (colonne role) est affecté au principal de service que vous avez créé (colonne grantee_name).

(Facultatif) Étape 9 : Générer le jeton d’accès

Dans cette section, vous pouvez générer un jeton d’accès, que vous pouvez utiliser pour vous connecter à Open Catalog avec l’OAuth externe. Toutefois, si vous vous connectez à l’aide de cette méthode, vous devez actualiser manuellement le jeton d’accès.

Vous pouvez également ignorer cette étape et, plus tard, [vous connecter à Open Catalog à l’aide d’un jeton d’actualisation automatique] (./external-oauth-connect.md#connect-with-open-catalog-by-using-automatic-refresh-token-preferred-method), qui est la méthode préférée.

Utilisez la commande curl suivante pour générer un jeton d’accès :

ACCESS_TOKEN=$(curl -X POST https://<Auth0_domain>/oauth/token --header 'content-type: application/x-www-form-urlencoded' --data grant_type=client_credentials --data client_id=<client_id> --data client_secret=<client_secret> --data-urlencode "audience=https://<your_org_name>-<your_open_catalog_account_name>.snowflakecomputing.com" --data "scope=SESSION:ROLE:<custom_role_name>" | jq -r '.access_token')
Copy

Où :

  • <Auth0_domain> est votre domaine Auth0. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ Domaine.

  • <client_id>est l’ID client pour votre application dans Auth0. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ ID client.

  • <client_secret>est le secret client pour votre application dans Auth0. Pour trouver cette valeur, dans Auth0, accédez à Applications > Applications > [Nom de votre application] > Paramètres > Champ Secret client.

  • <audience> est l’identificateur de votre API. Pour trouver cette valeur, dans Auth0, accédez à Applications > APIs > Sélectionnez votre API > Paramètres >

    Champ Identificateur.

  • <your_org_name>-<your_open_catalog_account_name> est le nom de votre organisation et le nom de votre compte Snowflake Open Catalog, séparés par un trait d’union.

    Par exemple : ABCDEFG-MYACCOUNT1.

    Pour récupérer ces valeurs dans ce format, consultez [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

  • <custom_role_name> is the name of a custom role you granted with catalog roles, such as ENGINEER.

Étape 10 : Se connecter à Open Catalog avec l’OAuth externe

Dans cette section, vous connectez le principal de service à Open Catalog via l’OAuth externe. Pour obtenir des instructions, consultez [Se connecter à Snowflake Open Catalog avec l’OAuth externe] (./external-oauth-connect.md), qui comprend des instructions pour se connecter en utilisant un jeton d’accès ou l’actualisation automatique des jetons.