Objekt-Tagging

Unter diesem Thema werden die Konzepte und Anweisungen zur Verwendung von Tags in Snowflake beschrieben.

Weitere Informationen zur Verwendung einer Maskierungsrichtlinie bei einem Tag finden Sie unter Tag-basierte Maskierungsrichtlinien.

Unter diesem Thema:

Was ist ein Tag?

Tags bieten Datenverwaltern die Möglichkeit, sensible Daten für Compliance-, Erkennungs-, Schutz- und Ressourcennutzungszwecke über einen zentralen oder dezentralen Data Governance-Verwaltungsansatz zu überwachen.

Ein Tag ist ein Objekt auf Schemaebene, das einem anderen Snowflake-Objekt zugewiesen werden kann. Einem Tag kann ein beliebiger Zeichenfolgenwert zugewiesen werden, wenn das Tag einem Snowflake-Objekt zugeordnet wird. Snowflake speichert das Tag und seinen Zeichenfolgenwert als Schlüssel-Wert-Paar. Das Tag muss für Ihr Schema eindeutig sein, wobei der Tag-Wert immer eine Zeichenfolge ist.

Sie erstellen einen Tag mit einer CREATE TAG-Anweisung und geben den Tag-Zeichenfolgenwert an, wenn Sie das Tag einem Objekt zuweisen. Das Tag kann einem Objekt beim Erstellen des Objekts mit einer CREATE <Objekt>-Anweisung zugewiesen werden, vorausgesetzt, das Tag ist bereits vorhanden. Alternativ können Sie das Tag mit einer ALTER <Objekt>-Anweisung einem vorhandenen Objekt zuweisen.

Ein einziges Tag kann gleichzeitig verschiedenen Objekttypen zugewiesen werden (z. B. Warehouse und Tabelle gleichzeitig). Zum Zeitpunkt der Zuweisung zum Snowflake-Objekt kann der Zeichenfolgenwert des Tags dupliziert werden oder eindeutig bleiben. So kann z. B. mehreren Tabellen das Tag „cost_center“ zugewiesen werden, und das Tag kann immer den Zeichenfolgenwert „sales“ haben. Alternativ kann der Zeichenfolgenwert auch anders lauten (z. B. „engineering“, „marketing“, „finance“). Nach dem Definieren der Tags und deren Zuweisung zu Snowflake-Objekten können die Tags abgefragt werden, um die Nutzung der Objekte zu überwachen und so Data Governance-Operationen wie Überwachung, Auditing und Reporting zu vereinfachen.

Da Tags Tabellen, Ansichten und Spalten zugewiesen werden können, ermöglicht das Setzen eines Tags und die anschließende Abfrage des Tags die Erkennung einer Vielzahl von Datenbankobjekten und -spalten, die sensible Informationen enthalten. Nach dem Erkennen können die Datenverwalter bestimmen, wie die Verfügbarkeit der Daten am besten gesteuert werden kann, z. B. durch selektive Filterung mithilfe von Zeilenzugriffsrichtlinien oder mithilfe von Maskierungsrichtlinien, um zu bestimmen, ob die Daten tokenisiert, vollständig maskiert, teilweise maskiert oder nicht maskiert sind.

Das Zuweisen von Tags zu Warehouses ermöglicht eine genaue Überwachung der Ressourcennutzung. Das Abfragen von Ressourcen-Tags ermöglicht eine einfache Gruppierung von Ressourcen nach Kostenstellen oder anderen Organisationseinheiten. Darüber hinaus kann das Tag die Analyse relativ kurzfristiger Geschäftsaktivitäten, wie z. B. Projekte, erleichtern, um detailliertere Informationen darüber zu erhalten, wann welche Ressourcen wie verwendet wurden.

Tag-Kontingente für Objekte und Spalten

Der Zeichenfolgenwert für jedes Tag kann bis zu 256 Zeichen lang sein mit der Option, zulässige Werte für ein Tag anzugeben.

Die folgende Beschreibung gilt für alle Objekte, die keine Tabellen und Ansichten sind:

Snowflake erlaubt eine maximale Anzahl von 50 eindeutigen Tags, die für ein einzelnes Objekt gesetzt werden können. In einer einzelnen CREATE <Objekt>- oder ALTER <Objekt>-Anweisung können maximal 100 Tags angegeben werden.

Die maximale Anzahl eindeutiger Tags ist für Tabellen und Ansichten, einschließlich der Spalten in diesen Tabellen und Ansichten, leicht unterschiedlich.

Tabellen, Ansichten und Spalten

Für eine Tabelle oder Ansicht und deren Spalten können maximale 100 eindeutigen Tags in einer einzelnen CREATE <Objekt>- oder ALTER <Objekt>-Anweisung angegeben werden. Für diesen Gesamtwert gelten die folgenden Limits:

  • Ein einzelnes Tabellen- oder Ansichtsobjekt: 50 eindeutige Tags.

  • Alle Spalten kombiniert in einer einzigen Tabelle oder Ansicht: 50 eindeutige Tags.

Wenn beispielsweise für eine einzelne Spalte in einer Tabelle 10 eindeutige Tags gesetzt wurden, erlaubt Snowflake Folgendes:

  • Setzen von 40 weiteren eindeutigen Tags entweder auf dieselbe Spalte, auf andere Spalten in der Tabelle oder auf eine Kombination von Spalten der Tabelle.

  • Setzen von 50 weiteren eindeutigen Tags auf die Tabelle selbst.

