Objekt-Tagging

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

Unter diesem Thema:

Was ist ein Tag?

Ein Tag ist ein Objekt auf Schemaebene, das einem anderen Snowflake-Objekt zugeordnet 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 in der Form key = 'value'. In diesem Beispiel cost_center = 'sales' ist cost_center das Tag und 'sales' der Zeichenfolgenwert. Das Tag muss für Ihr Schema eindeutig sein, wobei der Tag-Wert immer eine Zeichenfolge ist.

Ein einziges Tag kann gleichzeitig verschiedenen Objekttypen zugewiesen werden (z. B. Warehouse und Tabelle gleichzeitig). Zum Zeitpunkt der Zuordnung zum Snowflake-Objekt kann der Wert der Tag-Zeichenfolge 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 verfolgen und so Data-Governance-Operationen wie Nachverfolgung, Auditing und Reporting zu vereinfachen.

Snowflake unterstützt die Zuweisung von Tags zu den folgenden Snowflake-Objekten und Spalten:

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.

Die Zuweisung von Tags zu Warehouses ermöglicht eine genaue Verfolgung 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-Herkunft

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. Ein Tag wird basierend auf der Hierarchie der sicherbaren Snowflake-Objekte vererbt.

The tag administrator can apply masking policies to tables and views.

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.

Das geerbte Tag kann für ein bestimmtes Objekt überschrieben werden. Wenn eine Tabellenspalte das Tag cost_center = 'sales' erbt, kann das Tag durch ein spezifischeres Tag wie cost_center = 'sales_na' ersetzt werden, wobei na die Vertriebskostenstelle „Nordamerika“ angibt. Zusätzlich kann ein neues Tag auf die Tabellenspalte angewendet werden (z. B. classification = 'secret').

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-Abstammung mithilfe der angegebenen Tabellenfunktionen oder durch Abfragen der Ansichten verfolgen, wie in Implementieren von Tags (unter diesem Thema) gezeigt.

Vorteile von Tags

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 Zuordnungen 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 benutzerdefinierten Rolle tag_admin erstellt und auf Snowflake-Objekte angewendet.

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

Verwendung von Tags mit Snowflake-Objekten und -Funktionen

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

Objekte auf Kontoebene

Snowflake unterstützt die Zuweisung von Tags zu den folgenden Objekten auf Kontoebene:

  • Warehouse

  • Datenbank

  • Benutzer

  • Rolle

Objekte auf Datenbankebene

  • Schema

Objekte auf Schemaebene

Snowflake unterstützt die Zuweisung von Tags zu den folgenden Objekten auf Schemaebene:

  • Tabelle

  • Externe Tabelle

  • Ansicht

  • Materialisierte Ansicht

  • Stagingbereich

CREATE TABLE-Anweisungen

Mit CREATE TABLE … LIKE werden der Quelltabelle zugeordnete Tags auch der Zieltabelle zugeordnet.

Replikation

Tags können repliziert werden.

Die Replikationsoperation schlägt fehl, 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.

  • Eine in der Primärdatenbank enthaltene Richtlinie hat einen Verweis auf ein Tag in einer anderen Datenbank.

    Bemerkung

    Wenn die Replikation mit Failover oder Failback erfolgt, muss das Snowflake-Konto Business Critical Edition oder höher sein.

    Weitere Informationen dazu finden Sie unter Datenbankreplikation und Failover/Failback.

Klonen

Snowflake unterstützt das folgende Tag-Verhalten bei Klonoperationen:

  • Tag-Zuordnungen im Quellobjekt bleiben in den geklonten Objekten erhalten.

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

  • Nach dem Klonen werden die Objekte und deren Tag-Zuordnungen den geklonten Objekten und Tags zugeordnet, nicht den ursprünglichen Objekten und Tags.

Implementieren von Tags

Die Implementierung von Tags in Snowflake ist ein vierstufiger Prozess:

  1. Benutzerdefinierte Rolle definieren und Berechtigungen zuweisen

  2. Tag mit CREATE TAG-Anweisung erstellen

  3. Tag mit dem Befehl ALTER <Objekt> einem Snowflake-Objekt zuordnen

  4. Tags über Tabellenfunktionen und Ansichten verfolgen

Der Einfachheit halber wird in diesen Schritten von einem zentralen Verwaltungsansatz für Tags ausgegangen, bei dem die benutzerdefinierte Rolle tag_admin sowohl die CREATE- als auch die APPLY-Berechtigungen für das Tag besitzt.

Schritt 1: Benutzerdefinierte Rolle definieren und Berechtigungen zuweisen

