Sunucu tarafı özel şablon izinleri

Bu dokümanda, sunucu tarafı özel şablonların izinleri ana hatlarıyla açıklanmaktadır.


Her izin:

  • Bunları gerektiren API'ler tarafından kontrol edilir.
  • Kullanılan API'lere bağlı olarak korumalı alana alınmış JavaScript'te otomatik olarak algılanır. Bu, özel şablon düzenleyicide düzenlemeler yapıldığında gerçekleşir (hızlı bir geri bildirim döngüsü) ve kod derlendiğinde (doğru öğenin doğru emin olun.
  • İznin daha ayrıntılı olması için özel şablon düzenleyicide düzenlenebilir.
  • queryPermission API aracılığıyla korumalı alana alınan JavaScript'te sorgulanabilir.

access_bigquery

Görünen ad: BigQuery'ye erişir

Açıklama: Google Cloud Platform'da BigQuery'ye erişim sağlar.

Yapılandırma: Belirtilen proje, veri kümesi ve tabloya izin verme seçeneği farklı kombinasyonlara öncelik verin. Şu proje kimliği yapılandırmasını ayarlama: GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_PROJECT ortamının kullanılmasına izin verir değişkenini projectId, BigQuery API parameter dışında tuttuğunuzda proje kimliği olarak ayarlayın.

Zorunlu kılma tarihi: BigQuery

Sorgu imzası: queryPermission('access_bigquery', <operation>, <options>)

Notlar: <operation> bir dizedir ve aşağıdaki değerleri içerebilir:

  • write

<options>, şu öğeleri içeren bir nesnedir:

{
  'projectId': <project_id>,
  'datasetId': <dataset_id>,
  'tableId': <table_id>
}

Örnek kod

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

Görünen ad: Google Firestore'a erişir

Açıklama: Google Firestore'a erişim izni verir.

Yapılandırma: Belirtilen proje ve yola (joker karakter söz dizimi) izin verme seçeneği kombinasyonlarını doğrulayın. Proje kimliğini belirleme GOOGLE_CLOUD_PROJECT yapılandırması, projectId olduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT ortam değişkeni , Firestore API parameter kapsamının dışında tutuluyor.

Zorunlu kılma tarihi: Firestore

Sorgu imzası: queryPermission('access_firestore', <operation>, <options>)

Notlar: <operation> bir dizedir ve aşağıdaki değerleri içerebilir:

  • okuma - API'leri okuma ve sorgulama erişimi verir
  • yazma - Yazma API'sı için erişim izni verir
  • okuma_yazma - Okuma, yazma ve sorgu API'lerine erişim izni verir

<options>, şu öğeleri içeren bir nesnedir:

{
  'projectId': <project_id>,
  'path': <path>
}

Örnek kod

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

Görünen ad: Yanıta erişir

Açıklama: Yanıt gövdesine, üstbilgilerine veya durumuna erişir.

Yapılandırma: Herhangi bir erişime veya belirli bir erişime izin verme, bununla ilgili alt seçeneklerle birlikte çeşitli alt bileşenlere erişimi kontrol etme.

Zorunlu kılma tarihi: setPixelResponse, setResponseBody, setResponseHeader, setResponseStatus

Sorgu imzası: queryPermission('access_response', 'write', <component>[, <optional component name>])

Notlar: Giden HTTP yanıtı bileşenine erişilip erişilemeyeceğini belirler.

Örnek kod

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

Görünen ad: Şablon Depolama alanına erişir

Açıklama: Aşağıdaki işlemleri yapabilecek şablonlar için geçici depolama alanına erişim izni verir: sunucu tarafı süreci boyunca kalıcı hale gelir.

Yapılandırma: Yok

Zorunlu kılma tarihi: templateDataStorage

Sorgu imzası: queryPermission('access_template_storage')

Örnek kod

const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateDataStorage.getItemCopy(key);
}

get_cookies

Görünen ad: Çerez değerlerini okur

Açıklama: Belirtilen ada sahip çerezlerin değerlerini okur.

Yapılandırma: Okunmasına izin verilen çerez adlarının listesi.

Zorunlu kılma tarihi: getCookieValues

Sorgu imzası: queryPermission('get_cookies', <name>)

Notlar: Bir çerezin, adına bağlı olarak okunup okunamayacağını belirler.

Örnek kod

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

logging

Görünen ad: Konsolda günlük olarak gösterilir.

Açıklama: Geliştirici konsolunda ve Etiket Yöneticisi'nin önizleme modunda günlük kaydı oluşturur.

Yapılandırma: Üretimde günlük kaydını etkinleştirme seçeneği. Varsayılan olarak yalnızca şu değere ayarlanır: hata ayıklama/önizleme bölümünde oturum açmayı etkinleştirin. İzin reddedilirse logToConsole şunları yapar: hata bildirmez ancak günlük mesajını gizler.

Zorunlu kılma tarihi: logToConsole

Sorgu imzası: queryPermission('logging')

Notlar: Özel bir şablonun geliştirici konsoluna giriş yapıp yapamayacağını kontrol eder.

Örnek kod

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

Görünen ad: Mesajları kullanır

Açıklama: addMessageListener veya sendMessage API.

Yapılandırma: İleti türünü ve şablonun gönderebilir veya her ikisini birden yapabilir.

Zorunlu kılma tarihi: addMessageListener, sendMessage

Sorgu imzası: queryPermission('use_message', <usage>, <message type>)

Notlar: Kullanım; listen, send veya listen_and_send olabilir.

Örnek kod

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

Görünen ad: Kapsayıcı verilerini okur

Açıklama: Kapsayıcıyla ilgili verileri okur.

Yapılandırma: Yok.

Zorunlu kılma tarihi: getClientName, getContainerVersion