Sobald die Grenze von 50 eindeutigen Tags für die Tabelle selbst oder deren Spalten erreicht ist, können keine weiteren Tags auf die Tabelle oder deren Spalten gesetzt werden. Wenn nun der Wunsch besteht, der Tabelle oder ihren Spalten zusätzliche Tags zuzuweisen, ist der nächste Schritt die Frage, wie die Tag-Kontingente eines Objekts verwaltet werden können.

Tag-Kontingente verwalten

Die maximale Anzahl von 50 eindeutigen Tags umfasst gelöschte Tags für einen Zeitraum von 24 Stunden ab dem Zeitpunkt, an dem das Tag mit einer DROP TAG-Anweisung gelöscht wurde. Der Grund für diese Zeitspanne ist, dass der Benutzer, der das Tag gelöscht hat, eine UNDROP TAG-Anweisung ausführen kann, falls erforderlich. Wenn die UNDROP TAG-Operation innerhalb des 24-Stunden-Zeitintervalls ausgeführt wird, stellt Snowflake die Tag-Zuweisung (d. h. Referenzen) wieder her, die vor der DROP TAG-Operation aktuell waren.

Nach Ablauf des Zeitraums von 24 Stunden löscht Snowflake alle Referenzen, die sich auf das gelöschte Tag beziehen. An diesem Punkt kann dem Objekt oder der Spalte, das/die früher auf das gelöschte Tag verwiesen hat, ein neues Tag zugewiesen werden.

Gehen Sie wie folgt vor, um die Tag-Kontingente für ein Objekt zu verwalten:

  1. Fragen Sie die Ansicht TAG_REFERENCES (in Account Usage) ab, um die Tag-Zuweisungen zu ermitteln.

  2. Entfernen Sie das Tag von dem Objekt oder der Spalte. Beispiel:

    Für Objekte verwenden Sie den entsprechenden Befehl ALTER <Objekt> ... UNSET TAG.

    Für die Spalte einer Tabelle oder Ansicht verwenden Sie den entsprechenden Befehl ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG.

  3. Löschen Sie das Tag mit einer DROP TAG-Anweisung.

Tag-Werte angeben

Mit der Tag-Eigenschaft ALLOWED_VALUES können die möglichen Zeichenfolgenwerte angegeben werden, die dem Tag zugewiesen werden können, wenn das Tag auf ein Objekt gesetzt wird. Die maximale Anzahl möglicher Zeichenfolgenwerte für ein einzelnes Tag ist 300.

Sie können diese Werte beim Erstellen oder Ersetzen eines Tags mit einer CREATE TAG-Anweisung oder beim Ändern eines vorhandenen Tag-Schlüssels mit einer ALTER TAG-Anweisung angeben. Beachten Sie, dass die Anweisung ALTER TAG das Hinzufügen zulässiger Werte für ein Tag und das Löschen vorhandener Werte für ein Tag unterstützt.

Um die Liste der zulässigen Werte für ein Tag zu ermitteln, rufen Sie die Funktion GET_DDL oder die Funktion SYSTEM$GET_TAG_ALLOWED_VALUES auf.

Beispiel:

Erstellen Sie ein Tag mit dem Namen cost_center mit 'finance' und 'engineering' als den beiden einzigen zulässigen Zeichenfolgenwerten:

create tag cost_center
    allowed_values 'finance', 'engineering';
Copy

Prüfen Sie die zulässigen Werte:

select get_ddl('tag', 'cost_center')

+------------------------------------------------------------------------------+
| GET_DDL('tag', 'cost_center')                                                |
|------------------------------------------------------------------------------|
| create or replace tag cost_center allowed_values = 'finance', 'engineering'; |
+------------------------------------------------------------------------------+
Copy

Ändern Sie das Tag mit dem Namen cost_center, um 'marketing' als zulässigen Zeichenfolgenwert hinzuzufügen:

alter tag cost_center
    add allowed_values 'marketing';
Copy

Ändern Sie das Tag mit dem Namen cost_center, um 'engineering' als zulässigen Zeichenfolgenwert zu entfernen:

alter tag cost_center
    drop allowed_values 'engineering';
Copy

Um die Liste der zulässigen Zeichenfolgenwerte für ein bestimmtes Tag zu erhalten, rufen Sie entweder die Funktion GET_DDL oder die Funktion SYSTEM$GET_TAG_ALLOWED_VALUES auf. Angenommen, das Tag cost_center ist in einer Datenbank namens governance und einem Schema namens tags gespeichert:

select system$get_tag_allowed_values('governance.tags.cost_center');

+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+
Copy

Tag-Herkunft

Ein Tag wird basierend auf der Hierarchie der sicherbaren Snowflake-Objekte vererbt. Snowflake empfiehlt, dass sich die Definition der Tag-Schlüssel so nah wie möglich an der Hierarchie der sicherbaren Objekte in Ihrer Snowflake-Umgebung orientieren sollte.

Der Tag-Administrator kann Maskierungsrichtlinien auf Tabellen und Ansichten anwenden.

