Berechtigungen für serverseitige benutzerdefinierte Vorlagen

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