Gelişmiş mod için bağlama duyarlı erişim örnekleri

Bu makalede, bağlama duyarlı erişimin kullanım alanlarıyla ilişkili olarak özel erişim düzeylerinden yararlanan politikalar açıklanmaktadır. Aşağıdaki örneklerle, gelişmiş modda Common Expressions Language (CEL) kullanarak özel erişim düzeyleri oluşturmayı öğreneceksiniz.

Dilerseniz CEL ifadelerini kullanarak özel erişim düzeyleri oluştururken işlevler ve makrolardan da yararlanabilirsiniz.

Bağlama duyarlı erişim arayüzü kullanılarak temel modda geliştirilen erişim düzeyi örneklerini Temel mod için bağlama duyarlı erişim örnekleri sayfasından inceleyebilirsiniz.

Kimlik doğrulama örnekleri

Kullanıcıların giriş kimlik bilgilerinin gücüne göre erişim izni verme

Hassas veri içeren uygulamalara erişim sürecinin güvenliğini artırmak amacıyla, kullanıcının uygulamaya erişip erişemeyeceğine karar verirken, sistemde kimlik doğrulaması yapmak için kullanılan yöntemden yararlanabilirsiniz.

Örneğin, yalnızca şifreyle giriş yapan kullanıcıların hassas bilgi içermeyen uygulamalara erişmesine izin verirken, ikinci faktör olarak donanım güvenlik anahtarıyla giriş yapmış kullanıcıların en hassas kurumsal uygulamalara erişmesine izin verebilirsiniz.

Bu erişim düzeyinde, kullanıcıların 2 Adımlı Doğrulama için hem şifre hem donanım anahtarı kullanarak giriş yaptığını ve hassas uygulamalara erişebildiğini doğrulamak için request.auth özellikleri kullanılır.

request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true

Kimlik doğrulama bilgileri güçlü olan kullanıcılara erişim izni verme

Yöneticiler genellikle, kurumsal kaynaklara erişim izni vermeden önce kullanıcının güçlü kimlik bilgileriyle kimlik doğrulaması yapmasını ister. Aşağıdaki örnekte levels ve request.auth özellikleri şu şekilde kullanılmıştır:

  • Kullanıcı, şirkete ait bir cihazla oturum açıyorsa SMS dışında herhangi bir MFA yöntemi yeterli olur. (Bu yöntemler arasında push bildirimi, donanım/yazılım güvenlik anahtarı ve tek kullanımlık şifre yer alır.)
  • Kullanıcı, şirkete ait olmayan bir cihazla oturum açıyorsa donanım/yazılım güvenlik anahtarı kullanılmalıdır.

// Kurumsal cihazlarda temel MFA (SMS değil) ve aksi takdirde güvenlik anahtarı (donanım veya yazılım) zorunlu kılınır.
levels.Require_Secure_Device &&
(
(
levels.Require_Corporate_Device &&
request.auth.claims.crd_str.mfa &&
!request.auth.claims.crd_str.sms
) ||
(
!levels.Require_Corporate_Device &&
(
request.auth.claims.crd_str.hwk || request.auth.claims.crd_str.swk
)
)
)

Uygulamalara yalnızca DBSC'ye bağlı oturumlardan erişime izin verme

Masaüstü web uygulamalarıyla sınırlıdır ve mobil uygulamalar veya API'ler için geçerli değildir.

Cihaza Bağlı Oturum Kimlik Bilgileri'ni (DBSC) zorunlu kılarak hassas veri içeren uygulamalara erişim sürecinin güvenliğini artırabilirsiniz. DBSC, Windows'da Chrome Tarayıcı kullanan kullanıcıların oturumunu cihazlarına bağlar. Bu sayede oturum ele geçirme riski önemli ölçüde azaltılabilir.