Tag-Vererbung bedeutet, dass ein Tag, das auf eine Tabelle angewendet wird, auch für die Spalten in dieser Tabelle gilt. Dieses Verhalten wird als „Tag-Herkunft“ bezeichnet.

Es ist möglich, das geerbte Tag eines bestimmten Objekts zu überschreiben. Wenn beispielsweise eine Tabellenspalte das Tag „cost_center“ erbt, kann das Tag durch ein Tag mit einem spezifischeren Zeichenfolgenwert wie „sales_na“ ersetzt werden, mit dem die Vertriebskostenstelle „Nordamerika“ angegeben wird. Zusätzlich kann ein neues Tag auf die Tabellenspalte angewendet werden. Verwenden Sie eine ALTER TABLE … ALTER COLUMN-Anweisung, um den Tag-Zeichenfolgenwert der Spalte zu aktualisieren und um ein oder mehrere zusätzliche Tags für eine Spalte festzulegen.

Nachdem Sie die Tag-Schlüssel definiert und die Tags den Snowflake-Objekten zugewiesen haben, können Sie die Tags, die Tag-Referenzen und die Tag-Herkunft mithilfe der angegebenen Tabellenfunktionen oder durch Abfragen der Ansichten überwachen, wie unter Tags mit SQL überwachen (unter diesem Thema) gezeigt.

Bemerkung

Die Tag-Herkunft schließt nicht die Verbreitung auf verschachtelte Objekte ein. Beispiel:

table_1 » view_1 » materialized_view_1

Wenn verschachtelte Objekte bereits in Bezug auf eine zugrunde liegende Tabelle oder Ansicht vorhanden sind, führt ein auf das zugrunde liegende Objekt gesetztes Tag nicht automatisch dazu, dass auch auf das verschachtelte Objekt ein Tag gesetzt wird. In diesem Beispiel führt ein auf table_1 gesetztes Tag nicht dazu, dass dasselbe Tag auf view_1 und materialized_view_1 gesetzt wird. Dieses Verhalten gilt auch für Spalten.

Wenn es erforderlich ist, dass Tags von darunter liegenden Objekten oder Spalten auf verschachtelte Objekte übertragen werden, führen Sie eine CREATE OR REPLACE-Anweisung auf dem verschachtelten Objekt aus, und Sie stellen sicher, dass die SQL-Anweisung das Tag auf dem verschachtelten Objekt oder der Spalte angibt.

Vorteile

Benutzerfreundlichkeit:

Ein Tag wird einmal definiert und kann dann auf beliebig viele verschiedene Objekte angewendet werden.

Tag-Herkunft:

Da Tags vererbt werden, führt die Anwendung des Tags auf Objekte, die in der Hierarchie der sicherbaren Objekte höher stehen, dazu, dass das Tag auf alle untergeordneten Objekte angewendet wird. Wird beispielsweise ein Tag für eine Tabelle festgelegt, so wird das Tag an alle Spalten in dieser Tabelle vererbt.

Konsistente Zuweisung mit Replikation:

Snowflake repliziert die Tags und deren Zuweisungen innerhalb der Primärdatenbank auch in die Sekundärdatenbank.

Weitere Informationen dazu finden Sie unter Replikation (unter diesem Thema).

Verfolgen von sensiblen Daten und der Ressourcennutzung:

Tags vereinfachen das Identifizieren von sensiblen Daten (z. B. PII, Geheimnis) und machen die Nutzung von Snowflake-Ressourcen transparent. Da sich Daten und Metadaten im gleichen System befinden, können Analysten anhand der Tag-Definition (z B. cost_center, department) schnell feststellen, welche Ressourcen die meisten Snowflake-Credits verbrauchen.

Zentrale oder dezentrale Verwaltung:

Tags unterstützen verschiedene Verwaltungsansätze, um die Konformität mit internen und externen Vorschriften zu vereinfachen.

Bei einem zentralen Ansatz werden Tags von der kundenspezifischen Rolle tag_admin erstellt und auf Snowflake-Objekte angewendet.

Bei einem dezentralen Ansatz werden die Tags zwar von der kundenspezifischen Rolle tag_admin definiert, um eine einheitliche Benennung sicherzustellen, aber die Anwendung der Tags auf die Snowflake-Objekte erfolgt durch einzelne Teams.

Hinweise

Zukünftige Berechtigungszuweisungen:

Zukünftige Berechtigungszuweisungen zu Tags werden nicht unterstützt.

Als Problemumgehung können Sie einer kundenspezifischen Rolle die Berechtigung APPLYTAG erteilen, damit diese Rolle Tags auf andere Objekte anwenden kann.

Snowflake Native App:

Seien Sie vorsichtig, wenn Sie das Setup-Skript erstellen und Tags in einem versionierten Schema vorliegen. Weitere Informationen dazu finden Sie unter Hinweise zum Versionsschema.

Tags mit Snowflake-Objekten und -Features verwenden

Im Folgenden wird beschrieben, wie sich Tags auf Objekte und Features in Snowflake auswirken.

Unterstützte Objekte

In der folgenden Tabelle sind die unterstützten Objekte für Tags, einschließlich Spalten, basierend auf der Hierarchie der sicherbaren Snowflake-Objekte aufgeführt.

Ein Tag kann mit einer CREATE <Objekt>-Anweisung oder einer ALTER <Objekt>-Anweisung auf ein Objekt festgelegt werden, sofern in der nachstehenden Tabelle nichts anderes angegeben ist.

