Mengonfigurasi kondisi akses waktu dan hari

Fitur pembatasan tanggal dan waktu Access Context Manager memberi perusahaan kemampuan untuk menetapkan kontrol akses berdasarkan tanggal dan waktu.

Saat mengevaluasi akses zero-trust, sering kali Anda perlu membatasi akses pengguna ke resource ke hari dan waktu tertentu. Misalnya, pekerja shift mungkin hanya diizinkan untuk mengakses resource perusahaan selama jam kerja mereka, atau pengguna dapat diberi akses sementara di antara waktu tertentu dalam sehari.

Untuk menerapkan kondisi tingkat akses waktu dan hari, gunakan fungsi yang tercantum dalam tabel berikut. Format fungsinya adalah function(timezone).

Anda dapat menentukan timezone sebagai UTC, zona waktu tetap yang merupakan selisih jam dan menit eksplisit dari UTC, atau selama nama timezone seperti Europe/Paris, CET, atau US/Central. Untuk listingan lengkap, lihat bagian Zona Waktu pada definisi Common Express Language.

Jika Anda tidak menetapkan 'zona waktu', ekspresi ini akan ditetapkan secara default ke UTC.

Fungsi Deskripsi Contoh
getFullYear Ambil angka yang mewakili tahun ini, seperti 2020.

Apakah tahun ini 2020?

request.time.getFullYear("America/Los_Angeles") == 2020
getMonth Ambil bulan. Nilai bulan berkisar dari 0 hingga 11, di mana 0 == Januari dan 11 == Desember.

Apakah bulan ini Januari?

request.time.getMonth("America/Los_Angeles") == 1
getDate Ambil tanggal. Nilai tanggal berkisar dari 1 hingga 31, dengan 1 adalah tanggal satu, dan 31 adalah tanggal 31 dalam bulan tersebut.

Apakah ini tanggal satu?

request.time.getDate("America/Los_Angeles") == 1
getDayOfMonth Ambil hari. Nilai tanggal berkisar dari 0 hingga 30, di mana 0 adalah yang pertama dalam sebulan, dan 30 adalah tanggal 31 dalam sebulan.

Apakah ini tanggal satu?

request.time.getDayOfMonth("America/Los_Angeles") == 0
getDayOfWeek Ambil hari. Rentang nilai untuk hari adalah 0 hingga 6, di mana 0 adalah hari Minggu dan 6 adalah hari Sabtu.

Apakah hari Senin?

request.time.getDayOfWeek("America/Los_Angeles") == 1
getDayOfYear Ambil hari dalam setahun. Nilai hari berkisar dari 0 hingga 365, di mana 0 adalah hari pertama dalam setahun, dan 365 adalah hari ke-366 dalam setahun.

Apakah ini hari pertama setiap tahun?

request.time.getDayOfYear("America/Los_Angeles") == 0
getHours Ambil jam. Nilai jam berkisar dari 0 hingga 23, di mana 0 adalah tengah malam dan 23 adalah 23.00.

Apakah jam 7 malam?

request.time.getHours("America/Los_Angeles") == 19
getMinutes Mengambil menit dari jam. Rentang nilai menit adalah dari 0 hingga 59, di mana 0 adalah menit pertama dan 59 adalah menit terakhir dari jam tersebut.

Apakah pukul 19.30?

request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30
date Tampilkan stempel waktu yang mewakili tanggal yang dinormalisasi ke tengah malam UTC.

Waktu saat ini dalam UTC.

request.time.date()
date(tz string) Menampilkan stempel waktu yang mewakili tanggal yang dinormalisasi ke tengah malam, yang relatif terhadap string TimeZone <tz>.

Waktu saat ini dalam waktu Pasifik.

request.time.date('America/Los_Angeles')

request.time.date('08:00')

timeOfDay Menampilkan google.type.TimeOfDay yang terkait dengan stempel waktu dalam UTC.

Waktu saat ini dalam sehari dalam UTC, seperti '09:30:00'

request.time.timeOfDay()
timeOfDay(tz string) Menampilkan google.type.TimeOfDay yang terkait dengan stempel waktu dan relatif terhadap string TimeZone <tz>.

Waktu saat ini dalam waktu pasifik, seperti '09:30:00'

request.time.timeOfDay('America/Los_Angeles')
between(start, stop)

(untuk stempel waktu)

Untuk stempel waktu tertentu, tampilkan True jika stempel waktu berada di antara waktu 'mulai' (inklusif) dan 'stop' (eksklusif).

'Start' dan 'stop' dapat berupa type.Timestamp atau string, yang akan dikonversi menjadi type.Timestamp.

Apakah stempel waktu saat ini, dalam PST, antara 10 Januari 2020 pukul 00.00 (inklusif) dan 11 Januari 2020 00.00 (eksklusif)?

request.time.date('08:00') .between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
between(start, stop string)

(untuk TimeOfDay)

Untuk TimeOfDay tertentu, tampilkan True jika waktu tanggalnya antara 'mulai' (inklusif) dan 'stop' (eksklusif).

'Start' dan 'stop' dapat berupa type.TimeOfDay atau string, yang akan dikonversi menjadi type.TimeOfDay.

Apakah waktu saat ini, dalam waktu Pasifik, antara pukul 09.30 (inklusif) dan 17.30 (eksklusif)?

request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')

Tabel berikut berisi contoh cara menggunakan batasan waktu dan tanggal:

Contoh Kebijakan Ekspresi
Izinkan pekerja shift mengakses resource dari Senin hingga Jumat antara pukul 09.00 hingga 17.00, kecuali pada bulan Juli.

Opsi 1:

request.time.getDayOfWeek("America/Los_Angeles") >= 1 && request.time.getDayOfWeek("America/Los_Angeles") <= 5 && request.time.getHours("America/Los_Angeles") >= 9 && request.time.getHours("America/Los_Angeles") <= 17 && !(request.time.getMonth("America/Los_Angeles") == 6 && request.time.getDayOfMonth("America/Los_Angeles") == 3)

Opsi 2:

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')

Izinkan akses sementara ke referensi pada tanggal 1 Maret 2020, antara pukul 22.00 hingga tengah malam.

Opsi 1:

request.time.getFullYear("America/Los_Angeles") == 2020 && request.time.getMonth("America/Los_Angeles") == 2 && request.time.getDayOfMonth("America/Los_Angeles") == 0 && request.time.getHours("America/Los_Angeles") >= 22 && request.time.getHours("America/Los_Angeles") <= 23

Opsi 2:

request.time.between('2020-03-01T23:00:00+08:00', '2020-03-02T00:00:00+08:00')

Berikut adalah beberapa contoh ekspresi yang menggunakan beberapa fungsi untuk mengambil rentang waktu tertentu:

Ekspresikan rentang selama jam kerja
Format tanggal-waktu adalah 'HH:MM:SS' dan mengikuti standar RFC 3339.

request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
request.time.date('America/Los_Angeles')
    .between('01-10-2020T00:00:00+08:00', '01-11-2020T00:00:00-07:00')

Menyatakan hari tertentu dalam sebulan, minggu pertama
(Perhatikan bahwa dukungan untuk format zona waktu alternatif)

request.time.getDayOfMonth('America/Los_Angeles') < 7

Ekspresikan rentang tanggal tertentu, tahunan
Misalnya, untuk pelaporan tiga bulanan.

request.time.date('Asia/Hong_Kong').between(
    request.time.getFullYear('08:00') + '-12-15T00:00:00+08:00',
    request.time.getFullYear('08:00')+1 + '-01-01T00:00:00+08:00')