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_ADMIN eingeben.

Schritt 2: Snowflake-CLI-Verbindung testen

  • Um Ihre CLI-Verbindung zu testen, folgen Sie diesem Beispiel, bei dem die Verbindung für myopencatalogconnection getestet wird:

    snow connection test -c myopencatalogconnection
    
    Copy

    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                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

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.

  1. Folgen Sie diesem Beispiel, bei dem die myopencatalogconnection-Verbindung als Standard festgelegt ist:

    snow connection set-default myopencatalogconnection
    
    Copy
  2. 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();"
    
    Copy

    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 |
    +-----------------------+
    
    Copy

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:

  1. Einen privaten und öffentlich Schlüssel generieren

  2. Den öffentlichen Schlüssel sich selbst zuweisen

  3. Ein JWT für sich selbst generieren

  4. Ein Service-Administrator-Zugriffstoken generieren

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
Copy

Um einen öffentlichen Schlüssel zu generieren, verwenden Sie den folgenden Befehl:

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

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.

  1. 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>';"
    
    Copy

    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.pub aus.

  2. Ü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>;"
    
    Copy

    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.

  1. 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>
    
    Copy

    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, abc12345in https://app.snowflake.com/us-west-2/abc12345/#/.

    • <your_user_name> ist Ihr Open Catalog-Benutzername.

  2. 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.

  1. 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"
    
    Copy

    Wobei:

    • POLARIS_ACCOUNT_ADMIN ist 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;"
Copy

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.

  1. 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();"
    
    Copy
  2. 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:

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:

  1. Eine Katalogrolle erstellen.

  2. Der Katalogrolle Katalogadministratorberechtigungen zuweisen.

  3. Katalogrolle einer kundenspezifischen Rolle zuweisen.

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>"
   }'
Copy
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.

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"}}'
Copy
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_CONTENT ist der Name der Berechtigung in Open Catalog mit Katalogadministratorberechtigungen.

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}}'
Copy
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>.

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:

  1. Eine Katalogrolle erstellen.

  2. Der Katalogrolle Berechtigungen erteilen. Diese Berechtigungen erlauben es dem Benutzer, Aktionen in Open Catalog durchzuführen.

  3. Katalogrolle einer kundenspezifischen Rolle zuweisen.

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>"
   }'
Copy
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.

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>"}}'
Copy
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 unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

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>"}}'
Copy
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 unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

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>"}}'
Copy
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 unter Zugriffssteuerungsrechte <https://other-docs.snowflake.com/en/opencatalog/access-control#access-control-privileges>_.

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}}'
Copy
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.

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.

  1. Um einen Benutzer zu erstellen, führen Sie den folgenden Befehl aus:

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

    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;"
Copy

Um zu validieren, ob die Rolle dem Benutzer zugewiesen wurde, gehen Sie wie folgt vor:

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

Ü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:

  1. Einen privaten und öffentlichen Schlüssel generieren

  2. Den öffentlichen Schlüssel dem Benutzer zuweisen

  3. Ein JWT generieren

  4. Ein Zugriffstoken generieren

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
Copy

Um einen öffentlichen Schlüssel zu generieren, verwenden Sie den folgenden Befehl:

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

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.

  1. 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>';"
    
    Copy

    Bemerkung

    Wenn Sie Ihren öffentlich Schlüssel abrufen müssen, führen Sie cat rsa_key.pub aus.

  2. Ü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;"
    
    Copy

Ein JWT für einen Benutzer generieren

In diesem Schritt generieren Sie ein JWT, das Sie benötigen, um ein Zugriffstoken zu generieren.

  1. 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>
    
    Copy

    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, abc12345in https://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.

  2. 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

  1. 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"
    
    Copy

    Wobei:

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

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

  2. 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.