Ein Tag kann für eine Spalte entweder mit einer CREATE TABLE-, CREATE VIEW-, ALTER TABLE … MODIFY COLUMN- oder ALTER VIEW-Anweisung gesetzt werden.

Objekthierarchie

Unterstützte Objekte

Anmerkungen

Organisation

Konto

Ein Tag kann über eine Rolle mit der globalen Berechtigung APPLY TAG auf Ihr aktuelles Konto gesetzt werden.

Konto

Anwendung

Anwendungspaket

Datenbank

Integration

Alle Typen werden unterstützt.

Verwenden Sie einen ALTER INTEGRATION-Befehl, um ein Tag für die Integration festzulegen.

Netzwerkrichtlinie

Verwenden Sie einen ALTER NETWORK POLICY-Befehl, um ein Tag auf eine Netzwerkrichtlinie zu setzen.

Rolle

Freigabe

Die Tags auf Freigaben werden vom Data Sharing-Anbieter gesetzt. Diese Tags sind für den Data Sharing-Verbraucher nicht sichtbar. Verwenden Sie einen ALTER SHARE-Befehl, um ein Tag für die Freigabe festzulegen.

Benutzer

Warehouse

Datenbank

Datenbankrolle

Verwenden Sie einen ALTER DATABASE ROLE-Befehl, um ein Tag auf eine Datenbankrolle zu setzen.

Schema

Schema

Alert

Externe Funktion und UDF

Verwenden Sie einen ALTER FUNCTION-Befehl, um ein Tag auf eine externe Funktion oder UDF zu setzen.

Externe Tabelle

Sie können eine externe Tabelle mit einem Tag mit einer CREATE EXTERNAL TABLE-Anweisung erstellen.

Um Tag-Zuweisungen auf einer externen Tabelle zu verwalten, verwenden Sie den Befehl ALTER TABLE.

Iceberg-Tabelle

Materialisierte Ansicht

Pipe

Setzen Sie ein Tag auf eine Pipe mit einer ALTER PIPE-Anweisung.

Richtlinie

Setzen Sie ein Tag auf eine Richtlinie für Maskierung, Kennwort, Zeilenzugriff oder Sitzung mit der entsprechenden ALTER <Richtlinie>-Anweisung.

Prozedur

Setzen Sie ein Tag auf eine gespeicherte Prozedur mit einer ALTER PROCEDURE-Anweisung.

Stagingbereich

Setzen Sie ein Tag auf einen Stagingbereich mit einer ALTER STAGE-Anweisung.

Stream

Tabelle

Aufgabe

Setzen Sie ein Tag auf eine Aufgabe mit einer ALTER TASK-Anweisung.

Ansicht

Tabelle oder Ansicht

Spalte

Enthält Ereignistabellen.

Objekt-Tagging und Maskierungsrichtlinien

Weitere Details dazu finden Sie unter Tag-basierte Maskierungsrichtlinien.

Beachten Sie, dass eine Maskierungsrichtlinie, die einer Spalte direkt zugewiesen ist, Vorrang vor einer Tag-basierten Maskierungsrichtlinie hat.

CREATE TABLE-Anweisungen

Mit CREATE TABLE … LIKE werden die der Quelltabelle zugewiesenen Tags der Zieltabelle zugewiesen.

Replikation

Tags und deren Zuweisungen können von einem Quellkonto in ein Zielkonto repliziert werden.

Tag-Zuweisungen können nach der ersten Replikation vom Quellkonto im Zielkonto nicht mehr geändert werden. So ist beispielsweise das Setzen eines Tags auf eine Sekundärdatenbank (d. h. eine replizierte Datenbank) nicht zulässig. Um Tag-Zuweisungen im Zielkonto zu ändern, ändern Sie diese im Quellkonto, und replizieren Sie sie dann in das Zielkonto.

Bei der Datenbankreplikation kann die Replikationsoperation fehlschlagen, wenn eine der folgenden Bedingungen erfüllt ist:

  • Die Primärdatenbank befindet sich in einem Enterprise-Konto (oder höher) und enthält ein Tag, aber mindestens eines der zur Replikation genehmigten Konten befindet sich in einer niedrigeren Edition.

  • Ein in der Primärdatenbank enthaltenes Objekt hat eine verwaiste Referenz auf ein Tag in einer anderen Datenbank.

Um Fehler durch verwaiste Referenzen zu vermeiden, replizieren Sie die Datenbank und die Objekte auf Kontoebene mit einer Replikations- oder Failover-Gruppe. Stellen Sie sicher, dass die Replikationsgruppe Folgendes enthält:

  • Die Datenbank, die die Tags in der Eigenschaft ALLOWED_DATABASES enthält.

  • Andere Objekte auf Kontoebene, die ein Tag in der Eigenschaft OBJECT_TYPES haben (z. B. ROLES, WAREHOUSES).

    Weitere Informationen dazu finden Sie unter CREATE REPLICATION GROUP und CREATE FAILOVER GROUP.

Bemerkung

