In diesem Dokument werden die Berechtigungen für serverseitige benutzerdefinierte Vorlagen beschrieben.
Für jede Berechtigung gilt:
- Wird von APIs geprüft, die sie erfordern.
- Wird in JavaScript-Sandboxes automatisch erkannt, je nachdem, welche APIs verwendet werden. Das geschieht, wenn Änderungen im Editor für benutzerdefinierte Vorlagen vorgenommen werden (für eine schnelle Feedbackschleife) und wenn Code kompiliert wird (um zu prüfen, ob die richtigen Berechtigungen erzwungen werden).
- Im Editor für benutzerdefinierte Vorlagen bearbeitbar, um die Berechtigung zu präzisieren.
- Kann in sandboxed JavaScript über die
queryPermissionAPI abgefragt werden.
access_bigquery
Anzeigename:Zugriff auf BigQuery
Beschreibung:Ermöglicht den Zugriff auf BigQuery in der Google Cloud Platform.
Konfiguration:Mit dieser Option können Sie festlegen, dass bestimmte Kombinationen von Projekt, Dataset und Tabelle mit BigQuery verwendet werden dürfen. Wenn Sie eine Projekt-ID-Konfiguration von GOOGLE_CLOUD_PROJECT festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT als Projekt-ID verwendet werden, wenn projectId aus BigQuery API
parameter ausgeschlossen ist.
Erforderlich für: BigQuery
Suchanfragesignatur:
queryPermission('access_bigquery', <operation>, <options>)
Hinweis: <operation> ist ein String und kann die folgenden Werte haben:
- write
<options> ist ein Objekt mit den folgenden Elementen:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
Beispielcode
const BigQuery = require('BigQuery');
const queryPermission = require('queryPermission');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
if (queryPermission('access_bigquery', 'write', connectionInfo)) {
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
}
access_firestore
Anzeigename:Zugriff auf Google Firestore
Beschreibung:Ermöglicht den Zugriff auf Google Firestore.
Konfiguration:Mit dieser Option können Sie festlegen, dass bestimmte Kombinationen aus Projekt und Pfad (mit unterstützter Platzhaltersyntax) mit Firestore verwendet werden dürfen. Wenn Sie eine Projekt-ID-Konfiguration von GOOGLE_CLOUD_PROJECT festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT als Projekt-ID verwendet werden, wenn projectId aus Firestore API parameter ausgeschlossen ist.
Erforderlich für: Firestore
Abfragesignatur:
queryPermission('access_firestore', <operation>, <options>)
Hinweise:<operation> ist ein String und kann die folgenden Werte haben:
- read – Gewährt Zugriff zum Lesen und Abfragen von APIs
- write – Gewährt Zugriff auf die Schreib-API
- read_write – Gewährt Zugriff auf Lese-, Schreib- und Abfrage-APIs
<options> ist ein Objekt mit den folgenden Elementen:
{
'projectId': <project_id>,
'path': <path>
}
Beispielcode
const Firestore = require('Firestore');
const queryPermission = require('queryPermission');
const options = {
'projectId': 'gcp-cloud-project-id',
'path': 'collection/document',
};
if (queryPermission('access_firestore', 'read', options)) {
Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then(data.gtmOnSuccess, data.gtmOnFailure);
}
access_response
Anzeigename:Zugriff auf Antwort
Beschreibung: Mit dieser Variablen wird auf den Textkörper, die Header oder den Status der Antwort zugegriffen.
Konfiguration: Option zum Gewähren eines beliebigen oder spezifischen Zugriffs mit Unteroptionen zur Steuerung des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich für: setPixelResponse, setResponseBody,
setResponseHeader, setResponseStatus
Abfragesignatur:
queryPermission('access_response', 'write', <component>[, <optional component name>])
Hinweise:Bestimmt, ob auf die ausgehende HTTP-Antwortkomponente zugegriffen werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
if (queryPermission('access_response', 'write', 'header', 'Content-Type')) {
setResponseHeader('Content-Type', 'text/plain');
}
if (queryPermission('access_response', 'write', 'body')) {
setResponseBody('Not Found');
}
if (queryPermission('access_response', 'write', 'status')) {
setResponseStatus(404);
}
access_template_storage
Anzeigename:Auf Vorlagenspeicher zugreifen
Beschreibung: Ermöglicht den Zugriff auf den temporären Speicher für Vorlagen, die für die Lebensdauer des serverseitigen Prozesses bestehen bleiben können.
Konfiguration:Keine
Erforderlich für: templateDataStorage
Abfragesignatur: queryPermission('access_template_storage')
Beispielcode
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(key);
}
get_cookies
Anzeigename:Liest Cookie-Wert(e)
Beschreibung:Liest die Werte der Cookies mit dem angegebenen Namen.
Konfiguration:Liste der Namen von Cookies, die gelesen werden dürfen.
Erforderlich für: getCookieValues
Abfragesignatur: queryPermission('get_cookies', <name>)
Hinweise:Bestimmt, ob ein Cookie gelesen werden kann, je nach Name.
Beispielcode
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
Logging
Anzeigename:In Console aufzeichnen
Beschreibung:Protokolliert Meldungen in der Entwicklerkonsole und im Vorschaumodus von Tag Manager.
Konfiguration: Option zum Aktivieren des Loggings in der Produktion. Standardmäßig wird das Logging nur in der Fehlerbehebung bzw. in der Vorschau aktiviert. Wenn die Berechtigung abgelehnt wird, gibt logToConsole keinen Fehler aus, sondern unterdrückt die Protokollmeldung.
Erforderlich für: logToConsole
Abfragesignatur: queryPermission('logging')
Hinweise:Steuert, ob sich eine benutzerdefinierte Vorlage in der Developer Console protokollieren lässt.
Beispielcode
const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');
use_message
Anzeigename:Hier werden Nachrichten verwendet.
Beschreibung:Sendet oder empfängt Nachrichten über die addMessageListener- oder sendMessage-APIs.
Konfiguration:Hier können Sie den Nachrichtentyp und festlegen, ob die Vorlage Nachrichten empfangen, senden oder beides tun soll.
Erforderlich für: addMessageListener, sendMessage
Abfragesignatur: queryPermission('use_message', <usage>, <message type>)
Hinweise: Die Nutzung kann listen, send oder listen_and_send sein.
Beispielcode
const queryPermission = require('queryPermission');
const sendMessage = require('sendMessage');
if (queryPermission('use_message', 'send', 'set_cookie')) {
sendMessage('set_cookie', {name: 'foo', value: 'bar'});
}
read_container_data
Anzeigename:Liest Containerdaten
Beschreibung:Liest Daten zum Container.
Konfiguration:Keine.
Erforderlich von:getClientName, getContainerVersion
Abfragesignatur: queryPermission('read_container_data')
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Containerdaten lesen kann.
Beispielcode
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
read_event_data
Anzeigename:Liest Ereignisdaten
Beschreibung:Liest Daten aus dem Ereignis.
Konfiguration: Option zum Gewähren eines beliebigen Zugriffs oder eines bestimmten Zugriffs, der durch eine Liste zulässiger Schlüsselpfade gesteuert wird (Platzhaltersyntax unterstützt).
Erforderlich für: getAllEventData, getEventData
Abfragesignatur: queryPermission('read_event_data'[, <optional key>])
Hinweise:Steuert, ob eine benutzerdefinierte Vorlage Ereignisdaten in einem bestimmten Schlüsselpfad (oder alle Ereignisdaten, wenn kein Schlüsselpfad angegeben ist) lesen kann.
Beispielcode
const getAllEventData = require('getAllEventData');
const queryPermission = require('queryPermission');
if (queryPermission('read_event_data')) {
return getAllEventData();
}
const getEventData = require('getEventData');
const queryPermission = require('queryPermission');
const keyPath = 'parentField.childField';
if (queryPermission('read_event_data', keyPath)) {
return getEventData(keyPath);
}
read_event_metadata
Anzeigename:Liest Ereignis-Metadaten.
Beschreibung:Liest Ereignis-Metadaten in Ereignis-Rückrufen.
Konfiguration:Keine
Erforderlich für: addEventCallback
Abfragesignatur: queryPermission('read_event_metadata')
Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Ereignismetadaten in Rückrufen lesen kann.
Beispielcode
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
Anzeigename:Liest die HTTP-Anfrage.
Beschreibung:Liest Anfrageheader, Suchparameter, Text, Pfad oder Remote-IP-Adresse.
Konfiguration:Option zum Zulassen beliebigen oder bestimmten Zugriffs mit Unteroptionen zur Steuerung des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich für: extractEventsFromMpv1, extractEventsFromMpv2,
getRemoteAddress, getRequestBody, getRequestHeader,
getRequestPath, getRequestQueryParameter, getRequestQueryParameters,
getRequestQueryString
Suchanfragesignatur:
queryPermission('read_request', <component>[, <optional component name>])
Hinweise:Bestimmt, ob auf die eingehende HTTP-Antwortkomponente zugegriffen werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const getRequestBody = require('getRequestBody');
const getRequestHeader = require('getRequestHeader');
let body, contentType;
if (queryPermission('read_request', 'body')) {
body = getRequestBody();
}
if (queryPermission('read_request', 'header', 'content-type')) {
contentType = getRequestHeader('content-type');
}
if (body && contentType == 'application/json') { ... }
return_response
Anzeigename:Gibt die Antwort zurück.
Beschreibung:Gibt eine Antwort an den Aufrufer zurück.
Konfiguration:Keine
Erforderlich für: returnResponse
Abfragesignatur: queryPermission('return_response')
Hinweise:Für diese Berechtigung gibt es keine Felder, mit denen die Ergebnisse eingegrenzt werden können. Sie wird in der Regel nicht abgefragt.
run_container
Anzeigename:Führt den Container aus
Beschreibung:Führt den Container mit einem Ereignis aus
Konfiguration:Keine
Erforderlich für: runContainer
Abfragesignatur: queryPermission('run_container')
Hinweise:Für diese Berechtigung gibt es keine Felder, die eingegrenzt werden können. Sie wird in der Regel nicht abgefragt.
send_http
Anzeigename:Sendet HTTP-Anfragen
Beschreibung:Sendet eine HTTP-Anfrage an eine angegebene URL.
Erforderlich für: getGoogleScript, sendEventToGoogleAnalytics,
sendHttpGet, sendHttpRequest
Abfragesignatur: queryPermission('send_http', <url>)
Hinweise:Bestimmt, ob eine HTTP-Anfrage je nach URL gesendet werden kann. Für eine sichere Verbindung sind nur sichere (HTTPS-)URLs zulässig.
Beispielcode
const queryPermission = require('queryPermission');
const sendHttpGet = require('sendHttpGet');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_http', url)) {
sendHttpGet(url);
}
send_pixel_from_browser
Anzeigename:Sendet Pixel von Browsern
Beschreibung:Sendet eine GET-Anfrage an eine angegebene URL vom Browser.
Erforderlich für: sendPixelFromBrowser
Abfragesignatur: queryPermission('send_pixel_from_browser', <url>)
Hinweise:Bestimmt, ob eine Anfrage je nach URL vom Browser gesendet werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const sendPixelFromBrowser = require('sendPixelFromBrowser');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_pixel_from_browser', url)) {
sendPixelFromBrowser(url);
}
set_cookies
Anzeigename:Setzt ein Cookie
Beschreibung: Legt ein Cookie mit dem angegebenen Namen und den angegebenen Parametern fest.
Konfiguration:Eine Tabelle mit zulässigen Cookie-Namen, jeweils mit optionalen Einschränkungen für Name, Domain, Pfad, secure-Attribut und Ablaufdatum.
Erforderlich für: setCookie
Abfragesignatur: queryPermission('set_cookies', <name>, <options>)
Hinweise:Bestimmt, ob eine bestimmte „Set-Cookie“-Header-Zeile der Antwort hinzugefügt werden kann, je nach Cookie-Namen, Domain, Pfad, secure-Attribut und Ablaufdatum.
Beispielcode
const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
'domain': 'www.example.com',
'path': '/',
'max-age': 60*60*24*365,
'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
setCookie('info', 'xyz', options);
}
use_custom_private_keys
Anzeigename:Verwendet benutzerdefinierte private Schlüssel
Beschreibung: Verwendet private Schlüssel aus einer JSON-Schlüsseldatei für kryptografische Vorgänge.
Konfiguration:Eine Liste der zulässigen Schlüssel-IDs. Die IDs müssen mit den Schlüsseln in der JSON-Schlüsseldatei übereinstimmen, auf die die Umgebungsvariable SGTM_CREDENTIALS auf dem Server verweist.
Erforderlich für: hmacSha256
Abfragesignatur: queryPermission('use_custom_private_keys', <key id>)
Hinweise: Hier wird die Liste der zulässigen privaten Schlüssel verwaltet.
Beispielcode
const hmacSha256= require('hmacSha256');
const queryPermission = require('queryPermission');
const keyId = 'key1';
let result;
if (queryPermission('use_custom_private_keys', keyId)) {
result = hmacSha256('my_data', keyId);
}
use_google_credentials
Anzeigename:Verwendet Google-Standardanmeldedaten für Anwendungen
Beschreibung:Verwendet die Standardanmeldedaten von Google, um Google APIs aufzurufen.
Konfiguration:Eine Liste der zulässigen Google OAuth 2.0-Bereiche.
Erforderlich für:getGoogleAuth
Abfragesignatur: queryPermission('use_google_credentials', <scopes>)
Hinweise:Hiermit werden die zulässigen Google OAuth 2.0-Bereiche für die Verwendung mit Google APIs eingeschränkt.
Beispielcode
const getGoogleAuth = require('getGoogleAuth');
const queryPermission = require('queryPermission');
const scopes = [
'https://www.googleapis.com/auth/datastore'
];
let auth;
if (queryPermission('use_google_credentials', scopes)) {
auth = getGoogleAuth(scopes);
}