External OAuth in Snowflake Open Catalog konfigurieren

Unter diesem Thema wird beschrieben, wie Sie externe Server konfigurieren, die OAuth für den Zugriff auf Snowflake Open Catalog verwenden.

Bemerkung

Unter diesem Thema wird gezeigt, wie Sie Auth0 zum Konfigurieren von External OAuth für Open Catalog verwenden. Die Schritte zur Konfiguration in Okta oder Microsoft Entra ID sind ähnlich.

Voraussetzungen

  • Erstellen Sie einen oder mehrere Kataloge in Ihrem Open Catalog-Konto.

  • Stellen Sie sicher, dass Sie über ein Konto bei einem Identitätsanbieter (IdP) verfügen. Zu Demonstrationszwecken wird hier „Auth0“ als IdP verwendet. Weitere Informationen zum Erstellen eines Auth0-Kontos für Ihr Unternehmen oder Ihre Organisation finden Sie unter https://auth0.com/. Der Prozess ist jedoch für Okta und Microsoft Entra ID ähnlich.

  • Auf Ihrem Computer muss Snowflake CLI installiert sein.

  • Um External OAuth konfigurieren zu können, müssen Sie die Rolle des Service- Administrators in Open Catalog besitzen. Weitere Informationen finden Sie unter Benutzerrollen. In Snowflake CLI wird diese Rolle als POLARIS_ACCOUNT_ADMIN ausgegeben.

Bevor Sie beginnen

Um External OAuth zu konfigurieren, müssen Sie eine Snowflake-CLI-Verbindung für Open Catalog erstellen.

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 erstellen

Erstellen Sie eine Snowflake-CLI-Verbindung für Ihr Open Catalog-Konto, sodass Sie darüber External OAuth für das Konto konfigurieren können.

Schritt 1: Eine Snowflake-CLI-Verbindung für Snowflake Open Catalog hinzufügen

  • 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

Schritt 1: Auth0 als External OAuth-Autorisierungsserver einrichten

In diesem Abschnitt richten Sie Auth0 als External OAuth-Autorisierungsserver ein. Die Schritte zur Einrichtung von Microsoft Entra ID oder Okta als External OAuth-Autorisierungsserver ähneln sich.

Bemerkung

Weitere Informationen zum Erstellen eines Auth0-Kontos für Ihr Unternehmen oder Ihre Organisation finden Sie unter https://auth0.com/.

Eine API definieren

Definieren Sie eine API, sodass Sie ihr Berechtigungen zuweisen können.

  1. Melden Sie sich bei der Auth0-Konsole an.

  2. Wählen Sie im linken Bereich Applications > APIs.

  3. Wählen Sie + Create API.

  4. Geben Sie einen Namen und einen Bezeichner ein, und übernehmen Sie die Standardeinstellungen.

  5. Wählen Sie Erstellen.

Berechtigungen zur API hinzufügen

Fügen Sie der API Berechtigungen hinzu, sodass Sie sie dem Client gewähren können.

Dieser Client ist der Prinzipal in Open Catalog, und die Berechtigung, die Sie ihm zuweisen, wird eine Prinzipalrolle in Open Catalog sein.

  1. Melden Sie sich bei der Auth0-Konsole an.

  2. Wählen Sie im linken Bereich Applications > APIs.

  3. Wählen Sie Ihre API aus.

  4. Fügen Sie auf der Registerkarte Berechtigungen Berechtigungen hinzu:

    1. Verwenden Sie die Felder Permission und Description, um Berechtigungen für Ihre API hinzuzufügen. Verwenden Sie das Format SESSION:ROLE:<Name_der_kundenspezifischen_Rolle>. Beispiel: SESSION:ROLE:ENGINEER.

      Wichtig

      Um Ihr Zugriffstoken für den Service-Administrator zu generieren , müssen Sie die Berechtigung SESSION:ROLE:POLARIS_ACCOUNT_ADMIN hinzufügen, mit der Sie die Service-Administrator-Rolle in Open Catalog mit Berechtigungen für die API zuweisen können.

    2. Wählen Sie + Add.