Bei Verwendung von Replikations-/Failover-Gruppen oder Datenbankreplikation:

  • Failover/Failback-Features sind nur für Snowflake-Konten mit Business Critical Edition (oder höher) verfügbar.

    Weitere Informationen dazu finden Sie unter Einführung in Replikation und Failover über mehrere Konten.

  • Wenn Sie die IGNORE EDITION CHECK-Klausel für die Datenbankreplikation in einer ALTER DATABASE-Anweisung oder in einer CREATE OR ALTER-Anweisung für eine Replikations- oder Failover-Gruppe angeben, kann eine Tag-Replikation erfolgen, wenn das Zielkonto eine niedrigere Edition als Business Critical aufweist.

    Weitere Informationen dazu finden Sie in der Klauselbeschreibung unter dem jeweiligen Befehl.

Klonen

  • Tag-Zuordnungen im Quellobjekt (z. B. Tabelle) bleiben in den geklonten Objekten erhalten.

  • Für eine Datenbank oder ein Schema:

    Die in dieser Datenbank oder diesem Schema gespeicherten Tags werden ebenfalls geklont.

    Wenn eine Datenbank oder ein Schema geklont wird, werden die Tags, die sich in diesem Schema oder dieser Datenbank befinden, ebenfalls geklont.

    Wenn eine Tabelle oder Ansicht im Quellschema bzw. in der Quelldatenbank vorhanden ist und Verweise auf Tags in demselben Schema oder derselben Datenbank hat, wird die geklonte Tabelle oder Ansicht dem entsprechenden geklonten Tag (im Zielschema bzw. in der Zieldatenbank) zugeordnet und nicht dem Tag im Quellschema bzw. der Quelldatenbank.

Data Sharing (Datenfreigabe)

  • Wenn die freigegebene Ansicht und das freigegebene Tag in verschiedenen Datenbanken vorhanden sind, erteilen Sie der Freigabe die REFERENCE_USAGE-Berechtigung für die Datenbank, die das Tag enthält. Weitere Details dazu finden Sie unter Freigeben von Daten aus mehreren Datenbanken.

  • Für das Data Sharing-Verbraucherkonto gilt Folgendes:

    • Bei Ausführung von SHOW TAGS wird das freigegebene Tag zurückgegeben, vorausgesetzt, die Rolle, die den Befehl SHOW TAGS ausführt, verfügt über die USAGE-Berechtigung für das Schema, das das freigegebene Tag enthält.

      Wenn der Anbieter der Freigabe oder einer Rolle der freigegebenen Datenbank die READ-Berechtigung für das Tag erteilt, kann der Verbraucher die Tag-Zuweisungen für das freigegebene Tag anzeigen. Weitere Informationen finden Sie unter Referenzen für freigegebene Tags.

    • Wenn ein Tag des Data Sharing-Anbieterkontos einer freigegebenen Tabelle zugewiesen ist, kann der Data Sharing-Verbraucher die Funktion SYSTEM$GET_TAG oder die Information Schema-Funktion TAG_REFERENCES aufrufen, um die Tag-Zuweisung anzuzeigen.

Tags erstellen und zuweisen

Tags können in Snowflake im Allgemeinen für Folgendes verwendet werden:

  • Tag mit CREATE TAG-Anweisung erstellen

  • Weisen Sie einem vorhandenen Snowflake-Objekt mit Snowsight oder einem ALTER <Objekt>-Befehl ein Tag zu.

    Beachten Sie, dass Sie einem neuen Objekt ein Tag mit dem CREATE <Objekt>-Befehl zuweisen können. Weitere Informationen zum Bewerten der Objekte, die das Zuweisen eines Tags mit dem ALTER <Objekt>-Befehl unterstützen, finden Sie im Abschnitt Unterstützte Objekte unter diesem Thema.

Nachdem Sie Tags zugewiesen haben, können Sie die Tag-Nutzung mit SQL oder Snowsight überwachen. Weitere Informationen dazu finden Sie unter Tags mit SQL überwachen und Tags mit Snowsight überwachen (unter diesem Thema).

