In diesem Dokument werden die Berechtigungen für serverseitige benutzerdefinierte Vorlagen beschrieben.
Jede Berechtigung ist:
- Von APIs geprüft, für die sie erforderlich sind.
- Wird in JavaScript in einer Sandbox automatisch erkannt, je nachdem, welche APIs verwendet werden. Dies 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).
- Kann im Editor für benutzerdefinierte Vorlagen bearbeitet werden, um die Berechtigung zu präzisieren.
- Kann in JavaScript in Sandbox über die
queryPermission
API abgefragt werden.
access_bigquery
Display name (Anzeigename): Zugriff auf BigQuery
Beschreibung: Ermöglicht den Zugriff auf BigQuery auf der Google Cloud Platform.
Konfiguration: Option, mit der bestimmte Kombinationen aus Projekt, Dataset und Tabelle mit BigQuery verwendet werden können. Wenn Sie die Projekt-ID-Konfiguration auf GOOGLE_CLOUD_PROJECT
festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT
als Projekt-ID verwendet werden, wenn projectId
von BigQuery API
parameter
ausgeschlossen ist.
Erforderlich für: BigQuery
Abfragesignatur:
queryPermission('access_bigquery', <operation>, <options>)
Hinweise: <operation>
ist ein String und kann die folgenden Werte haben:
- write
<options>
ist ein Objekt, das die folgenden Elemente enthält:
{
'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:Option, mit der angegebene Kombinationen aus Projekt und Pfad (mit Platzhaltersyntax unterstützt) in Firestore verwendet werden können. Wenn Sie die Projekt-ID-Konfiguration auf GOOGLE_CLOUD_PROJECT
festlegen, kann die Umgebungsvariable GOOGLE_CLOUD_PROJECT
als Projekt-ID verwendet werden, wenn projectId
von 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 Write API
- read_write – Gewährt Zugriff auf Lese-, Schreib- und Abfrage-APIs
<options>
ist ein Objekt, das die folgenden Elemente enthält:
{
'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
Display name (Anzeigename): Zugriff auf Antwort
Beschreibung:Hat Zugriff auf den Antworttext, die Header oder den Status.
Konfiguration:Option zum Zulassen eines bestimmten Zugriffs oder eines bestimmten Zugriffs mit Unteroptionen zur Steuerung des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich durch:setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
Abfragesignatur:
queryPermission('access_response', 'write', <component>[, <optional component name>])
Hinweise:Legt fest, ob der Zugriff auf die Komponente für ausgehende HTTP-Antworten möglich ist.
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
Display name (Anzeigename): Zugriff auf Vorlagenspeicher
Beschreibung:Ermöglicht den Zugriff auf den temporären Speicher für Vorlagen, die für die Lebensdauer des serverseitigen Prozesses bestehen bleiben.
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:Der Cookiewert wird ausgelesen.
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>)
Hinweis: Legt fest, ob ein Cookie abhängig von seinem Namen gelesen werden kann.
Beispielcode
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
Logging
Anzeigename: Protokolliert in der Konsole
Beschreibung:Es werden Protokolle für die Developer Console und den Vorschaumodus von Tag Manager angezeigt.
Konfiguration:Option zum Aktivieren des Loggings in der Produktion. Standardmäßig ist das Logging nur in der Fehlerbehebung/Vorschau aktiviert. Wenn die Berechtigung verweigert wird, gibt logToConsole
keinen Fehler aus, unterdrückt aber die Lognachricht.
Erforderlich für: logToConsole
Abfragesignatur: queryPermission('logging')
Hinweise: Steuert, ob eine benutzerdefinierte Vorlage in der Developer Console protokolliert werden kann.
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 mit der addMessageListener
API oder der sendMessage
API.
Konfiguration:Option zur Angabe des Nachrichtentyps und ob die Vorlage warten, senden oder beides abhören kann.
Erforderlich für: addMessageListener
, sendMessage
Abfragesignatur: queryPermission('use_message', <usage>, <message type>)
Hinweise: Die Verwendung 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 für: getClientName
, getContainerVersion
Abfragesignatur: queryPermission('read_container_data')
Hinweise: Damit wird gesteuert, ob Containerdaten von einer benutzerdefinierten Vorlage gelesen werden können.
Beispielcode
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
read_event_data
Anzeigename:Ereignisdaten werden gelesen.
Beschreibung:Liest Daten aus dem Ereignis.
Konfiguration:Option, mit der jeder Zugriff gewährt werden kann, oder spezifischen Zugriff, der durch eine Liste zulässiger Schlüsselpfade gesteuert wird (Platzhaltersyntax wird unterstützt).
Erforderlich für: getAllEventData
, getEventData
Abfragesignatur: queryPermission('read_event_data'[, <optional key>])
Hinweise:Legt fest, 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:Ereignismetadaten lesen
Beschreibung: Liest Ereignismetadaten in Ereignisrückrufen
Konfiguration: Keine
Erforderlich für: addEventCallback
Abfragesignatur: queryPermission('read_event_metadata')
Hinweise: Steuert, ob eine benutzerdefinierte Vorlage Ereignismetadaten in Callbacks 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, Abfrageparameter, Text, Pfad oder Remote-IP-Adresse.
Konfiguration:Option zum Zulassen eines bestimmten Zugriffs oder eines bestimmten Zugriffs mit Unteroptionen zur Steuerung des Zugriffs auf verschiedene Unterkomponenten.
Erforderlich von: extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
Abfragesignatur:
queryPermission('read_request', <component>[, <optional component name>])
Hinweise:Legt fest, ob auf die Komponente für die eingehende HTTP-Antwort 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
Display name (Anzeigename): gibt die Antwort zurück
Beschreibung: Gibt die Antwort an den Aufrufer zurück.
Konfiguration: Keine
Erforderlich für: returnResponse
Abfragesignatur: queryPermission('return_response')
Hinweise: Diese Berechtigung hat keine Felder, die sich eingrenzen lassen. Sie wird normalerweise nicht abgefragt.
run_container
Display name (Anzeigename): Der Container wird ausgeführt.
Beschreibung:Führt den Container mit einem Ereignis aus
Konfiguration: Keine
Erforderlich für: runContainer
Abfragesignatur: queryPermission('run_container')
Hinweise: Diese Berechtigung hat keine Felder, die sich eingrenzen lassen. Sie wird normalerweise nicht abgefragt.
send_http
Display name (Anzeigename): sendet HTTP-Anfragen.
Beschreibung:Sendet eine HTTP-Anfrage an eine angegebene URL.
Erforderlich durch:getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
Abfragesignatur: queryPermission('send_http', <url>)
Hinweis: Legt fest, ob eine HTTP-Anfrage je nach URL gestellt werden kann. Um eine sichere Verbindung zu gewährleisten, sind nur sichere URLs (HTTPS) 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:Hier werden Pixel von Browsern gesendet.
Beschreibung:Sendet eine GET-Anfrage aus dem Browser an eine angegebene URL.
Erforderlich für: sendPixelFromBrowser
Abfragesignatur: queryPermission('send_pixel_from_browser', <url>)
Hinweise: Legt fest, 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:legt ein Cookie fest
Beschreibung: Legt ein Cookie mit dem angegebenen Namen und den angegebenen Parametern fest.
Konfiguration: Eine Tabelle mit zulässigen Cookienamen mit optionalen Einschränkungen für Name, Domain, Pfad, secure
-Attribut und Ablauf.
Erforderlich für: setCookie
Abfragesignatur: queryPermission('set_cookies', <name>, <options>)
Hinweise:Legt fest, ob der Antwort ein bestimmter „Set-Cookie“-Header hinzugefügt werden kann. Dies hängt von dem Namen, der Domain, dem Pfad, dem secure
-Attribut und dem Ablauf des Cookies ab.
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 auf dem Server in der Umgebungsvariablen SGTM_CREDENTIALS
verwiesen wird.
Erforderlich für: hmacSha256
Abfragesignatur: queryPermission('use_custom_private_keys', <key id>)
Hinweise: Steuert die Liste der zulässigen privaten Schlüssel.
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 Google-Standardanmeldedaten, 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:Beschränkt die zulässigen Google OAuth 2.0-Bereiche für die Verwendung mit Google APIs.
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);
}