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, die sie erfordern.
  • Wird automatisch in JavaScript in einer Sandbox erkannt, je nachdem, welche APIs verwendet werden. Dies geschieht, wenn Änderungen im Editor für benutzerdefinierte Vorlagen vorgenommen werden (für eine schnelle Feedback-Schleife) und wann der Code kompiliert wird (um zu prüfen, ob der korrekte Berechtigungen erzwungen werden).
  • Kann im Editor für benutzerdefinierte Vorlagen bearbeitet werden, um die Berechtigung zu präzisieren.
  • In JavaScript-Sandbox über die queryPermission API abfragbar.

access_bigquery

Anzeigename: Zugriff auf BigQuery

Beschreibung: Ermöglicht den Zugriff auf BigQuery auf der Google Cloud Platform.

Konfiguration:Option zum Zulassen eines bestimmten Projekts, Datasets und einer angegebenen Tabelle Kombinationen, die mit BigQuery verwendet werden sollen. Projekt-ID-Konfiguration festlegen von GOOGLE_CLOUD_PROJECT lässt die Verwendung der GOOGLE_CLOUD_PROJECT-Umgebung zu Variable als Projekt-ID, 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, 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

Display name (Anzeigename): Greift auf Google Firestore zu

Beschreibung: Ermöglicht den Zugriff auf Google Firestore.

Konfiguration:Option zum Zulassen des angegebenen Projekts und Pfads (Platzhaltersyntax) unterstützt) Kombinationen, die mit Firestore verwendet werden sollen. Projekt-ID festlegen ermöglicht die Konfiguration von GOOGLE_CLOUD_PROJECT die Verwendung des Umgebungsvariable GOOGLE_CLOUD_PROJECT als Projekt-ID, wenn projectId ist aus Firestore API parameter ausgeschlossen.

Erforderlich für:Firestore

Abfragesignatur: queryPermission('access_firestore', <operation>, <options>)

Hinweis: <operation> ist ein String und kann die folgenden Werte haben:

  • read – Gewährt Zugriff zum Lesen und Abfragen von APIs
  • write – Gewährt Zugriff zum Schreiben der 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

Display name (Anzeigename): Zugriff auf Antwort

Beschreibung: Greift auf den Antworttext, die Header oder den Status zu.

Konfiguration:Option, um einen beliebigen oder bestimmten Zugriff zuzulassen, mit Unteroptionen für den Zugriff auf verschiedene Unterkomponenten steuern.

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

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

Hinweise:Legt fest, ob auf die Komponente für ausgehende HTTP-Antworten 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: Zugriff auf Vorlagenspeicher

Beschreibung: Ermöglicht den Zugriff auf den temporären Speicher für Vorlagen, die Folgendes ausführen können: bleiben für die Lebensdauer des serverseitigen Prozesses bestehen.

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

Display name (Anzeigename): Liest Cookiewert(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

Display name (Anzeigename): Logs in Console (in der Konsole)

Beschreibung: Protokolliert Meldungen in der Entwicklerkonsole und im Vorschaumodus von Tag Manager.

Konfiguration: Option zum Aktivieren des Loggings in der Produktion. Die Standardeinstellung ist nur Aktivieren Sie die Protokollierung in der Fehlerbehebung/Vorschau. Wenn die Berechtigung verweigert wird, macht logToConsole Folgendes: keinen Fehler ausgibt, sondern die Log-Nachricht unterdrückt.

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:Option zum Angeben des Mitteilungstyps und ob die Vorlage verwendet werden soll zuhören, senden oder beides.

Erforderlich von: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

Display name (Anzeigename): Liest Containerdaten

Beschreibung: Liest Daten über den Container.

Konfiguration:Keine.

Erforderlich von:getClientName, getContainerVersion

Abfragesignatur: queryPermission('read_container_data')

Hinweise:Steuert, 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:Ereignisdaten lesen

Beschreibung:Liest Daten aus dem Ereignis.

Konfiguration:Option zum Gewähren eines beliebigen Zugriffs oder eines bestimmten Zugriffs, der von Eine Liste zulässiger Schlüsselpfade (unterstützt Platzhaltersyntax)

Erforderlich von:getAllEventData, getEventData

Abfragesignatur: queryPermission('read_event_data'[, <optional key>])

Hinweise:Steuert, ob eine benutzerdefinierte Vorlage Ereignisdaten mit einem bestimmten Schlüssel lesen kann Pfad (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 Ereignismetadaten.

Beschreibung: Liest Ereignismetadaten in Ereignis-Callbacks.

Konfiguration:Keine

Erforderlich für:addEventCallback

Abfragesignatur: queryPermission('read_event_metadata')

Hinweise:Steuert, ob eine benutzerdefinierte Vorlage Ereignismetadaten in Callbacks angegeben werden.

Beispielcode

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_request

Display name (Anzeigename): Liest die HTTP-Anfrage

Beschreibung: Liest Anfrageheader, Suchparameter, Text, Pfad oder Remote-IP-Adresse.

Konfiguration:Option, um einen beliebigen oder bestimmten Zugriff zuzulassen, mit Unteroptionen für den Zugriff auf verschiedene Unterkomponenten steuern.

Erforderlich für:extractEventsFromMpv1, extractEventsFromMpv2, getRemoteAddress, getRequestBody, getRequestHeader getRequestPath, getRequestQueryParameter, getRequestQueryParameters getRequestQueryString

Abfragesignatur: queryPermission('read_request', <component>[, <optional component name>])

Hinweise: Legt fest, 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

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')

Hinweis:Diese Berechtigung enthält keine Felder, die eingegrenzt werden können, und wird normalerweise nicht abgefragt. für die Sie angegeben haben.

run_container

Display name (Anzeigename): Führt den Container aus

Beschreibung: Der Container wird mit einem Ereignis ausgeführt.

Konfiguration:Keine

Erforderlich für:runContainer

Abfragesignatur: queryPermission('run_container')

Hinweis:Diese Berechtigung enthält keine Felder, die eingegrenzt werden können, und wird normalerweise nicht abgefragt. für die Sie angegeben haben.

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: Legt in Abhängigkeit von der URL fest, ob eine HTTP-Anfrage 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:Pixel werden aus Browsern gesendet.

Beschreibung:Sendet eine GET-Anfrage an eine angegebene URL vom Browser.

Erforderlich für:sendPixelFromBrowser

Abfragesignatur: queryPermission('send_pixel_from_browser', <url>)

Hinweise: Legt fest, ob eine Anfrage vom Browser gesendet werden kann, je nachdem, die URL.

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:Legt fest, ob ein bestimmtes Set-Cookie kann der Kopfzeile je nach Cookiename, Domain, Pfad, secure-Attribut und Gültigkeit haben.

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 die Kryptografie. Geschäftsabläufe.

Konfiguration:Eine Liste der zulässigen Schlüssel-IDs. Die IDs müssen mit den Schlüsseln in die JSON-Schlüsseldatei, auf die in der Umgebungsvariable SGTM_CREDENTIALS verwiesen wird auf dem Server.

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 Google-Standardanmeldedaten, um Google aufzurufen APIs

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