Der Einfachheit halber wird in diesem Workflow von einem zentralen Verwaltungsansatz für Tags ausgegangen, bei dem die kundenspezifische Rolle tag_admin sowohl die CREATE TAG- als auch die APPLY TAG-Berechtigungen besitzt.

  1. Erstellen Sie eine kundenspezifische Rolle, und weisen Sie die Berechtigungen zu.

    In einem zentralen Verwaltungsansatz ist die kundenspezifische Rolle tag_admin für die Erstellung und Zuweisung von Tags zu Snowflake-Objekten zuständig.

    Beachten Sie, dass in diesem Beispiel die Systemrolle ACCOUNTADMIN verwendet wird. Wenn die Verwendung dieser Rolle mit deren höheren Berechtigungen in einer Produktionsumgebung nicht erwünscht ist, überprüfen Sie, ob die Rolle, die der kundenspezifischen Rolle tag_admin Berechtigungen zuweist, über die notwendigen Berechtigungen verfügt, um die kundenspezifische Rolle tag_admin zu qualifizieren. Weitere Informationen dazu finden Sie unter Tags verwalten (unter diesem Thema).

    USE ROLE USERADMIN;
    CREATE ROLE tag_admin;
    USE ROLE ACCOUNTADMIN;
    GRANT CREATE TAG ON SCHEMA mydb.mysch TO ROLE tag_admin;
    GRANT APPLY TAG ON ACCOUNT TO ROLE tag_admin;
    
    Copy
  2. Weisen Sie einem Benutzer, der als Tag-Administrator fungiert, die kundenspezifische Rolle tag_admin zu.

    USE ROLE USERADMIN;
    GRANT ROLE tag_admin TO USER jsmith;
    
    Copy
  3. Führen Sie eine CREATE TAG-Anweisung aus, um ein Tag zu erstellen.

    USE ROLE tag_admin;
    USE SCHEMA mydb.mysch;
    CREATE TAG cost_center;
    
    Copy
  4. Weisen Sie ein Tag einem Snowflake-Objekt oder einer Spalte zu

    SQL:

    Sie können ein Tag mit einem ALTER <Objekt>-Befehl auf alle unterstützten Objekte und Spalten setzen, die vorhanden sind. Einige Objekte unterstützen das Setzen eines Tags beim Erstellen oder Ersetzen des Objekts. Weitere Informationen dazu finden Sie in der Tabelle im Abschnitt Unterstützte Objekte (unter diesem Thema).

    Beispiel:

    • Um ein Tag einem neuen Warehouse zuzuweisen, verwenden Sie den Befehl CREATE WAREHOUSE.

      USE ROLE tag_admin;
      CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
      
      Copy
    • Um ein Tag einem vorhandenen Warehouse zuzuweisen, verwenden Sie den Befehl ALTER WAREHOUSE.

      USE ROLE tag_admin;
      ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
      
      Copy
    • Um ein Tag einer vorhandenen Spalte zuzuweisen, verwenden Sie bei einer Tabellenspalte den Befehl ALTER TABLE … MODIFY COLUMN und bei einer Ansichtsspalte den Befehl ALTER VIEW … MODIFY COLUMN. Beachten Sie, dass mit einer einzelnen Anweisung auch mehrere Tags zugeordnet oder entzogen werden können.

      ALTER TABLE hr.tables.empl_info
        MODIFY COLUMN job_title
        SET TAG visibility = 'public';
      
      Copy
    Snowsight:

    Mit Snowsight können Sie ein Tag auf bestehende Tabellen, Views und Spalten setzen.

    Es gibt mehrere Möglichkeiten, einen Tag zu setzen:

    • Navigieren Sie mit dem Objekt-Explorer zur gewünschten Tabelle, Ansicht oder Spalte (z. B. Data » Databases).

      Wählen Sie im More-Menü (d. h. ...) » Edit aus, und wählen dann Sie + Tag aus. Befolgen Sie die Anweisungen, um die Tag-Zuweisung zu verwalten.

    • Navigieren Sie in Snowsight zum Governance-Bereich (d. h. Monitoring » Governance), und gehen Sie wie folgt vor:

      • Wählen Sie eine Kachel, einen Verteilungsprozentsatz und einen der am häufigsten verwendeten Tags oder Tabellen aus. Wenn Sie im Dashboard ein Element auswählen, leitet Snowsight Sie zur Registerkarte Tagged Objects weiter.

      • Ändern Sie die Filter nach Bedarf. Wenn Sie ein Objekt oder eine Spalte auswählen, leitet Snowsight Sie zu dessen/deren Position im Objekt-Explorer weiter. Aktualisieren Sie die Tag-Zuweisung nach Bedarf.

    • Navigieren Sie direkt zur Registerkarte Tagged Objects. Ändern Sie die Filter, wählen Sie ein Objekt oder eine Spalte aus, und verwalten Sie die Tag-Zuweisungen.

    Bemerkung

    Führen Sie einen der folgenden Schritte aus, um auf den Governance-Bereich zuzugreifen:

    • Verwenden Sie die Rolle ACCOUNTADMIN.

    • Verwenden Sie eine Rolle, der die Datenbankrollen GOVERNANCE_VIEWER und OBJECT_VIEWER zugewiesen sind.

      Weitere Informationen zu diesen Datenbankrollen finden Sie unter SNOWFLAKE-Datenbankrollen.

Tags mit SQL überwachen

Sie können Tags mit SQL überwachen, indem Sie zwei verschiedene Account Usage-Ansichten, zwei Information Schema-Tabellenfunktion, eine Account Usage-Tabellenfunktion und eine Systemfunktion verwenden.

Es kann hilfreich sein, sich zwei allgemeine Ansätze vorzustellen, um zu bestimmen, wie die Tag-Nutzung überwacht werden soll:

Tags ermitteln

Snowflake unterstützt die folgenden Optionen, um Tags aufzulisten und den Tag-Zeichenfolgenwert eines bestimmten Tag-Schlüssels zu identifizieren.

  • Identifizieren von Tags in Ihrem Konto:

    Verwenden Sie die Ansicht TAGS im Account Usage-Schema der freigegebenen SNOWFLAKE-Datenbank. Diese Ansicht fungiert wie ein Katalog für alle Tags in Ihrem Snowflake-Konto, der Informationen über aktuelle und gelöschte Tags enthält. Beispiel:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
    ORDER BY TAG_NAME;
    
    Copy
  • Identifizieren des Werts eines bestimmten Tags:

    Verwenden Sie die Systemfunktion SYSTEM$GET_TAG, um den Tag-Wert, der dem angegebenen Tag zugewiesen ist, sowie das Snowflake-Objekt oder die Spalte zurückzugeben.

    SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
    
    Copy

