Schlüsselpaar-Authentifizierung in Snowflake Open Catalog konfigurieren¶
Unter diesem Thema wird beschrieben, wie Sie die Schlüsselpaar-Authentifizierung in Snowflake Open Catalog konfigurieren. Diese Konfiguration ermöglicht es einem Benutzer mit Schlüsselpaar-Authentifizierung, sich programmgesteuert über einen Zugriffstoken mit Open Catalog zu verbinden. Der Einfachheit halber wird im weiteren Verlauf dieses Themas der Begriff „Benutzer“ verwendet, um sich auf einen Benutzer mit Schlüsselpaar-Authentifizierung zu beziehen.
Mit der Schlüsselpaar-Authentifizierung können Sie einem Benutzer für verschiedene kundenspezifische Rollen mit Berechtigungen für die entsprechenden Kataloge programmgesteuerten Zugriff auf Open Catalog gewähren. Beispiel:
Kundenspezifische Rolle ANALYST: Kann nur auf catalogA zugreifen.
Kundenspezifische Rolle ENGINEER: Kann nur auf catalogB zugreifen.
Voraussetzungen¶
Einen Katalog erstellen in Ihrem Open Catalog-Konto.
Auf Ihrem Computer muss Snowflake CLI installiert sein. Außerdem müssen Sie eine Snowflake-CLI-Verbindung für Open Catalog erstellen. Weitere Informationen zum Erstellen dieser Verbindung finden Sie unter Eine Snowflake-CLI-Verbindung für Open Catalog erstellen unten.
Um die Schlüsselpaar-Authentifizierung zu konfigurieren, müssen Sie in Open Catalog die Rolle des Service-Administrators innehaben. Weitere Informationen finden Sie unter Benutzerrollen. In Snowflake CLI wird diese Rolle als POLARIS_ACCOUNT_ADMIN ausgegeben.
Es muss SnowSQL auf Ihrem Computer installiert sein.
Sie benötigen ein Zugriffstoken für den Service-Administrator. Sie benötigen dieses Token, um die Schlüsselpaar-Authentifizierung programmgesteuert zu konfigurieren. Außerdem ist er erforderlich, um einem Benutzer Katalogadministratorberechtigungen zu erteilen. Wie Sie dieses Token generieren, erfahren Sie unter Zugriffstoken für Service- Administrator generieren.
Bevor Sie beginnen¶
Um die Schlüsselpaar-Authentifizierung zu konfigurieren, benötigen Sie eine Snowflake-CLI-Verbindung für Open Catalog.
Um diese Verbindung zu erstellen, benötigen Sie Ihren vollständigen Open Catalog-Kontobezeichner, der den Namen Ihrer Snowflake-Organisation und den Namen Ihres Open Catalog-Kontos enthält, z. B. <orgname>.<my-snowflake-open-catalog-account-name>.
Informationen dazu, wie Sie den Namen Ihrer Snowflake-Organisation (
<orgname>) finden, erhalten Sie unter :ref:label-account_name_find.Informationen dazu, wie Sie den Namen Ihres Snowflake Open Catalog-Kontos (
<my-snowflake-open-catalog-account-name>) finden, erhalten Sie unter :doc:/user-guide/opencatalog/find-account-name.
Eine Snowflake-CLI-Verbindung für Open Catalog erstellen¶
Erstellen Sie eine Snowflake-CLI-Verbindung für Ihr Open Catalog-Konto, sodass Sie es zur Konfiguration der Schlüsselpaar-Authentifizierung für das Konto verwenden können.
Schritt 1: Eine Snowflake-CLI-Verbindung für Snowflake Open Catalog hinzufügen¶
Fügen Sie eine Verbindung für das Snowflake Open Catalog-Konto hinzu, für das Sie die Schlüsselpaar-Authentifizierung konfigurieren möchten.
Add a connection with the following values. For all other parameters, press Enter to skip specifying a value for the parameter.
Konfigurationsparameter für die Verbindung
Wert
Name for this connection
Geben Sie einen Namen für die Verbindung an, z. B.
myopencatalogconnection.Account name
Geben Sie den Namen Ihrer Snowflake-Organisation, gefolgt vom Namen Ihres Open Catalog-Kontos, in folgendem Format an:
<orgname>-<my-snowflake-open-catalog-account-name>.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen dazu, wie Sie diese Namen finden, erhalten Sie unter
Bevor Sie beginnen_.Username
Geben Sie Ihren Benutzernamen für Open Catalog an, z. B.
jsmith.Password [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Geben Sie Ihr Kennwort für Open Catalog ein, z. B.
MyPassword123456789.Role for the connection [optional]
Dieser Parameter ist nicht optional, wenn Sie eine Verbindung für Open Catalog erstellen.
Sie müssen
POLARIS_ACCOUNT_ADMINeingeben.
Schritt 2: Snowflake-CLI-Verbindung testen¶
Um Ihre CLI-Verbindung zu testen, folgen Sie diesem Beispiel, bei dem die Verbindung für
myopencatalogconnectiongetestet wird:snow connection test -c myopencatalogconnection
Die Antwort sollte wie folgt aussehen:
+------------------------------------------------------------------------------+ | 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 | +------------------------------------------------------------------------------+
Schritt 3: Eine Standard-Snowflake-CLI-Verbindung einrichten¶
Um sicherzustellen, dass die von Ihnen verwendete Verbindung immer über die erforderliche POLARIS_ACCOUNT_ADMIN-Rolle verfügt, können Sie die Snowflake-CLI-Verbindung, die Sie für Open Catalog erstellt haben, als Standardverbindung festlegen. Weitere Informationen zur Standardverbindung finden Sie unter :ref:label-cli_set_default_connection.
Folgen Sie diesem Beispiel, bei dem die
myopencatalogconnection-Verbindung als Standard festgelegt ist:snow connection set-default myopencatalogconnection
Um zu überprüfen, ob Sie den richtigen Benutzer und die richtige Rolle verwenden, führen Sie Folgendes aus:
snow sql -q "Select current_user(); select current_role();"
Die Antwort sollte Ihren Open Catalog-Benutzernamen zurückgeben und CURRENT ROLE sollte POLARIS_ACCOUNT_ADMIN sein.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
Service-Administrator-Zugriffstoken generieren¶
Um die Schlüsselpaar-Authentifizierung programmgesteuert zu konfigurieren, benötigen Sie ein Service- Administrator-Zugriffstoken. Sie haben jedoch die Möglichkeit, die Open Catalog UI zu verwenden, um einige Aufgaben zur Konfiguration der Schlüsselpaar-Authentifizierung auszuführen.
Wenn Sie bereits ein Service-Administrator-Zugriffstoken für sich selbst erstellt haben und dieses noch aktiv ist, können Sie diesen Schritt überspringen.
Die Schritte zum Generieren eines Service- Administrator-Zugriffstokens sind wie folgt:
Einen privaten und öffentlichen Schlüssel generieren¶
In diesem Abschnitt wird beschrieben, wie Sie einen privaten und einen öffentlich Schlüssel generieren.
Um einen privaten Schlüssel zu generieren, verwenden Sie den folgenden Befehl:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Um einen öffentlichen Schlüssel zu generieren, verwenden Sie den folgenden Befehl:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Den öffentlichen Schlüssel sich selbst zuweisen¶
Verwenden Sie Ihre Snowflake-CLI-Verbindung, um sich selbst den öffentlichen Schlüssel zuweisen.
Bemerkung
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN.
Um sich selbst den öffentlichen Schlüssel zuzuweisen, gehen Sie wie folgt vor:
snow sql -q "alter user <your_username> set RSA_PUBLIC_KEY='<your_public_key>';"
Wobei:
<your_username>ist Ihr Open Catalog-Benutzername, mit dem Sie sich bei der Open Catalog-UI anmelden können.
Bemerkung
Wenn Sie Ihren öffentlich Schlüssel abrufen müssen, führen Sie
cat rsa_key.pubaus.Überprüfen Sie, ob der öffentliche Schlüssel (
RSA_PUBLIC_KEY) für den Benutzer eingerichtet ist und ob der Fingerabdruck des öffentlichen RSA-Schlüssels (RSA_PUBLIC_KEY_FP) des Benutzers festgelegt ist:snow sql -q "desc user <your_username>;"
Wobei:
<your_username>ist Ihr Open Catalog-Benutzername, mit dem Sie sich bei der Open Catalog-UI anmelden können.
Ein JSON-Web-Token generieren¶
In diesem Abschnitt generieren Sie ein JSON-Web-Token (JWT), das Sie benötigen, um ein Zugriffstoken zu generieren.
Um SnowSQL zum Generieren eines JWT zu verwenden, führen Sie Folgendes aus:
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>
Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen dazu, wie Sie diese Werte in diesem Format abrufen, finden Sie unter Organisations- und Kontonamen abrufen.
<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>ist Ihr Open Catalog-Benutzername.
Wenn Sie ihn verschlüsselt haben, geben Sie den Passkey ein, oder wählen Sie „Enter“, um fortzufahren. Es kann einige Sekunden dauern, bis Sie Ihren JWT erhalten.
Ein Service-Administrator-Zugriffstoken generieren¶
In diesem Abschnitt generieren Sie ein Service-Administrator-Zugriffstoken, das Sie verwenden können, um die Schlüsselpaar-Authentifizierung programmgesteuert zu konfigurieren.
Um Ihr Service-Administrator-Zugriffstoken zu generieren, führen Sie den folgenden Befehl aus und kopieren Sie den Wert in einen Texteditor:
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"
Wobei:
POLARIS_ACCOUNT_ADMINist der Name der in Open Catalog integrierten Rolle, die es Ihnen ermöglicht, administrative Aufgaben in Open Catalog durchzuführen, einschließlich der Konfiguration der Schlüsselpaar-Authentifizierung. In der Open Catalog-UI wird diese Rolle als Service- Administrator-Rolle bezeichnet.<your_JWT>ist das JWT, das Sie im vorherigen Schritt generiert haben.<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen dazu, wie Sie diese Werte in diesem Format abrufen, finden Sie unter Organisations- und Kontonamen abrufen.
Schritt 1: Kundenspezifische Rolle erstellen¶
In diesem Schritt verwenden Sie Ihre Snowflake-CLI-Verbindung, um eine kundenspezifische Rolle zu erstellen.
Erstellen Sie eine kundenspezifische Rolle, damit Sie ihr später Katalogrollen zuweisen und die kundenspezifische Rolle einem Benutzer zuweisen können, um dem Benutzer Berechtigungen zu erteilen. Weitere Informationen zu kundenspezifischen Rollen finden Sie unter Kundenspezifische Rolle. Weitere Informationen zum RBAC-Modell in Open Catalog finden Sie unter RBAC-Modell.
Bemerkung
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN.
Im folgenden Beispiel wird eine kundenspezifische OPEN_CATALOG_ADMIN-Rolle erstellt:
snow sql -q "create role OPEN_CATALOG_ADMIN;"
Schritt 2: Organisations- und Kontonamen abrufen¶
Sie benötigen Ihren Organisationsnamen und den Namen Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich, für Aufgaben wie das Generieren eines JWT oder Zugriffstokens.
Um den Organisationsnamen und den Namen Ihres Snowflake Open Catalog-Kontos in diesem Format abzurufen, führen Sie den folgenden Befehl aus:
snow sql -q "SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();"
Kopieren Sie in der Antwort die zurückgegebenen Werte, und fügen Sie sie zur späteren Verwendung in einen Texteditor ein. Beispiel:
ABCDEFG-MYACCOUNT1.
Schritt 3: Kundenspezifische Rolle zu einem Katalog zuweisen¶
In diesem Abschnitt weisen Sie der von Ihnen erstellten kundenspezifischen Rolle eine Katalogrolle zu.
Nachdem Sie der kundenspezifischen Rolle eine Katalogrolle zugewiesen haben, weisen Sie die kundenspezifische Rolle einem Benutzer zu, um diesem alle Berechtigungen zu erteilen, die Katalogrollen gewährt werden, die der Prinzipalrolle zugewiesen werden. Weitere Informationen zum RBAC-Modell in Open Catalog finden Sie unter RBAC-Modell.
Sie können der kundenspezifischen Rolle eine Katalogrolle zuweisen, die über Katalogadministratorberechtigungen für den Katalog oder über eine Reihe von Berechtigungen für den Katalog verfügt, die Sie angeben:
Wenn Sie einem Benutzer Katalogadministratorberechtigungen für einen Katalog erteilen möchten, weisen Sie der kundenspezifischen Rolle eine Katalogrolle mit Katalogadministratorberechtigungen zu. Informationen darüber, welche Berechtigungen ein Katalogadministrator hat, finden Sie unter Katalogadministratorrolle.
Wenn Sie dem Benutzer eine Reihe von Berechtigungen erteilen möchten, die Sie angeben, gewähren Sie der kundenspezifischen Rolle eine Katalogrolle mit einer Reihe definierter Berechtigungen. Wählen Sie z. B. diese Option, wenn Sie der kundenspezifischen Rolle die Katalogrolle „catalog_reader“, „catalog_writer“ oder „catalog_metadata_reader“ zuweisen möchten.
Der kundenspezifischen Rolle eine Katalogrolle mit Katalogadministratorberechtigungen zuweisen¶
In diesem Abschnitt weisen Sie der kundenspezifischen Rolle eine Katalogrolle mit Katalogadministratorberechtigungen zu. Der Workflow ist wie folgt:
Eine Katalogrolle erstellen¶
Führen Sie den folgenden Befehl aus, um eine Katalogrolle in dem von Ihnen angegebenen Katalog zu erstellen:
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>" }'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name des Katalogs in Open Catalog, in dem Sie eine Katalogrolle erstellen möchten.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.Geben Sie für
<catalog_role_name>einen Namen für die Katalogrolle an. Beispiel: CatalogAdmin.
Siehe Katalog <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_ in Snowflake Labs.
Siehe :doc:/user-guide/opencatalog/create-catalog-role.
Der Katalogrolle Katalogadministratorberechtigungen erteilen¶
Führen Sie den folgenden Befehl aus:
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"}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name eines Katalog in Open Catalog, für den Sie Berechtigungen erteilen möchten.
{catalogRoleName}ist der Name der Katalogrolle, der Sie Berechtigungen erteilen möchten. Beispiel: TableReader.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.
CATALOG_MANAGE_CONTENTist der Name der Berechtigung in Open Catalog mit Katalogadministratorberechtigungen.
Siehe Berechtigungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ in Snowflake Labs. Stellen Sie sicher, dass Sie entsprechend der Anleitung der Katalogrolle die Berechtigung CATALOG_MANAGE_CONTENT erteilen.
Siehe :ref:Katalogberechtigungen für eine Katalogrolle gewähren <label-grant_catalog_privileges_catalog_role>. Wählen Sie die Berechtigung CATALOG_MANAGE_CONTENT aus.
Katalogrolle einer kundenspezifischen Rolle zuweisen¶
Wichtig
Bei kundenspezifischen Rollen wird zwischen Groß- und Kleinschreibung unterschieden. Sie sollten eine kundenspezifische Rolle nur mit Großbuchstaben angeben, auch wenn Sie sie mit Kleinbuchstaben oder mit Klein- und Großbuchstaben erstellen.
Führen Sie den folgenden Befehl aus:
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}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{customRoleName}ist der Name der kundenspezifischen Rolle, die Sie mit der Katalogrolle zuweisen möchten, die über Katalogadministratorberechtigungen verfügt. Beispiel: OPEN_CATALOG_ADMIN.
{catalogName}ist der Name eines Katalogs in Open Catalog, für den Sie Katalogadministratorberechtigungen erteilen möchten.
<catalog_role_name>ist der Name der Katalogrolle für einen Katalog, der über Katalogadministratorberechtigungen verfügt. Beispiel: CatalogAdmin.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.
Siehe Zuweisungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_ in Snowflake Labs.
Siehe :doc:/user-guide/opencatalog/secure-catalogs. In dieser Anleitung wird beschrieben, wie Sie einer Prinzipalrolle eine Katalogrolle zuweisen. Der Prozess ist aber derselbe. Anstatt eine Prinzipalrolle aus der Liste auszuwählen, wählen Sie Ihre kundenspezifische Rolle aus, der Sie die Katalogrolle zuweisen möchten, die über die Berechtigung CATALOG_MANAGE_CONTENT verfügt.
Wiederholen Sie diesen Schritt bei Bedarf, um der kundenspezifischen Rolle Katalogadministratorberechtigungen für andere Kataloge zuzuweisen.
Weisen Sie der kundenspezifischen Rolle eine Katalogrolle mit einem Satz von Berechtigungen zu, die Sie festlegen.¶
Der Workflow ist wie folgt:
Der Katalogrolle Berechtigungen erteilen. Diese Berechtigungen erlauben es dem Benutzer, Aktionen in Open Catalog durchzuführen.
Eine Katalogrolle erstellen¶
In diesem Abschnitt erstellen Sie eine Katalogrolle. Weitere Informationen über Katalogrollen finden Sie unter Katalogrolle.
Führen Sie den folgenden Befehl aus, um eine Katalogrolle in dem von Ihnen angegebenen Katalog zu erstellen:
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>" }'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name des Katalogs in Open Catalog, in dem Sie eine Katalogrolle erstellen möchten.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.Geben Sie für
<catalog_role_name>einen Namen für die Katalogrolle an. Beispiel: TableReader.
Siehe Katalog <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#catalog-1>_ in Snowflake Labs.
Siehe :doc:/user-guide/opencatalog/create-catalog-role.
Der Katalogrolle Berechtigungen erteilen¶
Sie können dem gesamten Katalog oder einem Namespace oder einer Tabelle im Katalog Berechtigungen erteilen:
Katalogberechtigungen für die Katalogrolle erteilen¶
Führen Sie den folgenden Befehl aus:
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>"}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name eines Katalog in Open Catalog, für den Sie Berechtigungen erteilen möchten.
{catalogRoleName}ist der Name der Katalogrolle, der Sie Berechtigungen erteilen möchten. Beispiel: TableReader.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.
<privilege_name>ist der Name der Berechtigung, die Sie der Katalogrolle erteilen möchten. Eine Liste der verfügbaren Berechtigungen finden Sie unterZugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Siehe Berechtigungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ in Snowflake Labs.
Bemerkung
Das Beispiel in Snowflake Labs gewährt die Berechtigung CATALOG_MANAGE_CONTENT , die Katalogadministratorberechtigungen für den Katalog gewährt. Eine Liste der anderen verfügbaren Berechtigungen finden Sie unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ in der Open Catalog-Dokumentation.
Siehe :ref:Katalogberechtigungen für eine Katalogrolle erteilen <label-grant_catalog_privileges_catalog_role>.
Namespace-Berechtigungen für die Katalogrolle erteilen¶
Führen Sie den folgenden Befehl aus:
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>"}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name eines Katalog in Open Catalog, für den Sie Berechtigungen erteilen möchten.
{catalogRoleName}ist der Name der Katalogrolle, der Sie Berechtigungen erteilen möchten. Beispiel: TableReader.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <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>ist der Name der Namespace-Berechtigung, die Sie der Katalogrolle erteilen möchten. Eine Liste der verfügbaren Berechtigungen finden Sie unterZugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Siehe Berechtigungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ in Snowflake Labs.
Bemerkung
Das Beispiel in Snowflake Labs gewährt die Berechtigung CATALOG_MANAGE_CONTENT , die Katalogadministratorberechtigungen für den Katalog gewährt. Eine Liste der anderen verfügbaren Berechtigungen finden Sie unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ in der Open Catalog-Dokumentation.
Siehe :ref:Namespace-Berechtigungen für eine Katalogrolle erteilen <label-grant_namespace_privileges_catalog_role>.
Tabellenberechtigungen für die Katalogrolle erteilen¶
Führen Sie den folgenden Befehl aus:
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>"}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{Catalogname}ist der Name eines Katalog in Open Catalog, für den Sie Berechtigungen erteilen möchten.
{catalogRoleName}ist der Name der Katalogrolle, der Sie Berechtigungen erteilen möchten. Beispiel: TableReader.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <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>ist der Name der Tabelle, für die Sie Berechtigungen erteilen möchten.
<privilege_name>ist der Name der Berechtigung, die Sie der Katalogrolle erteilen möchten. Eine Liste der verfügbaren Berechtigungen finden Sie unterZugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.
Siehe Berechtigungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#privileges>_ in Snowflake Labs.
Bemerkung
Das Beispiel in Snowflake Labs gewährt die Berechtigung CATALOG_MANAGE_CONTENT , die Katalogadministratorberechtigungen für den Katalog gewährt. Eine Liste der anderen verfügbaren Berechtigungen finden Sie unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_ in der Open Catalog-Dokumentation.
Siehe :ref:Tabellenberechtigungen für eine Katalogrolle erteilen <label-grant_table_privileges_catalog_role>.
Katalogrolle einer kundenspezifischen Rolle zuweisen¶
Wichtig
Bei kundenspezifischen Rollen wird zwischen Groß- und Kleinschreibung unterschieden. Sie sollten eine kundenspezifische Rolle nur mit Großbuchstaben angeben, auch wenn Sie sie mit Kleinbuchstaben oder mit Klein- und Großbuchstaben erstellen.
Führen Sie den folgenden Befehl aus:
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}}'
- Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen zum Abrufen dieser Werte in diesem Format finden Sie unter :ref:
label-retrieve_org_account_name_key_pair_auth.
{customRoleName}ist der Name der kundenspezifischen Rolle, der Sie die Katalogrolle zuweisen möchten.
{catalogName}ist der Name eines Katalog in Open Catalog, in dem Sie die Katalogrolle erstellt haben, für die Sie Berechtigungen erteilen möchten.
<service_admin_access_token>ist der :ref:Service-Administrator-Zugriffstoken, den Sie generiert haben <label-generate_service_admin_access_token_key_pair_auth>.
<catalog_role_name>ist der Name der Katalogrolle, die Sie der kundenspezifischen Rolle zuweisen möchten.
Siehe Zuweisungen <https://github.com/Snowflake-Labs/polaris-cli-opencatalog-demo?tab=readme-ov-file#grants>_ in Snowflake Labs.
Siehe :doc:/user-guide/opencatalog/secure-catalogs. In dieser Anleitung wird beschrieben, wie Sie einer Prinzipalrolle eine Katalogrolle zuweisen. Der Prozess ist aber derselbe. Anstatt eine Prinzipalrolle aus der Liste auszuwählen, wählen Sie Ihre kundenspezifische Rolle aus.
Wiederholen Sie diesen Workflow bei Bedarf, um der kundenspezifischen Rolle weitere Katalogrollen zuzuweisen, die Sie erstellen.
Schritt 4: Benutzer erstellen¶
Verwenden Sie Ihre Snowflake-CLI-Verbindung, um einen Benutzer mit Schlüsselpaar-Authentifizierung in Open Catalog zu erstellen. Ein Mensch kann die Anmeldeinformationen dieses Benutzers nicht verwenden, um sich bei der Open Catalog-UI anzumelden.
Bemerkung
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN.
Um einen Benutzer zu erstellen, führen Sie den folgenden Befehl aus:
snow sql -q "create user <username> login_name='<username>';"
Wobei:
<username>ist der Benutzername, den Sie dem Benutzer mit Schlüsselpaar-Authentifizierung zuweisen möchten.
Schritt 5: Dem Benutzer eine kundenspezifische Rolle zuweisen¶
In diesem Abschnitt verwenden Sie Ihre Snowflake-CLI-Verbindung, um einem oder mehreren Benutzern die kundenspezifische Rolle zuzuweisen. Damit erteilen Sie dem Benutzer die Berechtigungen, die allen Katalogrollen gewährt werden, die der kundenspezifischen Rolle zugewiesen werden. Weitere Informationen zum RBAC-Modell in Open Catalog finden Sie unter RBAC-Modell.
Bemerkung
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN.
Wichtig
Bei kundenspezifischen Rollen wird zwischen Groß- und Kleinschreibung unterschieden. Sie sollten eine kundenspezifische Rolle nur mit Großbuchstaben angeben, auch wenn Sie sie mit Kleinbuchstaben oder mit Klein- und Großbuchstaben erstellen.
Im folgenden Beispiel wird die kundenspezifische Rolle ENGINEER dem Benutzer keypairuser1 zugewiesen.
snow sql -q "GRANT ROLE ENGINEER to user keypairuser1;"
Um zu validieren, ob die Rolle dem Benutzer zugewiesen wurde, gehen Sie wie folgt vor:
snow sql -q "show grants to user keypairuser1;"
Überprüfen Sie in der Antwort, ob die von Ihnen erstellte kundenspezifische Rolle (Spalte role) dem von Ihnen erstellten Benutzer (Spalte grantee_name) zugewiesen ist.
Schritt 6: Ein Zugriffstoken für den Benutzer generieren¶
In diesem Abschnitt generieren Sie ein Zugriffstoken für den Benutzer, das Sie später verwenden, um den Benutzer mittels Schlüsselpaar-Authentifizierung mit Open Catalog zu verbinden.
Die Schritte sind wie folgt:
Einen privaten und öffentlichen Schlüssel generieren¶
In diesem Abschnitt wird beschrieben, wie Sie einen privaten und einen öffentlich Schlüssel generieren.
Um einen privaten Schlüssel zu generieren, verwenden Sie den folgenden Befehl:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Um einen öffentlichen Schlüssel zu generieren, verwenden Sie den folgenden Befehl:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Dem Benutzer einen öffentlichen Schlüssel zuweisen¶
Verwenden Sie Ihre Snowflake-CLI-Verbindung, um dem von Ihnen erstellten Benutzer den öffentlichen Schlüssel zuzuweisen.
Bemerkung
Wenn der standardmäßigen Snowflake-CLI-Verbindung, die Sie eingerichtet haben, nicht die Rolle POLARIS_ACCOUNT_ADMIN zugewiesen ist, müssen Sie in Ihren Befehl die folgende Anweisung aufnehmen: USE ROLE POLARIS_ACCOUNT_ADMIN.
Um dem von Ihnen erstellten Benutzer den öffentlich Schlüssel zuzuweisen, gehen Sie wie folgt vor:
snow sql -q "alter user <username> set RSA_PUBLIC_KEY='<your_public_key>';"
Bemerkung
Wenn Sie Ihren öffentlich Schlüssel abrufen müssen, führen Sie
cat rsa_key.pubaus.Überprüfen Sie, ob der öffentliche Schlüssel (
RSA_PUBLIC_KEY) für den Benutzer eingerichtet ist und ob der Fingerabdruck des öffentlichen RSA-Schlüssels (RSA_PUBLIC_KEY_FP) des Benutzers festgelegt ist:snow sql -q "desc user keypairuser1;"
Ein JWT für einen Benutzer generieren¶
In diesem Schritt generieren Sie ein JWT, das Sie benötigen, um ein Zugriffstoken zu generieren.
Um SnowSQL zum Generieren eines JWT zu verwenden, führen Sie Folgendes aus:
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>
Wobei:
<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen dazu, wie Sie diese Werte in diesem Format abrufen, finden Sie unter Organisations- und Kontonamen abrufen.
<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>ist der Benutzername für einen Open Catalog-Benutzer, wobei dem Benutzer der öffentliche Schlüssel zugewiesen ist.
Wenn Sie ihn verschlüsselt haben, geben Sie den Passkey ein, oder wählen Sie „Enter“, um fortzufahren. Es kann einige Sekunden dauern, bis Sie Ihren JWT erhalten.
Ein Zugriffstoken für den Benutzer generieren¶
Verwenden Sie das JWT, um ein Zugriffstoken für eine kundenspezifische oder integrierte Rolle abzurufen:
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"
Wobei:
<custom_role_name>is the name of A custom role you created, such asENGINEER.<your_JWT>ist das JWT, das Sie im vorherigen Schritt generiert haben.<your_org_name>-<your_open_catalogaccount_name>ist der Name Ihrer Organisation und der Name Ihres Snowflake Open Catalog-Kontos, getrennt durch einen Bindestrich.Beispiel:
ABCDEFG-MYACCOUNT1.Informationen dazu, wie Sie diese Werte in diesem Format abrufen, finden Sie unter Organisations- und Kontonamen abrufen.
Speichern Sie das Zugriffstoken in einer Variable (
$ACCESS_TOKEN).
Schritt 7: Verbindung zu Open Catalog mittels Schlüsselpaar-Authentifizierung herstellen¶
In diesem Abschnitt verbinden Sie den Benutzer über die Schlüsselpaar-Authentifizierung mit Open Catalog. Eine Anleitung finden Sie unter Verbindung zu Open Catalog mittels Schlüsselpaar-Authentifizierung herstellen.
Schlüsselpaar-Rotation konfigurieren¶
Open Catalog unterstützt mehrere aktive Schlüssel, um eine ununterbrochene Rotation zu ermöglichen. Die Schritte zur Konfiguration der Schlüsselpaar-Rotation in Open Catalog sind die gleichen wie in Snowflake. Eine Anleitung finden Sie unter [Schlüsselpaar-Rotation konfigurieren]https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-rotation) in der Snowflake-Dokumentation.
Apache Polaris™ (Incubating) CLI zum Verwalten von Katalogen verwenden¶
Nachdem Sie die Schlüsselpaar-Authentifizierung konfiguriert haben, können Sie ein Service-Administrator-Zugriffstoken generieren, um die Apache Polaris™ (Incubating) CLI zum Einrichten und Verwalten von Katalogen in Open Catalog zu verwenden. Eine Anleitung finden Sie im Handbuch zu Open Catalog mit Polaris in Snowflake Labs.