Sunucu tarafı özel şablon izinleri

Bu dokümanda, sunucu tarafı özel şablonlar için izinler özetlenmektedir.


Her izin:

  • Bunları gerektiren API'ler tarafından kontrol edilir.
  • Kullanılan API'lere bağlı olarak, korumalı alana sahip JavaScript'te otomatik olarak algılanır. Bu, özel şablon düzenleyicide (hızlı bir geri bildirim döngüsü için) düzenlemeler yapılırken ve kod derlendiğinde (doğru izinlerin uygulandığını doğrulamak için) gerçekleşir.
  • İznin daha spesifik olması için özel şablon düzenleyicide düzenlenebilir.
  • queryPermission API'si aracılığıyla korumalı alana alınmış 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 tablo kombinasyonlarının BigQuery ile kullanılmasına izin verme seçeneğidir. GOOGLE_CLOUD_PROJECT proje kimliği yapılandırmasının ayarlanması, projectId BigQuery API parameter öğesinden hariç tutulduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT ortam değişkeninin kullanılmasına izin verir.

Zorunlu kılan: BigQuery

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

Notlar: <operation> bir dizedir ve şu değerlere sahip olabilir:

  • 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 sağlar.

Yapılandırma: Belirtilen proje ve yol (joker karakter söz dizimi desteklenir) kombinasyonlarının Firestore ile kullanılmasına izin verme seçeneğidir. GOOGLE_CLOUD_PROJECT proje kimliği yapılandırmasını ayarlamak, projectId Firestore API parameter öğesinden hariç tutulduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT ortam değişkeninin kullanılmasına izin verir.

Zorunlu kılan: Firestore

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

Notlar: <operation> bir dizedir ve şu değerlere sahip olabilir:

  • okuma - API'leri okuma ve sorgulama erişimi verir
  • write - API yazma erişimi verir
  • read_write - 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: Çeşitli alt bileşenlere erişimi denetlemek için alt seçeneklerle birlikte, herhangi bir erişime veya belirli bir erişime izin verme seçeneğidir.

Zorunlu alanlar: setPixelResponse, setResponseBody, setResponseHeader, setResponseStatus

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

Notlar: Giden HTTP yanıtı bileşenine erişilip erişilmeyeceğ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: Sunucu tarafı işleminin kullanım ömrü boyunca kalabilecek şablonlar için geçici depolamaya erişim sağlar.

Yapılandırma: Yok

Zorunlu kılan: 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: Okuma için izin verilen çerez adlarının listesi.

Zorunlu kılan: getCookieValues

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

Notlar: Bir çerezin adına bağlı olarak okunup okunamayacağını yönetir.

Ö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 kaydı oluşturur

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 hata ayıklama/önizleme modunda günlük kaydı etkinleştirilir. İzin reddedilirse logToConsole hata bildirmez ancak günlük mesajını gizler.

Zorunlu kılan: 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'lerini kullanarak mesaj gönderir veya alır.

Yapılandırma: Mesaj türünü ve şablonun dinleme, gönderme veya her ikisini birden yapma seçeneklerinden birini belirtme seçeneği sunulur.

Zorunlu kılan: 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ılan: 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: Etkinlik verilerini okur.

Yapılandırma: Herhangi bir erişime veya izin verilen anahtar yolları listesiyle kontrol edilen belirli bir erişime izin verme seçeneğidir (joker karakter söz dizimi desteklenir).

Zorunlu kılan: getAllEventData, getEventData

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

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

Ö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ılan: addEventCallback

Sorgu imzası: queryPermission('read_event_metadata')

Notlar: Özel bir şablonun, geri çağırmalarda etkinlik meta verilerini okuyup okuyamayacağını kontrol eder.

Ö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

Description: İstek başlıklarını, sorgu parametrelerini, gövdeyi, yolu veya uzak IP adresini okur.

Yapılandırma: Çeşitli alt bileşenlere erişimi denetlemek için alt seçeneklerle birlikte, herhangi bir erişime veya belirli bir erişime izin verme seçeneğidir.

Zorunlu alanlar: 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şilmeyeceğ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

Açıklama: Arayana yanıt döndürür.

Yapılandırma: Yok

Zorunlu kılan: returnResponse

Sorgu imzası: queryPermission('return_response')

Notlar: Bu iznin daraltılacağı alan yoktur ve genellikle sorgulanmaz.

run_container

Display name: Kapsayıcıyı çalıştırır

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

Yapılandırma: Yok

Zorunlu kılan: runContainer

Sorgu imzası: queryPermission('run_container')

Notlar: Bu iznin daraltılacağı alan yoktur ve genellikle sorgulanmaz.

send_http

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

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

Zorunlu alanlar: getGoogleScript, sendEventToGoogleAnalytics, sendHttpGet, sendHttpRequest

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

Notlar: URL'ye bağlı olarak bir HTTP isteğinin yapılıp yapılamayacağını 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ılan: sendPixelFromBrowser

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

Notlar: URL'ye bağlı olarak bir isteğin tarayıcıdan 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 oluşturur.

Yapılandırma: Her biri ad, alan, yol, secure özelliği ve geçerlilik bitiş tarihiyle ilgili isteğe bağlı kısıtlamalara sahip, izin verilen çerez adları tablosu.

Zorunlu kılan: setCookie

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

Notlar: Çerez adı, alan, yol, secure özelliği ve geçerlilik süresine bağlı olarak belirli bir "Set-Cookie" üst bilgisinin yanıta eklenip eklenemeyeceğini belirler.

Ö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şlemleri için JSON anahtar dosyasındaki özel anahtarları kullanır.

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ılan: 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 API'lerine çağrı yapmak için Google varsayılan kimlik bilgilerini kullanır.

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

Zorunlu kılan: getGoogleAuth

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

Notlar: Google API'leriyle kullanılmak üzere, izin verilen Google OAuth 2.0 kapsamlarını kısıtlar.

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