Zuweisungen identifizieren

Snowflake unterstützt verschiedene Optionen zur Identifizierung von Tag-Zuweisungen, je nachdem, ob die Abfrage auf das Konto oder eine bestimmte Datenbank abzielen soll und ob eine Tag-Herkunft benötigt wird.

  • Abfrage auf Kontoebene mit Herkunft:

    Verwenden Sie die Account Usage-Tabellenfunktion TAG_REFERENCES_WITH_LINEAGE, um alle Objekte zu ermitteln, die einen bestimmten Tag-Schlüssel und Tag-Wert haben, der auch die Tag-Herkunft enthält:

    SELECT *
    FROM TABLE(
      snowflake.account_usage.tag_references_with_lineage(
        'my_db.my_schema.cost_center'
      )
    );
    
    Copy
  • Abfrage auf Kontoebene ohne Herkunft:

    Verwenden Sie die Account Usage-Ansicht TAG_REFERENCES, um alle Objekte zu ermitteln, die einen bestimmten Tag-Schlüssel und Tag-Wert haben, aber nicht die Tag-Herkunft enthalten:

    SELECT * FROM snowflake.account_usage.tag_references
    ORDER BY TAG_NAME, DOMAIN, OBJECT_ID;
    
    Copy
  • Abfrage auf Datenbankebene mit Herkunft:

    Jede Snowflake-Datenbank enthält ein Snowflake Information Schema. Verwenden Sie die Information Schema-Tabellenfunktion TAG_REFERENCES, um alle Objekte zu ermitteln, die ein bestimmtes Tag haben, das auch die Tag-Herkunft in einer bestimmten Datenbank enthält:

    SELECT *
    FROM TABLE(
      my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
        'my_table',
        'table'
      )
    );
    
    Copy
  • Abfrage auf Datenbankebene nach allen Tags für jede Spalte in einer Tabelle oder Ansicht mit Herkunft:

    Verwenden Sie die Information Schema-Tabellenfunktion TAG_REFERENCES_ALL_COLUMNS, um alle Tags zu erhalten, die auf jeder Spalte einer gegebenen Tabelle oder Ansicht festgelegt sind:

    Beachten Sie, dass die Domäne TABLE für alle Objekte verwendet werden muss, die Spalten enthalten, auch wenn der Objektname eine Ansicht ist (d. h. Ansicht, materialisierte Ansicht).

    SELECT *
    FROM TABLE(
      INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'my_table',
        'table'
      )
    );
    
    Copy

Tags mit Snowsight überwachen

Sie können den Snowsight-Bereich Monitoring » Governance verwenden, um die Nutzung von Richtlinien und Tags auf Tabellen, Ansichten und Spalten zu überwachen und zu berichten. Es gibt zwei verschiedene Schnittstellen: Dashboard und Tagged Objects.

Bei Verwendung der Dashboard- und der Tagged Objects-Schnittstelle sind die folgenden Details zu beachten.

  • Die Schnittstellen Dashboard und Tagged Objects erfordern ein aktives Warehouse.

  • Snowsight aktualisiert das Dashboard alle 12 Stunden.

  • Die Latenz der Tagged Objects-Informationen kann bis zu zwei Stunden betragen, und die Schnittstelle gibt bis zu 1.000 Objekte zurück.

Zugriff auf den Governance-Bereich in Snowsight

Für den Zugriff auf den Bereich Governance muss Ihr Snowflake-Konto die Enterprise Edition oder höher verwenden. Außerdem müssen Sie einen der folgenden Punkte erfüllen:

  • Verwenden Sie die Rolle ACCOUNTADMIN.

  • Sie verwenden eine Kontorolle, der die Datenbankrollen GOVERNANCE_VIEWER und OBJECT_VIEWER direkt zugewiesen sind.

    Sie müssen eine Kontorolle mit diesen Datenbankrollenzuweisungen verwenden. Derzeit wertet Snowsight keine Rollenhierarchien und benutzerdefinierten Datenbankrollen aus, die Zugriff auf Tabellen, Ansichten, Datenzugriffsrichtlinien und Tags haben.

    Um festzustellen, ob Ihre Kontorolle über diese Datenbankrollen verfügt, verwenden Sie den Befehl SHOW GRANTS:

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    Wenn Ihrer Kontorolle keine dieser beiden Datenbankrollen zugewiesen ist, verwenden Sie den Befehl GRANT DATABASE ROLE, und führen Sie den Befehl SHOW GRANTS erneut aus, um die Berechtigungszuweisungen zu bestätigen:

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    Weitere Informationen zu diesen Datenbankrollen finden Sie unter SNOWFLAKE-Datenbankrollen.

Dashboard

Als Datenadministrator können Sie die Dashboard-Schnittstelle verwenden, um die Nutzung von Tags und Richtlinien auf folgende Weise zu überwachen.

  • Coverage (Abdeckung): Gibt die Anzahl und den Prozentsatz an, je nachdem, ob eine Tabelle, Ansicht oder Spalte eine Richtlinie oder ein Tag hat.

  • Prevalence (Verbreitung): Listet die am häufigsten genutzten Richtlinien und Tags auf und zählt sie.

Die Abdeckung und die Verbreitung liefern eine Momentaufnahme darüber, wie gut die Daten geschützt und getaggt sind.

