Berechtigungen für serverseitige benutzerdefinierte Vorlagen

In diesem Dokument werden die Berechtigungen für serverseitige benutzerdefinierte Vorlagen beschrieben.


Jede Berechtigung ist:

  • Wird von APIs geprüft, für die sie erforderlich sind.
  • 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 queryPermission API 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>)

Hinweise:<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

Suchanfragesignatur: 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 zum Lesen, Schreiben und Abfragen von 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:Zugriff auf den Text, die Header oder den Status von Antworten.

Konfiguration:Option zum Zulassen beliebigen oder bestimmten Zugriffs mit Unteroptionen zur Steuerung des Zugriffs auf verschiedene Unterkomponenten.

Erforderlich für: setPixelResponse, setResponseBody, setResponseHeader, setResponseStatus

Suchanfragesignatur: queryPermission('access_response', 'write', <component>[, <optional component name>])

Hinweise:Gibt an, 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 temporären Speicher für Vorlagen, die während der gesamten Lebensdauer des serverseitigen Prozesses erhalten 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 zum Lesen zulässig sind.

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 Produktionsversion. Standardmäßig wird das Logging nur im Debug-/Vorschaumodus aktiviert. Wenn die Berechtigung abgelehnt wird, gibt logToConsole keinen Fehler aus, sondern unterdrückt die Protokollmeldung.

Erforderlich für: logToConsole

Abfragesignatur: queryPermission('logging')

Hinweise:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage in der Entwicklerkonsole 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: „Nutzt Nachrichten“

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:Als „Nutzung“ kann listen, send oder listen_and_send angegeben werden.

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: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 Zulassen von beliebigem Zugriff 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:Hiermit wird festgelegt, ob eine benutzerdefinierte Vorlage Ereignisdaten an einem bestimmten Schlüsselpfad lesen kann (oder alle Ereignisdaten, wenn kein Schlüsselpfad angegeben ist).

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, mit denen die Ergebnisse 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 vom Browser an eine angegebene URL.

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:Hiermit wird ein Cookie gesetzt.

Beschreibung:Setzt ein Cookie mit dem angegebenen Namen und den angegebenen Parametern.

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:Es werden benutzerdefinierte private Schlüssel verwendet.

Beschreibung:Bei kryptografischen Vorgängen werden private Schlüssel aus einer JSON-Schlüsseldatei verwendet.

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:Hiermit 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);
}