Eine Anwendung erstellen

Erstellen Sie Anwendungen, damit Sie diesen Berechtigungen für die API erteilen können, die Sie erstellt haben.

  1. Melden Sie sich bei der Auth0-Konsole an.

  2. Wählen Sie im linken Bereich Applications > Applications.

  3. Wählen Sie + Create Application, und erstellen Sie eine Anwendung. Wiederholen Sie diesen Schritt, um jede Anwendung zu erstellen, die Sie für die Konfiguration von External OAuth benötigen.

    Wichtig

    Stellen Sie sicher, dass Sie eine Anwendung für die Generierung des Service-Administrator-Zugriffstokens erstellen. Später werden Sie ihr die Berechtigung SESSION:ROLE:POLARIS_ACCOUNT_ADMIN erteilen.

Berechtigungen zur API zuweisen

Führen Sie die folgenden Schritte aus, um die Berechtigungen auszuwählen, die Sie dem Client erteilen möchten:

  1. Melden Sie sich bei der Auth0-Konsole an.

  2. Wählen Sie im linken Bereich Applications > Applications.

  3. Wählen Sie die Anwendung aus, die Sie erstellt haben.

  4. Wählen Sie die Registerkarte APIs aus.

  5. Stellen Sie bei Bedarf den Schalter Authorized für Ihre API auf „On“.

  6. Wählen Sie das Symbol Expand für Ihre API.

  7. Aktivieren Sie im Feld Permissions das Kontrollkästchen für jede Berechtigung, die Sie der API zuweisen möchten.

  8. Wählen Sie Update.

    Wiederholen Sie diese Schritte für jede Anwendung, die Sie erstellt haben.

Wichtig

Stellen Sie sicher, dass Sie die Anwendung auswählen, die Sie für die Generierung des Service-Administrator-Zugriffstokens erstellt haben, und weisen Sie die BerechtigungSESSION:ROLE:POLARIS_ACCOUNT_ADMIN für die API zu. Andernfalls können Sie das Zugriffstoken für den Service-Administrator nicht generieren.

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 Erstellen einer Sicherheitsintegration.

  1. Um den Organisationsnamen und den Namen Ihres Snowflake Open Catalog-Kontos in diesem Format abzurufen, führen Sie in der Snowflake-CLI 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: Sicherheitsintegration erstellen

Um eine Sicherheitsintegration zu erstellen, führen Sie den Befehl CREATE SECURITY INTEGRATION unter Verwendung einer Snowflake-CLI-Verbindung aus.

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

Wobei:

  • <Auth0_domain> ist Ihre Auth0-Domäne. Um diesen Wert zu finden, navigieren Sie in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Domain.

  • <your_org_name>-<your_open_catalog_account_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 4: Service-Administrator-Zugriffstoken generieren

Um External OAuth 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 von External OAuth 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.

Um den Service-Administrator-Zugriffstoken zu generieren, führen Sie in der Snowflake-CLI den folgenden Befehl aus, und kopieren Sie den Wert in einen Texteditor:

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

Wobei:

  • <Auth0_domain> ist Ihre Auth0-Domäne. Um diesen Wert zu finden, navigieren Sie in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Domain.

  • <client_id> ist die Client-ID für Ihre Anwendung in Auth0, der Sie Zugriff auf die Berechtigung POLARIS_ACCOUNT_ADMIN gewähren. Um diesen Wert zu finden, navigieren in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Client ID

  • <client_secret> ist das Clientgeheimnis für Ihre Anwendung in Auth0, der Sie Zugriff auf die Berechtigung POLARIS_ACCOUNT_ADMIN gewähren. Um diesen Wert zu finden, navigieren in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Client Secret

  • <audience> ist der Bezeichner Ihrer API. Um diesen Wert zu finden, navigieren in Auth0 zu Applications > APIs, und wählen Sie Ihre API > Settings > Feld Identifier.

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

  • 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 von External OAuth. Auf der Open Catalog-UI wird diese Rolle als Service-Administrator-Rolle bezeichnet.

