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