In einem zentralen Verwaltungsansatz ist die benutzerdefinierte 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 benutzerdefinierten Rolle tag_admin Berechtigungen zuweist, über die notwendigen Berechtigungen verfügt, um die benutzerdefinierte 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 <schema_name> to role tag_admin;
grant apply tag on account to role tag_admin;

Schritt 2: Tag erstellen

Führen Sie eine CREATE TAG-Anweisung aus, um ein Tag zu erstellen.

use role tag_admin;
use schema my_db.my_schema;
create tag cost_center;

Schritt 3: Tag einem Snowflake-Objekt zuordnen

Ordnen Sie ein Tag mit einer ALTER <Objekt>-Anweisung einem Snowflake-Objekt zu.

Um beispielsweise ein Tag für ein Warehouse zu setzen, verwenden Sie den Befehl ALTER WAREHOUSE.

use role tag_admin;
alter warehouse wh1 set tag cost_center = 'sales';

Um ein Tag für eine Spalte zu setzen oder zu entfernen, verwenden Sie den Befehl ALTER TABLE … MODIFY COLUMN für eine Tabellenspalte oder den Befehl ALTER VIEW … MODIFY COLUMN für eine Ansichtsspalte. Beachten Sie, dass mit einer einzelnen Anweisung auch mehrere Tags gesetzt oder gelöscht werden können.

-- For a table or external table column

alter table <table_name> modify column <column_name> set tag <tag_key> = '<tag_value>' [ , <tag_key> = ’<tag_value>’ , ... ];
alter table <table_name> modify column <column_name> unset <tag_key> [ , <tag_key> , ... ];

-- For a view or materialized view column

alter view <view_name> modify column <column_name> set tag <tag_key> = '<tag_value>' [ , <tag_key> = ’<tag_value>’ , ... ];
alter view <view_name> modify column <column_name> unset <tag_key> [ , <tag_key> , ... ];

Schritt 4: Tag-Nutzung verfolgen

Sie können die Tag-Nutzung über zwei verschiedene Account Usage-Ansichten, eine Information Schema-Tabellenfunktion, eine Account Usage-Tabellenfunktion und die Funktion GET_TAG verfolgen.

  • Um eine Liste aller Tags in Ihrem Konto zu erhalten, fragen Sie die Account Usage-Ansicht Ansicht TAGS ab:

    select * from snowflake.account_usage.tags
    order by tag_name;
    
  • Um eine Liste aller Zuordnungen zwischen Tags und Snowflake-Objekten zu erhalten, fragen Sie die Account Usage-Ansicht Ansicht TAG_REFERENCES ab:

    select * from snowflake.account_usage.tag_references
    order by tag_name, domain, object_id;
    
  • Um Zuordnungen zwischen Tags und Snowflake-Objekten aufzulisten, verwenden Sie die Information Schema-Tabellenfunktion TAG_REFERENCES:

    select *
     from table(my_db.information_schema.tag_references('my_table', 'table'));
    
  • Um alle Tag-Zuordnungen zu Snowflake-Objekten aufzulisten und die Tag-Herkunft für das angegebene Tag zu erhalten, verwenden Sie die Account Usage-Tabellenfunktion TAG_REFERENCES_WITH_LINEAGE:

    select *
      from table(snowflake.account_usage.tag_references_with_lineage('my_db.my_schema.cost_center'));
    
  • Um den mit dem angegebenen Tag verbundenen Tag-Wert und das Snowflake-Objekt oder die Spalte zurückzugeben, verwenden Sie die Funktion SYSTEM$GET_TAG.

    select system$get_tag('cost_center', 'my_table', 'table');
    

Tags verwalten

Tag-Berechtigungen

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

Berechtigung

Verwendung

CREATE

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

APPLY

Aktiviert die Operationen zum Hinzufügen und Löschen von Tags, die einem Snowflake-Objekt zugeordnet sind.

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.

Bemerkung

Tags werden auf Schemaebene gespeichert.

Das Durchführen von Operationen auf einem Tag erfordert auch die USAGE-Berechtigung für die übergeordnete Datenbank und das übergeordnete Schema.

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 USAGE-Berechtigung für die übergeordnete Datenbank und das übergeordnete Schema sowie mit CREATE TAG-Berechtigung für dasselbe Schema.

Tag ändern.

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

Tag löschen.

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-Berechtigung für das Tag und OWNERSHIP-Berechtigung für das Objekt, dem das Tag zugeordnet wurde.

Tag einer Spalte zuordnen oder entziehen.

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.