Schritt 5: 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 Dienstprinzipal zuweisen können, wodurch dieser Dienstprinzipal mit Berechtigungen ausgestattet wird. 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 6: 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 Dienstprinzipal zu, um dem Dienstprinzipal 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_external_oauth.

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

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

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

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

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

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 ermöglichen es dem Dienstprinzipal, 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_external_oauth.

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

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

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

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

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

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

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

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

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

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

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

  • <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 7: Einen Dienstprinzipal erstellen

In diesem Schritt verwenden Sie Ihre Snowflake-CLI-Verbindung, um einen Dienstprinzipal zu erstellen.

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 eine Verbindung zu Open Catalog über External OAuth herzustellen, benötigen wir einen Dienstprinzipal. In Open Catalog sind Dienstprinzipale Benutzer, für die der Parameter TYPE auf service festgelegt ist. Wir werden also den Befehl CREATE USER verwenden, um einen Benutzer vom TYPE=service zu erstellen.

Um einen Dienstprinzipal zu erstellen, führen Sie den folgenden Befehl aus:

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

Wobei:

  • Geben Sie unter <user_name>einen Namen für den Dienstprinzipal an.

  • Geben Sie unter <client_id> die Client-ID für Ihre Anwendung an. Um diesen Wert zu finden, navigieren in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Client ID

Schritt 8: Dem Dienstprinzipal eine kundenspezifische Rolle zuweisen

In diesem Abschnitt verwenden Sie Ihre Snowflake-CLI-Verbindung, um die kundenspezifisch Rolle einem oder mehreren Dienstprinzipalen zuzuweisen. Damit geben Sie dem Dienstprinzipal die Berechtigungen, die für alle Katalogrollen gewährt werden, die der kundenspezifischen Rolle zugewiesen sind. 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 Dienstprinzipalservice_principal1 zugewiesen.

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

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

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

Überprüfen Sie in der Antwort, ob die von Ihnen erstellte kundenspezifische Rolle (Spalte role) dem von Ihnen erstellten Dienstprinzipal (Spalte grantee_name) zugewiesen ist.

(Optional) Schritt 9: Zugriffstoken generieren

In diesem Abschnitt können Sie ein Zugriffstoken generieren, das Sie verwenden können, um eine Verbindung zu Open Catalog mit External OAuth herzustellen. Wenn Sie eine Verbindung mit dieser Methode herstellen, müssen Sie das Zugriffstoken allerdings manuell aktualisieren.

Alternativ können Sie diesen Schritt überspringen und sich später mit Open Catalog mithilfe eines automatischen Aktualisierungstokens verbinden, was die bevorzugte Methode ist.

Verwenden Sie den folgenden curl-Befehl, um ein Zugriffstoken zu generieren:

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

Wobei:

  • <Auth0_domain> ist Ihre Auth0-Domäne. Um diesen Wert zu finden, navigieren Sie in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Domain.

  • <client_id> ist die Client-ID für Ihre Anwendung in Auth0. Um diesen Wert zu finden, navigieren in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Client ID

  • <client_secret> ist das Clientgeheimnis für Ihre Anwendung in Auth0. Um diesen Wert zu finden, navigieren Sie in Auth0 zu Applications > Applications > [Name Ihrer Anwendung] > Settings > Feld Client Secret.

  • <audience> ist der Bezeichner Ihrer API. Um diesen Wert zu finden, navigieren Sie in Auth0 zu Applications > APIs > wählen Sie Ihre API aus > Settings

    Feld Identifier.

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

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

Schritt 10: Verbindung zu Open Catalog mit External OAuth herstellen

In diesem Abschnitt verbinden Sie den Dienstprinzipal über External OAuth mit Open Catalog. Anleitungen finden Sie unter Verbindung zu Snowflake Open Catalog mit External OAuth herstellen. Diese beinhalten auch Anweisungen für die Verbindung mithilfe eines Zugriffstokens oder einer automatischen Tokenaktualisierung.