Sorgu imzası: queryPermission('read_container_data')

Notlar: Özel bir şablonun, kapsayıcı verilerini okuyup okuyamayacağını kontrol eder.

Örnek kod

const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
  return getContainerVersion();
}

read_event_data

Görünen ad: Etkinlik verilerini okur

Açıklama: Etkinlikten alınan verileri okur.

Yapılandırma: tarafından kontrol edilen herhangi bir erişime veya belirli bir erişime izin verme İzin verilen anahtar yollarının listesi (joker karakter söz dizimi desteklenir).

Zorunlu kılma tarihi: getAllEventData, getEventData

Sorgu imzası: queryPermission('read_event_data'[, <optional key>])

Notlar: Özel bir şablonun, belirli bir anahtardaki etkinlik verilerini okuyup okuyamayacağını kontrol eder yolu (veya anahtar yolu belirtilmediyse tüm etkinlik verilerini) içerir.

Örnek kod

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

Görünen ad: Etkinlik meta verilerini okur

Açıklama: Etkinlik Geri Çağırmalarındaki etkinlik meta verilerini okur

Yapılandırma: Yok

Zorunlu kılma tarihi: addEventCallback

Sorgu imzası: queryPermission('read_event_metadata')

Notlar: Özel bir şablonun, etkinlik meta verilerini şurada okuyup okuyamayacağını kontrol eder: daha fazla bilgi edindiniz.

Örnek kod

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

read_request

Görünen ad: HTTP isteğini okur

Açıklama: İstek başlıklarını, sorgu parametrelerini, gövdeyi, yolu veya uzak IP adresi.

Yapılandırma: Herhangi bir erişime veya belirli bir erişime izin verme, bununla ilgili alt seçeneklerle birlikte çeşitli alt bileşenlere erişimi kontrol etme.

Zorunlu kılma tarihi: extractEventsFromMpv1, extractEventsFromMpv2, getRemoteAddress, getRequestBody, getRequestHeader, getRequestPath, getRequestQueryParameter, getRequestQueryParameters, getRequestQueryString

Sorgu imzası: queryPermission('read_request', <component>[, <optional component name>])

Notlar: Gelen HTTP yanıt bileşenine erişilip erişilemeyeceğini belirler.

Örnek kod

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

Görünen ad: Yanıt döndürür

Description: Arayana yanıtı döndürür.

Yapılandırma: Yok

Zorunlu kılma tarihi: returnResponse

Sorgu imzası: queryPermission('return_response')

Notlar: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz .

run_container

Görünen ad: Kapsayıcıyı çalıştırır.

Açıklama: Kapsayıcıyı bir etkinlikle çalıştırır

Yapılandırma: Yok

Zorunlu kılma tarihi: runContainer

Sorgu imzası: queryPermission('run_container')

Notlar: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz .

send_http

Görünen ad: HTTP istekleri gönderir

Açıklama: Belirtilen URL'ye bir HTTP isteği gönderir.

Zorunlu kılma tarihi: getGoogleScript, sendEventToGoogleAnalytics, sendHttpGet, sendHttpRequest

Sorgu imzası: queryPermission('send_http', <url>)

Notlar: URL'ye bağlı olarak HTTP isteği gönderilip gönderilemeyeceğini belirler. Güvenli bir bağlantı sağlamak için yalnızca güvenli (HTTPS) URL'lere izin verilir.

Örnek kod

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

Görünen ad: Tarayıcılardan piksel gönderir

Açıklama: Tarayıcıdan belirli bir URL'ye GET isteği gönderir.

Zorunlu kılma tarihi: sendPixelFromBrowser

Sorgu imzası: queryPermission('send_pixel_from_browser', <url>)

Notlar: URL'ye bağlı olarak, tarayıcıdan istek gönderilip gönderilemeyeceğini belirler.

Örnek kod

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

Görünen ad: Çerez ayarlar

Açıklama: Belirtilen ad ve parametrelere sahip bir çerez ayarlar.

Yapılandırma: Her biri isteğe bağlı olan, izin verilen çerez adlarını içeren bir tablo Ad, alan, yol, secure özelliği ve geçerlilik süresiyle ilgili kısıtlamalar.

Zorunlu kılma tarihi: setCookie

Sorgu imzası: queryPermission('set_cookies', <name>, <options>)

Notlar: Belirli bir "Set-Cookie" başlık, açıklama yanıtı, çerez adına, alan adına, yola, secure özelliğine ve sona erecektir.

Örnek kod

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

Görünen ad: Özel özel anahtarlar kullanır

Açıklama: Şifreleme için JSON anahtar dosyasındaki özel anahtarları kullanır anlamına gelir.

Yapılandırma: İzin verilen anahtar kimliklerinin listesi. Kimlikler, sunucudaki SGTM_CREDENTIALS ortam değişkeni tarafından başvurulan JSON anahtar dosyasındaki anahtarlarla eşleşmelidir.

Zorunlu kılma tarihi: hmacSha256

Sorgu imzası: queryPermission('use_custom_private_keys', <key id>)

Notlar: İzin verilen özel anahtarların listesini yönetir.

Örnek kod

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

Görünen ad: Google Uygulaması Varsayılan Kimlik Bilgilerini kullanır

Açıklama: Google'a çağrı yapmak için Google varsayılan kimlik bilgilerini kullanır API'ler.

Yapılandırma: İzin verilen Google OAuth 2.0 kapsamlarının listesi.

Zorunlu kılma tarihi: getGoogleAuth

Sorgu imzası: queryPermission('use_google_credentials', <scopes>)

Notlar: İzin verilen Google OAuth 2.0 kapsamlarının Google ile kullanımını kısıtlar. API'ler.

Örnek kod

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