La fonctionnalité de restriction de date et d'heure d'Access Context Manager permet aux entreprises de définir des contrôles d'accès en fonction de la date et de l'heure.
Lors de l'évaluation de l'accès zéro confiance, il est souvent nécessaire de limiter à des jours et heures spécifiques l'accès des utilisateurs aux ressources. Par exemple, il est possible que les travailleurs postés ne soient autorisés à accéder aux ressources de l'entreprise que pendant leurs horaires de travail, ou qu'un accès temporaire soit accordé aux utilisateurs à une heure spécifique de la journée.
Pour appliquer la condition de niveau d'accès selon le jour et l'heure, utilisez les fonctions répertoriées dans le tableau suivant. Le format des fonctions est function(timezone)
.
Vous pouvez spécifier timezone
en tant que valeur UTC, en tant que valeurs de fuseaux horaires fixes exprimés en tant que décalages en heures et minutes par rapport à UTC, ou en tant que noms de timezone
longs, tels que Europe/Paris
, CET
ou US/Central
. Pour obtenir la liste complète, consultez la section Fuseau horaire de la définition du langage CEL.
Si vous ne spécifiez pas de "fuseau horaire", l'expression est définie par défaut sur UTC.
Fonction | Description | Exemple |
---|---|---|
getFullYear |
Récupérer le nombre qui représente l'année en cours, par exemple 2020. | S'agit-il de l'année 2020 ? request.time.getFullYear("America/Los_Angeles") == 2020
|
getMonth |
Récupérer le mois de l'année. Les valeurs de mois vont de 0 à 11, où 0 == janvier et 11 == décembre. | S'agit-il du mois de janvier ? request.time.getMonth("America/Los_Angeles") == 1
|
getDate |
Récupérer la date du mois. Les valeurs de date vont de 1 à 31, où 1 correspond au premier du mois et 31 au 31 du mois. |
Est-ce le premier du mois ? request.time.getDate("America/Los_Angeles") == 1
|
getDayOfMonth |
Récupérer le jour du mois. Les valeurs de jour vont de 0 à 30, où 0 correspond au premier du mois et 30 au 31 du mois. | Est-ce le premier du mois ? request.time.getDayOfMonth("America/Los_Angeles") == 0 |
getDayOfWeek |
Récupérer le jour de la semaine. Les valeurs de jour vont de 0 à 6, où 0 correspond au dimanche et 6 au samedi. | Sommes-nous lundi ? request.time.getDayOfWeek("America/Los_Angeles") == 1 |
getDayOfYear |
Récupérer le jour de l'année. Les valeurs de jour vont de 0 à 365, où 0 correspond au premier jour de l'année et 365 au 366e jour de l'année. |
Est-ce le premier jour de l'année ? request.time.getDayOfYear("America/Los_Angeles") == 0
|
getHours |
Récupérer l'heure de la journée. Les valeurs d'heure sont comprises entre 0 et 23, où 0 correspond à minuit et 23 correspond à 23:00. |
Est-il 19:00 ? request.time.getHours("America/Los_Angeles") == 19 |
getMinutes |
Récupérer la minute de l'heure. Les valeurs des minutes sont comprises entre 0 et 59, où 0 correspond à la première minute et 59 à la dernière minute. |
Est-il 19:30 ? request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30 |
date |
Renvoie l'horodatage représentant la date normalisée sur minuit UTC. | Heure actuelle (UTC). request.time.date()
|
date(tz string) |
Renvoie l'horodatage représentant la date normalisée sur minuit par rapport à la chaîne de fuseau horaire <tz>. | Heure actuelle (heure du Pacifique).
|
timeOfDay |
Renvoie l'google.type.TimeOfDay associé à l'horodatage au format UTC. |
Heure actuelle de la journée (UTC), par exemple "09:30:00". request.time.timeOfDay() |
timeOfDay(tz string) |
Renvoie le google.type.TimeOfDay associé à l'horodatage et par rapport à la chaîne de fuseau horaire <tz>. | Heure actuelle de la journée (heure du Pacifique), par exemple "09:30:00". request.time.timeOfDay('America/Los_Angeles') |
between(start, stop) (pour le code temporel) |
Pour un horodatage donné, renvoie Les valeurs "start" et "stop" peuvent être définies sur | L'horodatage actuel (PST) est-il compris entre le 10 janvier 2020 à 00:00 (inclus) et le 11 janvier 2020 à 00:00 (exclu) ? request.time.date('08:00')
.between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
|
between(start, stop string) (pour TimeOfDay) |
Pour un type.TimeOfDay ou sur une chaîne qui sera convertie en type.TimeOfDay .
|
L'heure actuelle de la journée (heure du Pacifique) est-elle comprise entre 09:30 (inclus) et 17:30 (exclu) ? request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
|
Le tableau suivant contient des exemples d'utilisation des restrictions d'heure et de date :
Exemple de règle | Expression |
---|---|
Autoriser les travailleurs postés à accéder aux ressources du lundi au vendredi, de 9:00 à 17:00, à l'exception du 4 juillet. | Option 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)
Option 2 :
|
Autoriser un accès temporaire aux ressources le 1er mars 2020, de 22:00 à minuit. | Option 1 : Option 2 :
|
Voici quelques exemples d'expressions qui utilisent certaines des fonctions pour capturer des périodes spécifiques :
Exprimer la plage pendant les heures d'ouverture
Le format de date et d'heure est "HH:MM:SS" et suit la norme 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')
Exprimer les jours spécifiques du mois, la première semaine
(Notez la compatibilité avec un autre format de fuseau horaire)
request.time.getDayOfMonth('America/Los_Angeles') < 7
Exprimer des plages de dates spécifiques, annuelles
Par exemple, pour les rapports trimestriels
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')