Mengonfigurasi ketentuan akses waktu dan hari

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

Saat mengevaluasi akses zero-trust, sering kali perlu membatasi akses pengguna ke resource pada hari dan waktu tertentu. Misalnya, pekerja shift mungkin hanya diizinkan untuk mengakses resource perusahaan selama jam kerja mereka, atau pengguna mungkin diberi akses sementara 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 sebagai nama timezone panjang seperti Europe/Paris, CET, atau US/Central. Untuk mengetahui listingan lengkap, lihat bagian Zona Waktu dalam definisi Common Express Language.

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

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

Apakah tahun 2020?

request.time.getFullYear("America/Los_Angeles") == 2020
getMonth Mengambil bulan dalam setahun. Nilai bulan berkisar dari 0 hingga 11, dengan 0 == Januari dan 11 == Desember.

Apakah bulannya Januari?

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

Apakah ini tanggal satu bulan?

request.time.getDate("America/Los_Angeles") == 1
getDayOfMonth Mengambil hari dalam sebulan. Nilai hari berkisar dari 0 hingga 30, dengan 0 adalah hari pertama bulan, dan 30 adalah hari ke-31 bulan.

Apakah ini tanggal satu bulan?

request.time.getDayOfMonth("America/Los_Angeles") == 0
getDayOfWeek Mengambil hari dalam seminggu. Nilai hari berkisar dari 0 hingga 6, dengan 0 adalah hari Minggu, dan 6 adalah hari Sabtu.

Apakah hari ini Senin?

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

Apakah hari pertama tahun ini?

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

Apakah pukul 19.00?

request.time.getHours("America/Los_Angeles") == 19
getMinutes Mengambil menit dalam jam. Nilai menit berkisar dari 0 hingga 59, dengan 0 adalah menit pertama dan 59 adalah menit terakhir dalam satu jam.

Apakah pukul 19.30?

request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30
date Menampilkan 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 relatif terhadap string Zona Waktu <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 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 'start' (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 00.00 10 Januari 2020 (inklusif) dan 00.00 11 Januari 2020 (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 tanggal antara 'start' (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 sampai Jumat antara pukul 09.00 hingga 17.00, kecuali pada hari kemerdekaan Amerika Serikat.

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 resource pada 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:

Mengekspresikan rentang selama jam buka
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')

Mengekspresikan hari tertentu dalam sebulan, minggu pertama
(Catatan dukungan untuk format zona waktu alternatif)

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

Mengekspresikan rentang tanggal tertentu, tahunan
Misalnya, untuk pelaporan kuartalan.

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