Configurazione delle condizioni di accesso in base all'ora e al giorno

La funzionalità di limitazione della data e dell'ora di Access Context Manager consente alle aziende di impostare i controlli di accesso in base alla data e all'ora.

Quando valuti l'accesso zero trust, è spesso necessario limitare l'accesso degli utenti alle risorse a giorni e orari specifici. Ad esempio, i lavoratori turnisti potrebbero essere autorizzati ad accedere alle risorse aziendali solo durante le ore del turno oppure agli utenti potrebbe essere concesso l'accesso temporaneo tra una determinata ora del giorno e un'altra.

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, fuso orario fisso con offset espliciti in ore e minuti rispetto a UTC oppure come nomi timezone lunghi come Europe/Paris, CET o US/Central. Per un elenco completo, consulta la sezione Fuso orario della definizione del linguaggio Common Express.

Se non specifichi un "fuso orario", il valore predefinito dell'espressione è UTC.

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

È il 2020?

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

Il mese è gennaio?

request.time.getMonth("America/Los_Angeles") == 0
getDate Recupera la data del mese. I valori della data vanno da 1 a 31, dove 1 indica il primo giorno del mese e 31 il 31° giorno del mese.

È il primo del mese?

request.time.getDate("America/Los_Angeles") == 1
getDayOfMonth Recupera il giorno del mese. I valori del giorno vanno da 0 a 30, dove 0 indica il primo giorno del mese e 30 il 31° giorno 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 del giorno 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 dell'ora vanno da 0 a 23, dove 0 indica mezzanotte e 23 indica le 23:00.

Sono le 19:00?

request.time.getHours("America/Los_Angeles") == 19
getMinutes Recupera il minuto dell'ora. I valori dei minuti vanno da 0 a 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 nel fuso orario UTC.

request.time.date()
date(tz string) Restituisce il timestamp che rappresenta la data normalizzata a mezzanotte rispetto alla stringa TimeZone <tz>.

Ora corrente nel fuso orario del Pacifico.

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

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

timeOfDay Restituisce il valore 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 corrente 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, restituisce True se il timestamp è compreso tra l'ora "start" (inclusa) e "stop" (escluso).

"Start" e "stop" possono 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 la data e l'ora sono comprese 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, 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:

Norme di esempio Espressione
Consenti ai lavoratori che fanno i turni 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, dalle 22:00 a 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 riportati alcuni esempi di espressioni che utilizzano alcune delle funzioni per acquisire intervalli di tempo specifici:

Esprimere l'intervallo durante l'orario di apertura
Il formato data/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

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