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.
|
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 "Start" e "stop" possono essere | 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 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:
|
Consenti l'accesso temporaneo alle risorse il 1° marzo 2020, dalle 22:00 a mezzanotte. | Opzione 1: Opzione 2:
|
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')