Bu erişim düzeyinde, kullanıcı oturumlarının belirli bir cihaza bağlı olduğunu doğrulamak için request.auth özelliği kullanılır. Bu durumda uygulamaya erişim izni verilir. Aksi takdirde (yani oturum DBSC'ye bağlı değilse) erişim reddedilir.

Hataları önlemek için bu erişim düzeyine tabi tüm kullanıcı hesapları için DBSC'yi etkinleştirin. Ayrıntılı bilgi için DBSC'yi etkinleştirme başlıklı makaleyi inceleyin.

Etkin modu etkinleştirmeden önce erişim düzeyini Denetleyici modu olarak ayarlayın. Denetleyici modunda, erişim düzeyini zorunlu kılmanın etkisini kullanıcı erişimini kesintiye uğratmadan test edebilirsiniz.

Özel erişim düzeyinizi oluşturmak için şu CEL ifadesini kullanın:

request.auth.sessionBoundToDevice(origin) == true

DBSC'yi yalnızca Chrome Tarayıcı 136 veya sonraki sürümlerin yüklü olduğu Windows cihazlarda zorunlu kılmak için şu CEL ifadesini kullanın:

!(device.os_type == OsType.DESKTOP_WINDOWS && device.chrome.versionAtLeast("136.0.0")) || request.auth.sessionBoundToDevice(origin) == true

Cihaz örnekleri

BeyondCorp Alliance iş ortağının bildirdiği sinyallere göre cihazdan erişime izin verme

Bir BeyondCorp Alliance iş ortağı tarafından bildirilen cihaz sinyallerini kullanabilirsiniz. Bu örnekte, uygulama olarak Lookout Software kullanılmıştır.

Bu erişim düzeyinde, Google Workspace'e erişmek için kullanılan cihazın politikalara uyduğunu ve Lookout tarafından durum puanının Çok İyi olduğunun bildirildiğini doğrulamak için device özelliği kullanılır.

device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOOD

Yalnızca en son güncellemeleri kullanan ve yönetilen Chrome tarayıcılardan erişime izin verme

Bu erişim düzeyinde, kullanıcıların yönetilen bir Chrome tarayıcının en yeni sürümünü kullandığını doğrulamak için device özelliği kullanılır ve yalnızca bu tür tarayıcılar üzerinden erişime izin verilir.

device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81")

Kurumsal sertifika kullanarak erişime izin verme

Bir cihazın şirkete ait bir varlık olup olmadığını belirlemek için özel erişim düzeylerindeki cihazlarda kurumsal sertifikalar kullanabilirsiniz. Bu erişim düzeyinde, öğe doğrulaması için device özelliği kullanılır. Daha fazla bilgi ve örnekler için Kurumsal sertifika koşullarını yapılandırma bölümünü okuyun.

Bir cihazın birden fazla sertifikası olabilir. Kurumsal sertifikalar, exists() makrosu kullanılarak özel bir erişim düzeyinde kullanılır. Örneğin:

device.certificates.exists(cert, predicate)

Bu örnekte sertifika, cihazın kurumsal sertifikasına bağlamak için koşul değişkeninde kullanılacak basit bir tanımlayıcıdır. exists() makrosu, her öğe için döndürülen koşul sonuçlarını veya (||) operatörüyle birleştirir. En az bir sertifika koşul ifadesini karşılıyorsa makrolar doğru değerini döndürür.

Aşağıdaki tabloda, özel erişim düzeyleriyle kullanmak üzere CEL ifadeleri oluşturmak için yararlanabileceğiniz özellikler listelenmiştir. Dize karşılaştırmalarının büyük/küçük harfe duyarlı olduğunu unutmayın.

Özellik Açıklama Koşul ifadesi
örneği
(burada sertifika,
makroların bir tanımlayıcısıdır)
is_valid

Sertifika geçerliyse ve süresi dolmamışsa değer "doğru"dur.
(boolean)

cert.is_valid
cert_fingerprint Sertifikanın parmak izi
(base64 doldurulmamış SHA256)
cert.cert_fingerprint == origin.
clientCertFingerprint()
root_ca_fingerprint Bu sertifikayı imzalamak için kullanılan kök CA sertifikasının parmak izi
(base64 doldurulmamış SHA256)
cert.root_ca_fingerprint == "the_fingerprint"
kartı veren kuruluş

Sertifikayı verenin adı
(tümüyle genişletilmiş adlar)

Sertifikayı verenin adını bulmak için sertifikada aşağıdaki komutu çalıştırın:

$ openssl x509 -in ca_1.crt -noout
-issuer
issuer=
/C=IN/ST=UP/L=NCR/O=BCEDemo/
OU=BCEDemo_1/CN=inter_1/
emailAddress=test_inter1@beyondcorp.in

Erişim düzeyinde kullanılan sertifikayı veren dizesi, çıkışın tersidir ve "/" işareti virgül ile değiştirilir. Örneğin:

EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN

cert.issuer == "EMAILADDRESS=test_inter1
@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN"
subject Sertifikanın konu adı
(tümüyle genişletilmiş adlar)
cert.subject == "CA_SUB"
serial_number

Sertifikanın seri numarası
(dize)

cert.serial_number == "123456789"
template_id Sertifika için X.509 uzantısı Sertifika Şablonu'nun şablon kimliği
(dize)
cert.template_id == "1.3.6.1.4.1.311.21.
8.15608621.11768144.
5720724.
16068415.6889630.81.
2472537.7784047"

Yaygın olarak kullanılan politika örnekleri:

Cihazın, şirket kök sertifikası tarafından imzalanmış geçerli bir kurumsal sertifikaya sahip olduğunu doğrulayın

device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")

Cihazdaki kurumsal sertifikayı vereni doğrulama

device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")

Disk şifreleme ve ekran kilidi etkinleştirilmiş cihazlara erişime izin verme

Bu örnekte, hem disk şifrelemenin hem de ekran kilidinin etkinleştirilmesini zorunlu kılmak için device özelliği kullanılır. Ayrıca, cihazın yöneticiler tarafından onaylanması gerekir.

Varsayılan olarak, Endpoint Verification ile oluşturulan tüm cihazlar onaylanır. Bununla birlikte, cihazın kaybolması gibi durumlarda cihazı engellemek isteyebilirsiniz. Bu tür durumlarda ilgili cihazlardan şirket kaynaklarına erişilmesini istemezsiniz.

Bu belgedeki diğer erişim düzeyi örnekleri için bu erişim düzeyinin adının Require_Secure_Device olduğunu varsayın.

// Disk şifreleme ve ekran kilidi etkin olmalıdır
// Bu, tüm büyük platformlarda (Windows, Mac, Linux, CrOS, iOS, Android) geçerlidir
// Bu temel bir özelliktir ve diğer tüm erişim düzeyleri buna bağlı olmalıdır
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.is_secured_with_screenlock &&
device.is_admin_approved_device

Chrome tarayıcıyı temel güvenlik şartlarıyla kullanan cihazlara erişime izin verme

Bu örnekte erişim düzeyinde, Chrome tarayıcıyı temel güvenlik şartlarıyla kullanmayı zorunlu kılmak için device özelliği kullanılır.

// Chrome'un profil veya tarayıcı düzeyinde yönetilmesi gerekir,
// güvenlik olayı raporlaması etkin olmalı ve 97 veya daha yeni bir sürüm olmalıdır
levels.Require_Secure_Device &&
(
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED ||
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
) &&
device.chrome.is_security_event_analysis_enabled &&
device.chrome.versionAtLeast("97")

Chrome tarayıcıyı güvenlik şartlarıyla kullanan cihazlara erişime izin verme

Bu örnekte, kullanıcının yönetilen bir Chrome tarayıcı veya profil ile oturum açmasını ve Chrome'da tehdit ve veri koruma bağlayıcılarının etkinleştirilmesini zorunlu kılmak için device özelliği kullanılır. Daha önce açıklanan Yönetilen Chrome'u Zorunlu Kıl erişim düzeyi için ise örnekte levels özelliği kullanılır. Aşağıdaki örnekte, bağımlı erişim düzeyinin adının Require_Managed_Chrome olduğu varsayılmıştır.

// Yönetilen Chrome'u zorunlu kıl (Require_Managed_Chrome erişim düzeyine bağlıdır)
// ve indirmeler için içerik incelemesini zorunlu kılın, URL kontrolü de etkinleştirilmiş olmalıdır
levels.Require_Managed_Chrome &&
device.chrome.is_file_download_analysis_enabled &&
device.chrome.is_realtime_url_check_enabled

Şirkete ait cihazlara erişime izin verme

Erişimi kontrol etmenin bir şartı, yalnızca cihaz şirket tarafından yönetildiğinde veya şirkete ait olduğunda erişime izin vermektir. Bir cihazın şirkete ait olup olmadığını veya yönetilip yönetilmediğini belirlemenin birçok yolu vardır. Bunlardan bazıları:

  • Cihazın şirketin öğe yönetim sistemindekiyle eşleşen bir seri numarası olup olmadığına bakma
  • Cihazın şirket tarafından verilen geçerli bir kurumsal sertifikaya sahip olup olmadığına bakma

Bu iki yaklaşım, cihazın şirkete ait olup olmadığını veya yönetilip yönetilmediğini belirlemek için levels ve device özelliklerini kullanan aşağıdaki özel erişim düzeyinde kontrol edilebilir.

// Aşağıdaki koşullardan biri geçerliyse cihaz şirkete aittir:
// 1. Seri numarası yöneticinin yüklediği numarayla eşleşirse
// 2. Cihazın, kuruluş tarafından verilmiş geçerli bir sertifikası varsa
levels.Require_Secure_Device &&
(
device.is_corp_owned_device ||
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)

Parmak izi, DER kodlamalı sertifikanın doldurulmamış base64 kodlamalı SHA256 özetidir (ikili biçimde). Dize, openssl ile aşağıdaki prosedür kullanılarak sertifikadan PEM biçiminde oluşturulabilir:

$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der > digest.sha
$ openssl base64 -in digest.sha

Yalnızca CrowdStrike'taki cihaz verileri güncel olduğunda erişime izin verme

Falcon Sıfır Güven Değerlendirmesi (ZTA) puanı kapsamında CrowdStrike'ın yayınladığı iki zaman damgası vardır:
  • Oluşturulma zaman damgası (iat)
  • Bitiş zaman damgası (exp)

Bu erişim düzeyinde, CrowdStrike verilerinin güncel olduğundan emin olmak için device özelliği kullanılır. Falcon ZTA'dan yeni değerlendirmeler alınırken Chrome Enterprise Premium'da 90 dakikalık bir gecikme yaşandığını unutmayın. Bu nedenle, bir saatten kısa sürelerin kullanılması önerilmez.

// Crowdstrike verileri için aşağıdaki koşullardan birinin geçerli olduğundan emin olun:
// Bu koşullardan birini karşılamalıdır
// 1. Cihaz son bir gün içinde değerlendirilmiştir
// 2. Değerlendirmenin süresi dolmamış (son iat'den bu yana 2 hafta geçmemiş) olmalıdır.
device.vendors içinde "CrowdStrike" olmalıdır. && (
request.time - timestamp(device.vendors["CrowdStrike"].data["iat"]) < duration("1d") ||
timestamp(device.vendors["CrowdStrike"].data["exp"]) - request.time > duration("0m")
)

BeyondCorp Alliance'ın bir cihazı uyumlu olarak kabul ettiği durumlarda erişime izin verme

Chrome Enterprise Premium, cihaz sinyallerini ve bağlamı Chrome Enterprise Premium çözümüne entegre etmek için birçok BeyondCorp Alliance ekosistem iş ortağıyla birlikte çalışır. İş ortakları, Chrome Enterprise Premium ile istedikleri sayıda özellik paylaşabilir. Bunlardan biri, is_compliant_device özelliğidir. Aşağıdaki örnekte, BeyondCorp Alliance iş ortaklarından herhangi birinin Chrome Enterprise Premium ile entegre olup olmadığını ve cihazı uyumlu kabul edip etmeyeceğini nasıl kontrol edebileceğimizi göstermek için device özelliği kullanılmıştır.

exists makrosu, ifadeyi her bir BeyondCorp Alliance iş ortağı için || (veya) operatörüyle genişletir.

// Check to see if any of the BCA partners consider the device to be compliant
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
v, v in device.vendors && device.vendors[v].is_compliant_device
)

