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
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 | +------------------------------------------------------------------------------+
É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.
Suivez cet exemple, qui définit la connexion
myopencatalogconnectionpar défaut :snow connection set-default myopencatalogconnection
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();"
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 | +-----------------------+
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 :
[Générer une clé privée et publique] (#generate-a-private-and-public-key)
[Attribuer la clé publique à vous-même] (#assign-the-public-key-to-yourself)
[Générer un JWT pour vous-même] (#generate-a-json-web-token)
[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
Pour générer une clé publique, utilisez la commande suivante :
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
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.
Pour vous attribuer la clé publique, exécutez :
snow sql -q "alter user <your_username> set RSA_PUBLIC_KEY='<your_public_key>';"
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.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>;"
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.
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>
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,abc12345inhttps://app.snowflake.com/us-west-2/abc12345/#/.<your_user_name>est votre nom d’utilisateur Open Catalog.
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.
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"
Où :
POLARIS_ACCOUNT_ADMINest 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;"
É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.
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();"
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 :
[Créer un rôle de catalogue] (#create-a-catalog-role).
[Accorder des privilèges d’administrateur de catalogue au rôle de catalogue] (#grant-catalog-admin-privileges-to-the-catalog-role).
[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>" }'
- 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.
Consultez Catalogue <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_ dans Snowflake Labs.
Consultez :doc:/user-guide/opencatalog/create-catalog-role.
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"}}'
- 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_CONTENTest le nom du privilège dans Open Catalog avec les privilèges d’administrateur de catalogue.
Consultez Privilèges <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ dans Snowflake Labs. Comme décrit dans les instructions, assurez-vous d’accorder le privilège CATALOG_MANAGE_CONTENT au rôle de catalogue.
Consultez :ref:Accorder des privilèges de catalogue sur un rôle de catalogue <label-grant_catalog_privileges_catalog_role> et sélectionnez le privilège CATALOG_MANAGE_CONTENT.
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}}'
- 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>.
Consultez Attributions <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_ dans Snowflake Labs.
Voir :doc:/user-guide/opencatalog/secure-catalogs. Ces instructions décrivent comment accorder un rôle de catalogue à un rôle principal, mais le processus est le même. Au lieu de sélectionner un rôle principal dans la liste, sélectionnez le rôle personnalisé que vous souhaitez accorder avec le rôle de catalogue qui possède le privilège CATALOG_MANAGE_CONTENT.
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 :
[Créer un rôle de catalogue] (#create-a-catalog-role).
[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.
[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>" }'
- 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.
Consultez Catalogue <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_ dans Snowflake Labs.
Consultez :doc:/user-guide/opencatalog/create-catalog-role.
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>"}}'
- 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, consultezPrivilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Consultez Privilèges <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ dans Snowflake Labs.
Note
L’exemple dans Snowflake Labs accorde le privilège CATALOG_MANAGE_CONTENT, qui accorde des privilèges d’administrateur de catalogue pour le catalogue. Toutefois, pour obtenir la liste des autres privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ dans la documentation Open Catalog.
Consultez :ref:Accorder des privilèges de catalogue sur un rôle de catalogue <label-grant_catalog_privileges_catalog_role>.
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>"}}'
- 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, consultezPrivilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Consultez Privilèges <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ dans Snowflake Labs.
Note
L’exemple dans Snowflake Labs accorde le privilège CATALOG_MANAGE_CONTENT, qui accorde des privilèges d’administrateur de catalogue pour le catalogue. Toutefois, pour obtenir la liste des autres privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ dans la documentation Open Catalog.
Consultez :ref:Accorder des privilèges d’espace de noms sur un rôle de catalogue <label-grant_namespace_privileges_catalog_role>.
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>"}}'
- 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, consultezPrivilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Consultez Privilèges <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ dans Snowflake Labs.
Note
L’exemple dans Snowflake Labs accorde le privilège CATALOG_MANAGE_CONTENT, qui accorde des privilèges d’administrateur de catalogue pour le catalogue. Toutefois, pour obtenir la liste des autres privilèges disponibles, consultez Privilèges de contrôle d’accès <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ dans la documentation Open Catalog.
Consultez :ref:Accorder des privilèges de table sur un rôle de catalogue <label-grant_table_privileges_catalog_role>.
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}}'
- 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é.
Consultez Attributions <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_ dans Snowflake Labs.
Voir :doc:/user-guide/opencatalog/secure-catalogs. Ces instructions décrivent comment accorder un rôle de catalogue à un rôle principal, mais le processus est le même. Au lieu de sélectionner un rôle principal dans la liste, vous sélectionnez votre 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.
Pour créer un utilisateur, exécutez la commande suivante :
snow sql -q "create user <username> login_name='<username>';"
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;"
Pour confirmer que le rôle est accordé à l’utilisateur, exécutez :
snow sql -q "show grants to user keypairuser1;"
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 :
[Générer une clé privée et publique] (#generate-a-private-and-public-key-1)
[Attribuer la clé publique à l’utilisateur] (#assign-the-public-key-to-the-user)
[Générer un JWT] (#generate-a-jwt-for-a-user)
[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
Pour générer une clé publique, utilisez la commande suivante :
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
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.
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>';"
Note
Si vous devez récupérer votre clé publique, exécutez :
cat rsa_key.pub.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;"
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.
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>
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,abc12345inhttps://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.
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¶
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"
Where
<custom_role_name>is the name of A custom role you created, such asENGINEER.<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).
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.