Wenn Sie eine Zählernummer, einen Prozentsatz, einen Richtliniennamen oder einen Tag-Namen auswählen, wird die Tagged Objects-Schnittstelle geöffnet. Die Tagged Objects-Schnittstelle aktualisiert die Filter automatisch auf der Grundlage Ihrer Auswahl im Feld Dashboard.

Die Überwachungsinformationen sind eine Alternative oder Ergänzung zur Ausführung komplexer und abfrageintensiver Operationen auf mehreren Account Usage-Ansichten.

Zu diesen Ansichten können unter anderem die Ansichten COLUMNS, POLICY_REFERENCES, TABLES, TAG_REFERENCES und VIEWS zählen.

Getaggte Objekte

Als Datenadministrator können Sie diese Tabelle verwenden, um den Abdeckung und die Verbreitung im Dashboard schnell mit einer Liste bestimmter Tabellen, Ansichten oder Spalten zu verknüpfen. Sie können die Tabellenergebnisse auch wie folgt manuell filtern.

  • Wählen Sie Tables oder Columns aus.

  • Bei Tags können Sie mit Tags, ohne Tags oder nach einem bestimmten Tag filtern.

  • Bei Richtlinien können Sie mit Richtlinien, ohne Richtlinien oder nach einer bestimmten Richtlinie filtern.

Wenn Sie eine Zeile in der Tabelle auswählen, wird in Data » Databases die Registerkarte Table Details oder Columns geöffnet. Sie können die Tag- und Richtlinienzuweisungen nach Bedarf bearbeiten.

Tags verwalten

Tag-Berechtigungen

Snowflake unterstützt die folgenden Berechtigungen, um zu bestimmen, ob Benutzer Tags erstellen, festlegen und besitzen können.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Berechtigung

Verwendung

CREATE

Ermöglicht das Erstellen eines neuen Tags in einem Schema.

APPLY

Aktiviert die Set- und Unset-Operationen für das Tag auf einem Snowflake-Objekt. Beispiele für die Syntax finden Sie unter: Übersicht der DDL-Befehle, Operationen und Berechtigungen.

OWNERSHIP

Überträgt die Eigentümerschaft eines Tags, was die volle Kontrolle über das Tag gewährt. Erforderlich, um die meisten Eigenschaften eines Tags zu ändern.

Tag-DDL-Referenz

Snowflake unterstützt die folgenden DDL-Befehle zum Erstellen und Verwalten von Tags:

Beachten Sie, dass Snowflake die describe-Operation bei Tag-Objekten nicht unterstützt.

Übersicht der DDL-Befehle, Operationen und Berechtigungen

Die folgende Tabelle fasst die Beziehung zwischen Tag-Berechtigungen und DDL-Operationen zusammen.

Operation

Erforderliche Berechtigung

Tag erstellen.

Eine Rolle mit CREATE TAG-Berechtigung in demselben Schema.

Tag ändern.

Die Rolle mit OWNERSHIP-Berechtigung für das Tag.

Tag löschen und wiederherstellen.

Eine Rolle mit OWNERSHIP-Berechtigung für das Tag und USAGE-Berechtigung für die Datenbank und das Schema, in denen sich das Tag befindet.

Tags anzeigen.

Eine der folgenden Möglichkeiten: . Eine Rolle mit USAGE-Berechtigung für das Schema, in dem die Tags existieren, oder . Eine Rolle mit APPLY TAG on ACCOUNT-Berechtigung.

Tag einem Objekt zuordnen oder entziehen.

Für einzelne Objekte eine Rolle mit APPLY TAG-Berechtigung für das Konto oder APPLY TAG-Berechtigung für das Tag und OWNERSHIP-Berechtigung für das Objekt, dem das Tag zugeordnet wurde. Siehe Unterstützte Objekte.

Tag einer Spalte zuordnen oder entziehen.

Eine Rolle mit der Berechtigung APPLY TAG für das Konto oder eine Rolle mit APPLY-Berechtigung für das Tag und OWNERSHIP-Berechtigung für die Tabelle oder Ansicht.

Tags eines Objekts abrufen.

Siehe SYSTEM$GET_TAG, TAG_REFERENCES und TAG_REFERENCES_WITH_LINEAGE.

Snowflake unterstützt verschiedene Berechtigungen zum Erstellen und Festlegen eines Tags für ein Objekt.

  1. Bei einem zentralen Ansatz für die Tag-Verwaltung, bei dem die kundenspezifische Rolle tag_admin Tags für alle Objekte/Spalten erstellt und festlegt, sind die folgenden Berechtigungen erforderlich:

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply tag on account to role tag_admin;
    
    Copy
  2. In einem hybriden Verwaltungsansatz verfügt eine einzelne Rolle über die CREATE TAG-Berechtigung, um die konsistente Benennung der Tags sicherzustellen, und einzelne Teams oder Rollen verfügen über die APPLY-Berechtigung für ein bestimmtes Tag.

    So kann beispielsweise der kundenspezifischen Rolle finance_role die Berechtigung erteilt werden, das Tag cost_center für Tabellen und Ansichten festzulegen, deren Eigentümer die Rolle ist (d. h. die Rolle hat die OWNERSHIP-Berechtigung für die Tabelle oder Ansicht):

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply on tag cost_center to role finance_role;
    
    Copy