Android doğrulanmış başlatma durumu yeşil olduğunda erişime izin verme

Bu örnekte, cihazların Android'in güvenli bir sürümünü çalıştırdığından emin olmak için device özelliği kullanılır.

Yürütülen kodun bir saldırgandan veya yolsuzluktan değil, güvenilir bir kaynaktan (genellikle cihaz OEM'leri) geldiği Doğrulanmış Başlatma kontrolleri. Ayrıntılı bilgi için Doğrulanmış Başlatma başlıklı makaleyi inceleyin.

// Android için doğrulanmış başlatma durumunun yeşil görünmesi gerekir
device.android_device_security.verified_boot == true

CTS uygunluk kontrollerini geçen cihazlara erişime izin verme

Bu örnekte, cihazların Compatibility Test Suite (CTS) uygunluk kontrollerini geçmesini zorunlu kılmak için device özellikleri kullanılır. Ayrıntılı bilgi için Compatibility Test Suite başlıklı makaleyi inceleyin.

// Cihazların CTS uygunluk kontrollerini geçmesini zorunlu kıl
device.android_device_security.cts_profile_match == true

Google Play Protect'in Uygulama Doğrulama özelliğinin açık olduğu cihazlara erişime izin verme

Bu örnekte, cihazların Google Play Protect Uygulama Doğrulama'yı etkinleştirmesini zorunlu kılmak için device özellikleri kullanılır.

Uygulama Doğrulama, Google Play dışındaki kaynaklardan yüklenen uygulamaları tehditlere karşı tarar. Ayrıca, zararlı olabilecek uygulamalara karşı da cihazları düzenli olarak tarar. Uygulama Doğrulama özelliği varsayılan olarak açıktır. Gelişmiş yönetim kapsamındaki cihazlarda kullanıcıların bu ayarı devre dışı bırakıp bırakamayacağını belirleyebilirsiniz. Daha fazla bilgi için Android mobil cihazlara yönelik ayarları uygulama başlıklı makaleyi inceleyin.

// Cihazlarda Google Play Protect'in uygulamaları doğrulama özelliğini etkinleştirmesini zorunlu kıl
device.android_device_security.verify_apps_enabled == true

Potansiyel zararlı uygulamalara sahip cihazlara erişime izin vermeme

Bu örnekte, zararlı olabilecek uygulamalara sahip cihazlara erişimi reddetmek için device özellikleri kullanılır. Bu uygulamalar genellikle "kötü amaçlı yazılım" olarak adlandırılır. Ayrıntılı bilgi için Potansiyel Zararlı Uygulamalar (PHA'lar) başlıklı makaleyi inceleyin.

// Potansiyel zararlı uygulamalara sahip cihazlara erişimi reddet android_device_security.has_potentially_harmful_apps != true

Zamana dayalı erişim örnekleri

Vardiyalı çalışanlara yalnızca çalışma saatleri içinde erişim izni verme

İşletmeler, vardiyalı çalışanlarının şirket kaynaklarına yalnızca çalışma saatleri içinde erişebildiğinden emin olmak ister. Aşağıdaki erişim düzeylerinde, pazartesiden cumaya 3 vardiyayı tanımlamak için levels özelliği kullanılmıştır.

// 1. vardiya: Pazartesi-Cuma, gece yarısı-08:00
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('00:00:00', '08:00:00')


// 2. vardiya: Pazartesi-Cuma, 08:00-16:00
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('08:00:00', '16:00:00')


// 3. vardiya: Pazartesi-Cuma, 16:00-24:00
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('16:00:00', '00:00:00')


// Vardiyalı çalışanların, 4 Temmuz hariç tutularak pazartesiden cumaya 09:00 ile 17:00 arasında kaynaklara erişmesine izin verir.
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
!(
request.time.getMonth("America/Los_Angeles") == 6 &&
request.time.getDayOfMonth("America/Los_Angeles") == 3
) &&
request.time.timeOfDay("America/Los_Angeles").between('09:30:00', '17:00:00')

Geçici erişime izin verme

Kuruluşlar bazen, yöneticinin güvenli bir cihaza erişimi olmadığı fakat kısa süreliğine acil erişime ihtiyaç duyduğu durumlarda acil durum erişimine izin vermek ister.

Bu durumda, levels özelliğini kullanarak zaman ve konum kısıtlamalı bir erişim düzeyi oluşturun ve bunu ilgili yöneticiye atayın. Bu erişim düzeyi atandığında, yalnızca belirtilen süre boyunca geçerli olur. Bu süre sona erdiğinde yönetici erişimi mevcut şartlarla tekrar kontrol edilir.

// 1 Mart 2022 tarihinde, 22:00 ile 00:00 arasında kaynaklara geçici erişim sağlar,
// bu erişim ABD bölgesi sınırları içinde verilmelidir.
levels.Require_Secure_Device &&
request.time.between('2022-03-01T23:00:00+08:00', '2022-03-02T23:59:59+08:00') &&
origin.region_code == "US"
// Bitiş zamanının hariç tutulduğunu unutmayın. Bu nedenle, yukarıdaki kodda kullanıcıların erişemeyebileceği 2 saniye olabilir.
Diğer bir seçenek ise şu koşulu kullanmaktır:
// !between('00:00:01','16:00:00')

İki düzeyden alınan koşulları birleştirme örneği

İki erişim düzeyinin koşullarını birleştirerek yeni bir erişim düzeyi tanımlama

Bu erişim düzeyinde levels özellikleri kullanılır ve kullanıcıların iki erişim düzeyinin koşullarını da karşılaması gerekir. Bu örnekte access_level_name_1 ve access_level_name_2, Dahili Ad'ı ifade eder.

levels.access_level_name_1 && levels.access_level_name_2


Google, Google Workspace ve ilgili markalar ile logolar Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları, ilişkili oldukları şirketlerin ticari markalarıdır.