במסמך הזה מפורטות ההרשאות לתבניות מותאמות אישית בצד השרת.
כל הרשאה היא:
- נבדקים על ידי ממשקי API שדורשים אותם.
- מזוהה באופן אוטומטי ב-JavaScript בארגז חול (sandbox), על סמך ממשקי ה-API שבהם נעשה שימוש. הפעולה הזו מתבצעת בזמן שהעריכות מתבצעות באמצעות עורך תבניות בהתאמה אישית (כדי לולאת משוב), וכאשר הקוד עבר הידור (כדי לאמת שהקוד שנאכפים).
- ניתן לערוך את ההרשאה בעורך התבניות בהתאמה אישית כדי שההרשאה תהיה ספציפית יותר.
- ניתן לשלוח שאילתות ב-JavaScript בארגז חול (sandbox) דרך ה-API של
queryPermission
.
access_bigquery
שם תצוגה: גישה ל-BigQuery
תיאור: מאפשר גישה ל-BigQuery ב-Google Cloud Platform.
הגדרה: אפשרות לתת הרשאה לפרויקט, למערך הנתונים ולטבלה שצוינו
שילובים לשימוש עם BigQuery. הגדרת מזהה הפרויקט בתור GOOGLE_CLOUD_PROJECT
תאפשר להשתמש במשתנה הסביבה GOOGLE_CLOUD_PROJECT
בתור מזהה הפרויקט כש-projectId
לא נכלל ב-BigQuery API
parameter
.
חובה על ידי: BigQuery
חתימת השאילתה:
queryPermission('access_bigquery', <operation>, <options>)
הערות: הערך <operation>
הוא מחרוזת ויכול להיות לו הערכים הבאים:
- כתיבה
<options>
הוא אובייקט שמכיל את הפריטים הבאים:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
קוד לדוגמה
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
שם תצוגה: גישה ל-Google Firestore
תיאור: מאפשרת גישה ל-Google Firestore.
הגדרה: אפשרות לאפשר את הפרויקט והנתיב שצוינו (תחביר של תווים כלליים לחיפוש
נתמכים) לשימוש עם Firestore. הגדרת מזהה פרויקט
של GOOGLE_CLOUD_PROJECT
תאפשר להשתמש
משתנה הסביבה GOOGLE_CLOUD_PROJECT
כמזהה הפרויקט כאשר projectId
לא נכללת בFirestore API parameter
.
חובה על ידי: Firestore
חתימת השאילתה:
queryPermission('access_firestore', <operation>, <options>)
הערות: הערך <operation>
הוא מחרוזת ויכול להיות לו הערכים הבאים:
- קריאה - הענקת גישה לקריאת ממשקי API ולשליחת שאילתות
- Write - הענקת גישה לכתיבת API
- read_write - מעניקה גישה לממשקי API לקריאה, לכתיבה ולשליחת שאילתות
<options>
הוא אובייקט שמכיל את הפריטים הבאים:
{
'projectId': <project_id>,
'path': <path>
}
קוד לדוגמה
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
שם תצוגה: גישה לתשובה
תיאור: גישה לגוף, לכותרות או לסטטוס של התשובה.
הגדרות אישיות: אפשרות להעניק גישה כלשהי או ספציפית, עם אפשרויות משנה שליטה בגישה לרכיבי משנה שונים.
חובה על ידי: setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
חתימת השאילתה:
queryPermission('access_response', 'write', <component>[, <optional component name>])
הערות: המדיניות קובעת אם ניתן לגשת לרכיב של תגובת ה-HTTP היוצאת.
קוד לדוגמה
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
שם תצוגה: גישה לאחסון התבניות
תיאור: מאפשרת גישה לאחסון זמני של תבניות שיכולות יישמרו לכל משך החיים של התהליך בצד השרת.
הגדרה: ללא
חובה על ידי: templateDataStorage
חתימת השאילתה: queryPermission('access_template_storage')
קוד לדוגמה
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: קריאת ערכים של קובצי Cookie
תיאור: קריאת הערכים של קובצי ה-Cookie עם השם שצוין.
הגדרה: רשימה של שמות קובצי cookie שמותר לקרוא.
חובה על ידי: getCookieValues
חתימת השאילתה: queryPermission('get_cookies', <name>)
הערות:קובעת אם ניתן לקרוא קובץ Cookie, בהתאם לשם שלו.
קוד לדוגמה
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
רישום ביומן
שם תצוגה: יומנים למסוף
תיאור: יומנים למסוף המפתחים ולמצב התצוגה המקדימה של Tag Manager.
הגדרה: אפשרות להפעלת הרישום ביומן בסביבת הייצור. ברירת המחדל היא רק
להפעיל רישום ביומן של ניפוי באגים/תצוגה מקדימה. אם ההרשאה תידחה, logToConsole
לא יקפיץ שגיאה, אלא יסתיר את הודעת היומן.
חובה על ידי: logToConsole
חתימת השאילתה: queryPermission('logging')
הערות: המדיניות קובעת אם אפשר לרשום תבנית בהתאמה אישית ב-Developer Console.
קוד לדוגמה
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
שם תצוגה: שימוש בהודעות
תיאור: שולח או מקבל הודעות באמצעות addMessageListener
או
ממשקי API של sendMessage
.
הגדרה: אפשרות לציין את סוג ההודעה ולקבוע אם התבנית יכול להאזין, לשלוח או את שניהם.
חובה על ידי: addMessageListener
, sendMessage
חתימת השאילתה: queryPermission('use_message', <usage>, <message type>)
הערות:השימוש יכול להיות אחד מהערכים listen
, send
או listen_and_send
.
קוד לדוגמה
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
שם תצוגה: קריאה של נתוני מאגרים
תיאור: קריאת נתונים לגבי מאגר התגים.
הגדרה: אין.
חובה על ידי: getClientName
, getContainerVersion
חתימת השאילתה: queryPermission('read_container_data')
הערות: המדיניות קובעת אם תבנית מותאמת אישית יכולה לקרוא נתוני מאגרי תגים.
קוד לדוגמה
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
read_event_data
שם תצוגה: קריאת נתוני האירוע
תיאור: קריאת נתונים מהאירוע.
הגדרה: אפשרות לאפשר כל גישה או גישה ספציפית שמבוקרת על ידי רשימה של נתיבי מפתח מותרים (בתחביר של תווים כלליים לחיפוש נתמך).
חובה על ידי: getAllEventData
, getEventData
חתימת השאילתה: queryPermission('read_event_data'[, <optional key>])
הערה: ההגדרה קובעת אם תבנית בהתאמה אישית יכולה לקרוא נתוני אירועים במפתח נתון נתיב (או כל נתוני האירועים, אם לא צוין נתיב מפתח).
קוד לדוגמה
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
שם תצוגה: קריאת המטא-נתונים של האירוע
תיאור: קריאת המטא-נתונים של האירוע בקריאות חוזרות (callbacks) של אירועים
הגדרה: ללא
חובה על פי: addEventCallback
חתימת השאילתה: queryPermission('read_event_metadata')
הערה: ההגדרה קובעת אם תבנית בהתאמה אישית יכולה לקרוא מטא-נתונים של אירועים ב קריאה חוזרת (callback).
קוד לדוגמה
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
Display name (שם תצוגה): קריאת בקשת HTTP
תיאור: קריאת כותרות הבקשה, הפרמטרים של השאילתה, הגוף, הנתיב או הנתיב כתובת IP מרוחקת.
הגדרות אישיות: אפשרות להעניק גישה כלשהי או ספציפית, עם אפשרויות משנה שליטה בגישה לרכיבי משנה שונים.
חובה על ידי: extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
חתימת השאילתה:
queryPermission('read_request', <component>[, <optional component name>])
הערות: המדיניות קובעת אם ניתן לגשת לרכיב של תגובת ה-HTTP הנכנסת.
קוד לדוגמה
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 (שם תצוגה): החזרת תגובה
תיאור: החזרת תגובה למתקשר.
הגדרה: ללא
חובה על פי: returnResponse
חתימה של שאילתה: queryPermission('return_response')
הערות: בהרשאה הזו אין שדות שצריך לצמצם, ובדרך כלל לא נשלחים שאילתות לגבי ההרשאה הזו עבור.
run_container
שם תצוגה: מפעיל את הקונטיינר
תיאור: הפעלת המאגר עם אירוע
הגדרה: ללא
חובה על ידי: runContainer
חתימת השאילתה: queryPermission('run_container')
הערות: בהרשאה הזו אין שדות שצריך לצמצם, ובדרך כלל לא נשלחים שאילתות לגבי ההרשאה הזו עבור.
send_http
שם מוצג: שליחת בקשות HTTP
תיאור: שליחת בקשת HTTP לכתובת URL שצוינה.
חובה על ידי: getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
חתימת השאילתה: queryPermission('send_http', <url>)
הערות: קובעת אם ניתן לשלוח בקשת HTTP, בהתאם לכתובת ה-URL. כדי להבטיח חיבור מאובטח, מותר להשתמש רק בכתובות URL מאובטחות (HTTPS).
קוד לדוגמה
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
שם מוצג: שליחת פיקסלים מדפדפנים
תיאור: שליחת בקשת GET מהדפדפן לכתובת URL מסוימת.
חובה על ידי: sendPixelFromBrowser
חתימת השאילתה: queryPermission('send_pixel_from_browser', <url>)
הערות: קובעת אם ניתן לשלוח בקשה מהדפדפן, בהתאם כתובת ה-URL.
קוד לדוגמה
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
שם תצוגה: הגדרת קובץ cookie
תיאור: מגדיר קובץ cookie עם השם והפרמטרים שצוינו.
הגדרה: טבלה של שמות של קובצי Cookie שמותר להשתמש בהם, שלכל אחד מהם שדה אופציונלי
הגבלות על שם, דומיין, נתיב, מאפיין secure
ותפוגה.
חובה על ידי: setCookie
חתימת השאילתה: queryPermission('set_cookies', <name>, <options>)
הערות: קובעת אם קובץ Cookie מסוים מוגדר אפשר להוסיף את הכותרת
תגובה, בהתאם לשם קובץ ה-Cookie, לדומיין, לנתיב, למאפיין secure
ול-
את תאריך התפוגה.
קוד לדוגמה
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
השם המוצג: נעשה שימוש במפתחות פרטיים בהתאמה אישית
תיאור: שימוש במפתחות פרטיים מקובץ מפתח JSON לצורכי קריפטוגרפיה ב-Analytics.
הגדרה: רשימה של מזהי מפתחות שמותרים. המזהים חייבים להיות זהים למפתחות ב-
קובץ מפתח ה-JSON שאליו מפנה משתנה הסביבה SGTM_CREDENTIALS
בשרת.
חובה על ידי: hmacSha256
חתימת השאילתה: queryPermission('use_custom_private_keys', <key id>)
הערות: קובעת את רשימת המפתחות הפרטיים המותרים.
קוד לדוגמה
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
השם המוצג: נעשה שימוש ב-Google Application Default Credentials
תיאור: שימוש בפרטי הכניסה שמוגדרים כברירת מחדל ל-Google כדי לבצע שיחות ל-Google ממשקי API.
הגדרה: רשימה של היקפי הרשאות OAuth 2.0 של Google.
חובה על ידי: getGoogleAuth
חתימת השאילתה: queryPermission('use_google_credentials', <scopes>)
הערות: הגבלת היקפי ההרשאות של Google OAuth 2.0 שמותרים לשימוש עם Google ממשקי API.
קוד לדוגמה
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);
}