Com o recurso de restrição de data e hora do Access Context Manager, as empresas podem definir controles de acesso com base na data e hora.
Ao avaliar o acesso de confiança zero, muitas vezes é necessário restringir o acesso do usuário a recursos em dias e horários específicos. Por exemplo, os funcionários que trabalham em turnos podem ter acesso apenas aos recursos da empresa durante o horário de turno, ou os usuários podem receber acesso temporário entre um horário específico do dia.
Para aplicar a condição de nível de acesso de hora e dia, use as funções listadas na tabela a seguir. O formato das funções é function(timezone)
.
É possível especificar timezone
como UTC, fusos horários fixos que são deslocamentos explícitos de hora e minuto do UTC ou nomes longos timezone
, como Europe/Paris
, CET
ou US/Central
. Para uma listagem completa, consulte a seção Fuso horário da definição Common Expression Language.
Se você não especificar um "fuso horário", a expressão será padronizada como UTC.
Função | Descrição | Exemplo |
---|---|---|
getFullYear |
Recuperar o número que representa o ano atual, como 2020. | É o ano de 2020? request.time.getFullYear("America/Los_Angeles") == 2020
|
getMonth |
Recuperar o mês do ano. Os valores do mês variam de 0 a 11, em que 0 == janeiro e 11 == dezembro. | É o mês de janeiro? request.time.getMonth("America/Los_Angeles") == 1
|
getDate |
Recupere a data do mês. Os valores de data variam de 1 a 31, em que 1 é o primeiro do mês e 31 é o 31 do mês. |
É o primeiro dia do mês? request.time.getDate("America/Los_Angeles") == 1
|
getDayOfMonth |
Recuperar o dia do mês. Os valores do dia variam de 0 a 30, em que 0 é o primeiro do mês e 30 é o 31o dia do mês. | É o primeiro dia do mês? request.time.getDayOfMonth("America/Los_Angeles") == 0 |
getDayOfWeek |
Recuperar o dia da semana. Os valores do dia variam de 0 a 6, em que 0 é domingo, e 6 é sábado. | É segunda-feira? request.time.getDayOfWeek("America/Los_Angeles") == 1 |
getDayOfYear |
Recuperar o dia do ano. Os valores do dia variam de 0 a 365, em que 0 é o primeiro dia do ano e 365 é o 366o dia do ano. |
É o primeiro dia do ano? request.time.getDayOfYear("America/Los_Angeles") == 0
|
getHours |
Recuperar a hora do dia. Os valores de hora variam de 0 a 23, em que 0 é meia-noite e 23 é 23h. |
São 19h? request.time.getHours("America/Los_Angeles") == 19 |
getMinutes |
Recuperar o minuto da hora. Os valores de minuto variam de 0 a 59, em que 0 é o primeiro minuto e 59 é o último minuto da hora. |
São 19h30? request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30 |
date |
Retorna o carimbo de data/hora que representa a data normalizada à meia-noite UTC. | Hora atual em UTC. request.time.date()
|
date(tz string) |
Retorna o carimbo de data/hora que representa a data normalizada para a meia-noite em relação à string TimeZone <tz>. | Hora atual no horário do Pacífico.
|
timeOfDay |
Retorna o google.type.TimeOfDay associado ao carimbo de data/hora em UTC. |
Hora atual do dia em UTC, como "09:30:00" request.time.timeOfDay() |
timeOfDay(tz string) |
Retorna o google.type.TimeOfDay associado ao carimbo de data/hora e à string TimeZone <tz>. | Hora atual do dia no Pacífico, como "09:30:00" request.time.timeOfDay('America/Los_Angeles') |
between(start, stop) (para carimbo de data/hora) |
Para um determinado carimbo de data/hora, retorne "Start" e "stop" podem ser | O carimbo de data/hora atual, no horário do Pacífico, entre 10 de janeiro de 2020 e as 00:00 (inclusive) e 11 de janeiro de 2020 (não incluso)? request.time.date('08:00')
.between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
|
between(start, stop string) (para TimeOfDay) |
Para um determinado type.TimeOfDay ou string, que serão convertidos em type.TimeOfDay .
|
O horário atual é no horário do Pacífico entre 9h30 (inclusive) e 17h30 (exclusivo)? request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
|
A tabela a seguir contém exemplos de como usar as restrições de data e hora:
Exemplo de política | Expressão |
---|---|
Permitir que os funcionários que trabalham em turnos acessem os recursos de segunda a sexta-feira, das 9h às 17h, exceto no dia 4 de julho. | Opção 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)
Opção 2:
|
Permitir o acesso temporário aos recursos em 1o de março de 2020, das 22h à meia-noite. | Opção 1: Opção 2:
|
Veja a seguir alguns exemplos de expressões que usam algumas das funções para capturar períodos específicos:
Expresse o intervalo durante o horário comercial
O formato data e hora é "HH:MM:SS" e segue o padrão 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')
Expressar dias específicos do mês, primeira semana
(Compatibilidade com formato de fuso horário alternativo)
request.time.getDayOfMonth('America/Los_Angeles') < 7
Períodos específicos expressos, anualmente
Por exemplo, para relatórios trimestrais.
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')