Configurazione delle condizioni di accesso in base a ora e 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 si valuta 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 di Common Express Language.

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 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 dei giorni sono compresi tra 0 e 6, dove 0 indica domenica e 6 indica sabato.

È lunedì?

request.time.getDayOfWeek("America/Los_Angeles") == 1
getDayOfYear Recupera il giorno dell'anno. I valori dei giorni sono compresi tra 0 e 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:00?

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 attuale nel fuso orario 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 il 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 quello di inizio (inclusi) e "stop" (esclusivo).

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

Il timestamp attuale, in PST, è compreso tra le 00:00 (incluso) del 10 gennaio 2020 e le 00:00 (escluso) 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 è compresa tra il valore "start" (inclusi) e "stop" (esclusivo).

'Start' (Avvia) e "interrompi" può 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:

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 riportate alcune espressioni di esempio 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
(Supporto delle note per il formato del 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')