Configurazione delle condizioni di accesso in base a ora e giorno

La funzionalità di limitazione di data e ora di Gestore contesto accesso offre alle aziende la possibilità di impostare i controlli dell'accesso in base alla data e all'ora.

Quando si valuta l'accesso Zero Trust, spesso è necessario limitare l'accesso degli utenti alle risorse a giorni e orari specifici. Ad esempio, ai turnisti potrebbe essere consentito accedere alle risorse aziendali solo durante l'orario del loro turno oppure agli utenti potrebbe essere concesso l'accesso temporaneo in una determinata ora del giorno.

Per applicare la condizione del livello di accesso in base all'ora e al giorno, utilizza le funzioni elencate nella tabella seguente. Il formato delle funzioni è function(timezone).

Puoi specificare timezone come UTC, fusi orari fissi che sono scarti orari e minuti espliciti dal UTC o nomi timezone lunghi come Europe/Paris, CET o US/Central. Per un elenco completo, consulta la sezione Fuso orario della definizione di Common Express Language.

Se non specifichi un "fuso orario", l'espressione viene utilizzata per impostazione predefinita su UTC.

Funzione Descrizione Esempio
getFullYear Recupera il numero che rappresenta l'anno in corso, ad esempio 2020.

È il 2020?

request.time.getFullYear("America/Los_Angeles") == 2020
getMonth Recupera il mese dell'anno. I valori del mese sono compresi tra 0 e 11, dove 0 == gennaio e 11 == dicembre.

È il mese di gennaio?

request.time.getMonth("America/Los_Angeles") == 1
getDate Recupera la data del mese. I valori delle date sono compresi tra 1 e 31, dove 1 è il primo del mese e 31 è il 31 del mese.

È il primo del mese?

request.time.getDate("America/Los_Angeles") == 1
getDayOfMonth Recupera il giorno del mese. I valori dei giorni sono compresi tra 0 e 30, dove 0 è il primo del mese e 30 è il 31 del mese.

È il primo del mese?

request.time.getDayOfMonth("America/Los_Angeles") == 0
getDayOfWeek Recupera il giorno della settimana. I valori del giorno vanno da 0 a 6, dove 0 è domenica e 6 è sabato.

È lunedì?

request.time.getDayOfWeek("America/Los_Angeles") == 1
getDayOfYear Recupera il giorno dell'anno. I valori dei giorni vanno da 0 a 365, dove 0 è il primo giorno dell'anno e 365 è il 366° giorno dell'anno.

È il primo giorno dell'anno?

request.time.getDayOfYear("America/Los_Angeles") == 0
getHours Recupera l'ora del giorno. I valori delle ore sono compresi tra 0 e 23, dove 0 indica mezzanotte e 23 indica le 23:00.

Sono le 19?

request.time.getHours("America/Los_Angeles") == 19
getMinutes Recupera il minuto dell'ora. I valori dei minuti sono compresi tra 0 e 59, dove 0 è il primo minuto e 59 è l'ultimo minuto dell'ora.

Sono le 19:30?

request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30
date Restituisce il timestamp che rappresenta la data normalizzata a mezzanotte UTC.

Ora corrente in UTC.

request.time.date()
date(tz string) Restituisce il timestamp che rappresenta la data normalizzata a mezzanotte relativa alla stringa del fuso orario <tz>.

Ora attuale nel fuso orario del Pacifico.

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

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

timeOfDay Restituisce l'attributo google.type.TimeOfDay associato al timestamp in UTC.

Ora corrente in UTC, ad esempio "09:30:00"

request.time.timeOfDay()
timeOfDay(tz string) Restituisce il valore google.type.TimeOfDay associato al timestamp e relativo alla stringa TimeZone <tz>.

Ora del giorno attuale nel fuso orario del Pacifico, ad esempio "09:30:00"

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

(per il timestamp)

Per un determinato timestamp, restituisci True se il timestamp è compreso tra il momento "start" e il giorno "start" (inclusi) e "stop" (esclusivo).

'Start' (Avvia) e "interrompi" può essere type.Timestamp o una stringa, che verrà convertita in type.Timestamp.

Il timestamp corrente, in PST, è compreso tra le ore 00:00 (inclusive) del 10 gennaio 2020 e le ore 00:00 (escluse) dell'11 gennaio 2020?

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

(per TimeOfDay)

Per un determinato TimeOfDay, restituisce True se l'ora della data è compresa tra "start" (incluso) e "stop" (escluso).

"start" e "stop" possono essere type.TimeOfDay o una stringa, che verrà convertita in type.TimeOfDay.

L'ora corrente del giorno, nel fuso orario del Pacifico, è compresa tra le 09:30 (incluse) e le 17:30 (escluse)?

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

La tabella seguente contiene esempi di come utilizzare le limitazioni di data e ora:

Norma di esempio Espressione
Consenti ai turnisti di accedere alle risorse dal lunedì al venerdì dalle 9:00 alle 17:00, ad eccezione del 4 luglio.

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

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

Consenti l'accesso temporaneo alle risorse il 1° marzo 2020, tra le 22:00 e mezzanotte.

Opzione 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

Opzione 2:

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

Di seguito sono riportate alcune espressioni di esempio che utilizzano alcune delle funzioni per acquisire intervalli di tempo specifici:

Esprimi l'intervallo durante l'orario di apertura
Il formato di data e ora è "HH:MM:SS" e segue lo standard 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')

Esprimere giorni specifici del mese, prima settimana
(nota sul supporto del formato fuso orario alternativo)

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

Intervalli di date specifici, annuali
ad esempio per i report trimestrali.

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