Configurer l’authentification par paire de clés dans Snowflake Open Catalog

Cette rubrique décrit comment configurer l’authentification par paire de clés dans Snowflake Open Catalog. Cette configuration permet à un utilisateur d’authentification par paire de clés de se connecter à Open Catalog de manière programmatique via un jeton d’accès. Par souci de simplicité, sauf indication contraire, la suite de cette rubrique utilise le terme utilisateur pour faire référence à un utilisateur d’authentification par paire de clés.

Avec l’authentification par paire de clés, vous pouvez permettre à un utilisateur programmatique d’accéder à Open Catalog pour divers rôles personnalisés avec des autorisations sur les catalogues appropriés. Par exemple :

  • Rôle personnalisé ANALYST : Peut uniquement accéder au catalogA.

  • Rôle personnalisé ENGINEER : Peut uniquement accéder au catalogB.

Conditions préalables

  • [Créer un catalogue] (https://other-docs.snowflake.com/en/opencatalog/create-catalog) dans votre compte Open Catalog.

  • Vous devez avoir Snowflake CLI installé sur votre machine. De plus, vous devez créer une connexion Snowflake CLI pour Open Catalog. Pour créer cette connexion, consultez [Créer une connexion Snowflake CLI pour Open Catalog] (#create-a-snowflake-cli-connection-for-open-catalog) ci-dessous.

  • Pour configurer l’authentification par paire de clés, 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.

  • Vous devez avoir [SnowSQL] (https://www.snowflake.com/en/developers/downloads/snowsql/) installé sur votre machine.

  • Vous avez besoin d’un jeton d’accès d’administrateur de service. Vous avez besoin de ce jeton pour configurer l’authentification par paire de clés de manière programmatique, et il est nécessaire pour accorder à un utilisateur des privilèges d’administrateur de catalogue . Pour générer ce jeton, consultez [Générer votre jeton d’accès d’administrateur de service] (#generate-your-service-admin-access-token) ci-dessous.

Avant de commencer

Pour configurer l’authentification par paire de clés, vous avez besoin d’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 pour Open Catalog

Créez une connexion Snowflake CLI pour votre compte Open Catalog afin de pouvoir l’utiliser pour configurer l’authentification par paire de clés pour le compte.

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

Ajoutez une connexion pour le compte Snowflake Open Catalog où vous souhaitez configurer l’authentification par paire de clés.

  • 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

Générer votre jeton d’accès d’administrateur de service

Pour configurer l’authentification par paire de clés 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’authentification par paire de clés.

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.

Les étapes de génération d’un jeton d’accès d’administrateur de service sont les suivantes :

  1. [Générer une clé privée et publique] (#generate-a-private-and-public-key)

  2. [Attribuer la clé publique à vous-même] (#assign-the-public-key-to-yourself)

  3. [Générer un JWT pour vous-même] (#generate-a-json-web-token)

  4. [Générer un jeton d’accès d’administrateur de service] (#generate-a-service-admin-access-token)

Générer une clé privée et publique

Cette section décrit comment générer une clé privée et publique.

Pour générer une clé privée, utilisez la commande suivante :

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Copy

Pour générer une clé publique, utilisez la commande suivante :

openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Copy

Attribuer la clé publique à vous-même

Utilisez votre connexion Snowflake CLI pour attribuer la clé publique à vous-même.

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.

  1. Pour vous attribuer la clé publique, exécutez :

    snow sql -q "alter user <your_username> set RSA_PUBLIC_KEY='<your_public_key>';"
    
    Copy

    Où :

    • <your_username> est votre nom d’utilisateur Open Catalog, que vous utilisez pour vous connecter à l’UI Open Catalog.

    Note

    Si vous devez récupérer votre clé publique, exécutez : cat rsa_key.pub.

  2. Confirmez que l’utilisateur possède la clé publique (RSA_PUBLIC_KEY) définie et l’empreinte digitale de la clé publique d’utilisateur RSA définie (RSA_PUBLIC_KEY_FP) :

    snow sql -q "desc user <your_username>;"
    
    Copy

    Où :

    • <your_username> est votre nom d’utilisateur Open Catalog, que vous utilisez pour vous connecter à l’UI Open Catalog.

Générer un jeton JSON Web

Dans cette section, vous générez un jeton JSON Web (JWT), dont vous avez besoin pour générer un jeton d’accès.

  1. Pour utiliser SnowSQL pour générer un JWT, exécutez :

    snowsql --private-key-path rsa_key.p8 --generate-jwt -h <your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com -a <account-identifier> -u <your_user_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 [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

    • <account-identifier> is the account identifier for your Snowflake Open Catalog account. To retrieve it, refer to your Open Catalog account URL. For example, abc12345in https://app.snowflake.com/us-west-2/abc12345/#/.

    • <your_user_name> est votre nom d’utilisateur Open Catalog.

  2. Si vous l’avez chiffrée, saisissez la clé d’accès ou cliquez sur Entrée pour continuer. Il peut s’écouler quelques secondes avant que vous receviez votre JWT.

Générer un jeton d’accès d’administrateur de service

Dans cette section, vous générez un jeton d’accès d’administrateur de service, que vous utilisez pour configurer l’authentification par paire de clés de manière programmatique.

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

    curl -i -X POST \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: application/json" \
    --data-urlencode "scope=session:role:POLARIS_ACCOUNT_ADMIN" \
    --data-urlencode "grant_type=client_credentials" \
    --data-urlencode "client_secret=<your_JWT>" \
    "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens"
    
    Copy

    Où :

    • 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’authentification par paire de clés. Dans l’UI d’Open Catalog, ce rôle est appelé rôle d’administrateur de service.

    • <your_JWT> est le JWT que vous avez généré à l’étape précédente.

    • <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 [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

Étape 1 : 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 utilisateur, 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 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 génération d’un JWT ou d’un jeton d’accès.

  1. Pour récupérer le nom de votre organisation et le nom de votre compte Snowflake Open Catalog dans ce format, 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 : 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 utilisateur 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 utilisateur 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 à l’utilisateur 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_key_pair_auth.

  • {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_key_pair_auth>.

  • 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_key_pair_auth.

  • {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_key_pair_auth>.

  • 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_key_pair_auth.

  • {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_key_pair_auth>.

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 à l’utilisateur 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_key_pair_auth.

  • {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_key_pair_auth>.

  • 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_key_pair_auth.

  • {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_key_pair_auth>.

  • <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_key_pair_auth.

  • {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_key_pair_auth>.

  • <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_key_pair_auth.

  • {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_key_pair_auth>.

  • <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_key_pair_auth.

  • {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_key_pair_auth>.

  • <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 4 : Créer un utilisateur

Utilisez votre connexion Snowflake CLI pour créer un utilisateur d’authentification par paire de clés dans Open Catalog. Un humain ne peut pas utiliser les identifiants de connexion de cet utilisateur pour se connecter à l’UI d’Open Catalog.

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.

  1. Pour créer un utilisateur, exécutez la commande suivante :

    snow sql -q "create user <username> login_name='<username>';"
    
    Copy

    Où :

    • <username> est le nom d’utilisateur que vous souhaitez attribuer à l’utilisateur d’authentification par paire de clés.

Étape 5 : Accorder un rôle personnalisé à l’utilisateur

Dans cette section, vous utilisez votre connexion Snowflake CLI pour accorder le rôle personnalisé à un ou plusieurs utilisateurs. Par conséquent, vous conférez à l’utilisateur 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 à l’utilisateur keypairuser1.

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

Pour confirmer que le rôle est accordé à l’utilisateur, exécutez :

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

Dans la réponse, vérifiez que le rôle personnalisé que vous avez créé (colonne role) est affecté à l’utilisateur que vous avez créé (colonne grantee_name).

Étape 6 : Générer un jeton d’accès pour l’utilisateur

Dans cette section, vous générez un jeton d’accès pour l’utilisateur, que vous utiliserez ultérieurement pour connecter l’utilisateur à Open Catalog via l’authentification par paire de clés.

Les étapes sont les suivantes :

  1. [Générer une clé privée et publique] (#generate-a-private-and-public-key-1)

  2. [Attribuer la clé publique à l’utilisateur] (#assign-the-public-key-to-the-user)

  3. [Générer un JWT] (#generate-a-jwt-for-a-user)

  4. [Générer un jeton d’accès] (#generate-an-access-token-for-the-user)

Générer une clé privée et publique

Cette section décrit comment générer une clé privée et publique.

Pour générer une clé privée, utilisez la commande suivante :

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Copy

Pour générer une clé publique, utilisez la commande suivante :

openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Copy

Attribuer la clé publique à l’utilisateur

Utilisez votre connexion Snowflake CLI pour attribuer la clé publique à l’utilisateur que vous avez créé.

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.

  1. Pour attribuer la clé publique à l’utilisateur que vous avez créé, exécutez :

    snow sql -q "alter user <username> set RSA_PUBLIC_KEY='<your_public_key>';"
    
    Copy

    Note

    Si vous devez récupérer votre clé publique, exécutez : cat rsa_key.pub.

  2. Confirmez que l’utilisateur possède la clé publique (RSA_PUBLIC_KEY) définie et l’empreinte digitale de la clé publique d’utilisateur RSA définie (RSA_PUBLIC_KEY_FP) :

    snow sql -q "desc user keypairuser1;"
    
    Copy

Générer un JWT pour un utilisateur

À cette étape, vous générez un JWT, dont vous avez besoin pour générer un jeton d’accès.

  1. Pour utiliser SnowSQL pour générer un JWT, exécutez :

    snowsql --private-key-path rsa_key.p8 --generate-jwt -h <your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com -a <account-identifier> -u <user_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 [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

    • <account-identifier> is the account identifier for your Snowflake Open Catalog account. To retrieve it, refer to your Open Catalog account URL. For example, abc12345in https://app.snowflake.com/us-west-2/abc12345/#/.

    • <user_name> est le nom d’utilisateur d’un utilisateur Open Catalog dont la clé publique est attribuée à l’utilisateur.

  2. Si vous l’avez chiffrée, saisissez la clé d’accès ou cliquez sur Entrée pour continuer. Il peut s’écouler quelques secondes avant que vous receviez votre JWT.

Générer un jeton d’accès pour l’utilisateur

  1. Utilisez le JWT pour récupérer un jeton d’accès pour un rôle personnalisé ou intégré :

    curl -i -X POST \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: application/json" \
    --data-urlencode "scope=session:role:<custom_role_name>" \
    --data-urlencode "grant_type=client_credentials" \
    --data-urlencode "client_secret=<your_JWT>" \
    "https://<your_org_name>-<your_open_catalogaccount_name>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens"
    
    Copy

    Where

    • <custom_role_name> is the name of A custom role you created, such as ENGINEER.

    • <your_JWT> est le JWT que vous avez généré à l’étape précédente.

    • <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 [Récupérer le nom de votre organisation et de votre compte] (#step-2-retrieve-your-organization-and-account-name).

  2. Stockez le jeton d’accès dans une variable ($ACCESS_TOKEN).

Étape 7 : Se connecter à Open Catalog avec l’authentification par paire de clés

Dans cette section, vous connectez l’utilisateur à Open Catalog via l’authentification par paire de clés. Pour obtenir des instructions, consultez [Se connecter à Snowflake Open Catalog avec l’authentification par paire de clés] (key-paires-auth-connect.md).

Configurer la rotation de paires de clés

Snowflake accepte plusieurs clés actives pour permettre une rotation ininterrompue. Les étapes de configuration de la rotation de paires de clés dans Open Catalog sont les mêmes que dans Snowflake. Pour obtenir des instructions, consultez [Configurer la rotation de paires de clés] (https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-rotation) dans la documentation Snowflake.

Utiliser le CLI d’Apache Polaris™ (en cours d’incubation) pour gérer des catalogues

Après avoir configuré l’authentification par paire de clés, vous pouvez générer un jeton d’accès d’administrateur de service pour utiliser le CLI d’Apache Polaris™ (en cours d’incubation) pour configurer et gérer des catalogues dans Open Catalog. Pour obtenir des instructions, consultez [Guide d’Open Catalog avec Polaris] (https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo) dans Snowflake Labs.