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:
Fragen Sie die Ansicht TAG_REFERENCES (in Account Usage) ab, um die Tag-Zuweisungen zu ermitteln.
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
.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';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'; | +------------------------------------------------------------------------------+Ä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';Ä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';
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"] | +--------------------------------------------------------------+
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.
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.