Restriction de l'accès aux ressources en fonction d'une période

Vous pouvez utiliser des variables temporelles dans vos stratégies pour limiter l'accès accordé dans la stratégie à certaines périodes uniquement.

Cette fonctionnalité permet de limiter les actions sur les ressources à des moments particuliers. Par exemple, vous pouvez créer une stratégie autorisant l'accès uniquement à une date donnée. Une telle stratégie est utile si votre société recourt à des sous-traitants et que vous voulez vous assurer que l'accès n'est pas autorisé après la date de fin du contrat. Vous pouvez également autoriser l'accès aux ressources uniquement pendant les heures de bureau (par exemple, du lundi au vendredi, de 9h à 17h). Cette restriction peut réduire le risque qu'un acteur malveillant effectue des modifications lorsqu'elles sont plus susceptibles de passer inaperçues.

Les variables que vous pouvez utiliser pour définir la portée de l'accès en fonction du temps sont les suivantes :

  • request.utc-timestamp
  • request.utc-timestamp.month-of-year
  • request.utc-timestamp.day-of-month
  • request.utc-timestamp.day-of-week
  • request.utc-timestamp.time-of-day

L'utilisation de ces variables est décrite plus en détail dans les sections suivantes.

Informations sur l'utilisation des variables temporelles

Vous devez indiquer la date et l'heure pour les variables en utilisant le format ISO 8601 : YYYY-MM-DDThh:mm:ssZ. Voici des exemples de ce format :

  • Date et heure avec secondes : '2020-04-01T15:00:00Z'
  • Date et heure avec minutes : '2020-04-01T05:00Z'
  • Date uniquement : '2020-04-01Z'
  • Heure uniquement : '05:00:00'

Même si vous pouvez spécifier une heure à la seconde près, vous devez prévoir une marge de 5 minutes entre l'horodatage de la demande et l'heure à laquelle la demande est évaluée par le service IAM. Cet écart peut être dû à plusieurs facteurs. Par conséquent, soyez conscient de cette différence potentielle lorsque vous planifiez et implémentez vos stratégies basées sur le temps.

L'heure que vous indiquez est évaluée selon la norme UTC (temps universel coordonné). Cela signifie que vous devez calculer l'heure UTC correcte pour le fuseau horaire dans lequel la stratégie est évaluée. Par exemple, afin d'indiquer 9h à l'heure standard du Pacifique pour la valeur d'une variable, entrez '17:00:00'. Si votre environnement local applique l'heure d'hiver et d'été, vous devez mettre à jour les stratégies qui font référence à une heure spécifique lorsque le changement d'heure entre en vigueur.

Détails de chaque variable temporelle

L'utilisation de chaque variable est décrite dans les sections suivantes :

request.utc-timestamp

Description : heure de réception de la demande pour autorisation. Vous pouvez écrire une stratégie autorisant l'accès uniquement avant ou après un horodatage spécifique. L'horodatage doit respecter le format ISO 8601 (YYYY-MM-DDThh:mm:ssZ) et la norme UTC.

Opérateurs pris en charge : before | after

Valeurs autorisées : horodatage UTC au format ISO 8601 YYYY-MM-DDThh:mm:ssZ

Exemples de valeur :
  • '2020-04-01T00:00:00Z'
  • '2020-04-01T00:00Z'

Exemple de stratégie : autoriser le groupe Contractors à accéder aux ressources instance-family uniquement jusqu'à une certaine date :

Allow group Contractors to manage instance-family in tenancy where request.utc-timestamp before '2022-01-01T00:00Z'

L'accès accordé par la stratégie au groupe Contractors expire le 1er janvier 2022 à 12h00 (UTC).

request.utc-timestamp.month-of-year

Description : mois de l'année de réception de la demande pour autorisation. Vous pouvez écrire une stratégie autorisant l'accès uniquement pendant des mois spécifiques.

Opérateurs pris en charge : = | != | in

Valeurs autorisées : mois numérique (ISO 8601)

Exemples de valeur : '1', '2', '3', ... '12'

Exemple de stratégie : autoriser le groupe SummerInterns à accéder aux ressources instance-family uniquement pendant les mois de juin, de juillet et d'août :

Allow group SummerInterns to manage instance-family in tenancy where ANY {request.utc-timestamp.month-of-year in ('6', '7', '8')}

L'accès accordé par la stratégie au groupe SummerInterns est valide uniquement en juin, en juillet et en août d'une année donnée.

request.utc-timestamp.day-of-month

Description : jour du mois de réception de la demande pour autorisation. Vous pouvez écrire une stratégie autorisant l'accès uniquement pendant des jours spécifiques du mois. Gardez à l'esprit que l'étendue de la journée est calculée en fonction de l'heure UTC. Par exemple, supposons que vous vous trouvez à Miami (Floride, Etats-Unis) et que vous entrez '1' pour indiquer le premier jour du mois. Pour le mois de février, la stratégie est en vigueur de 0 h 00 à 23 h 59 UTC le 1er février, soit à Miami de 19 h 00 le 31 janvier à 18 h 59 le 1er février.

Opérateurs pris en charge : = | != | in

Valeurs autorisées : jour numérique du mois

Exemples de valeur : '1', '2', '3', ... '31'

Exemple de stratégie : autoriser le groupe ComplianceAuditors à lire all-resources uniquement le premier jour du mois.

Allow group ComplianceAuditors to read all-resources in tenancy where request.utc-timestamp.day-of-month = '1'

L'accès accordé par la stratégie au groupe ComplianceAuditors est valide uniquement le premier jour de chaque mois (le jour est défini par l'heure UTC).

request.utc-timestamp.day-of-week

Description : jour de la semaine de réception de la demande pour autorisation. Vous pouvez écrire une stratégie autorisant l'accès uniquement pendant des jours spécifiques de la semaine. L'étendue de la journée est calculée en fonction de l'heure UTC. Par exemple, supposons que vous vous trouvez à Miami (Floride, Etats-Unis) et que vous entrez 'monday'. La stratégie est en vigueur de 0h00 à 23h59 UTC le lundi, soit à Miami de 19 h 00 (EST) le dimanche à 18 h 59 le lundi.

Opérateurs pris en charge : = | != | in

Valeurs autorisées : nom du jour de la semaine en anglais

Exemples de valeur : 'Monday', 'Tuesday', 'Wednesday', etc.

Exemple de stratégie : autoriser le groupe WorkWeek à gérerinstance-family uniquement pendant la semaine de travail de la société.

Allow group WorkWeek to manage instance-family where ANY {request.utc-timestamp.day-of-week in ('monday', 'tuesday', 'wednesday', 'thursday', 'friday')}

L'accès accordé par la stratégie au groupe WorkWeek est valide uniquement les jours indiqués (le jour est défini par l'heure UTC).

request.utc-timestamp.time-of-day

Description : heure de réception de la demande pour autorisation. Vous pouvez écrire une stratégie autorisant l'accès uniquement pendant une période spécifique de la journée. L'heure de la journée est calculée en fonction de l'heure UTC. Si vous vivez dans un fuseau horaire qui implémente l'heure d'hiver et d'été, vous devez mettre à jour la stratégie lorsque l'heure change.

Opérateurs pris en charge : between

Valeurs autorisées : intervalle UTC au format ISO 8601 hh:mm:ssZ

Exemples de valeur : '01:00:00Z' AND '2:01:00Z'

Exemples de stratégie : autoriser le groupe DayShift à gérer les instances et les ressources associées entre 9 h 00 et 17 h 00 à l'heure standard du Pacifique (PST).

Les heures sont converties au format UTC :

Allow group DayShift to manage instance-family where request.utc-timestamp.time-of-day between '17:00:00Z' and '01:00:00Z'

Nous voulons autoriser le groupe NightShift à gérer les instances et les ressources associées entre 17 h 00 et 9 h 00 PST.

Allow group NightShift to manage instance-family where request.utc-timestamp.time-of-day between '01:00:00Z' and '17:00:00Z'

Dans ces deux exemples, l'heure en cours est calculée et testée pour vérifier si elle se situe dans la plage fournie (en ignorant le jour).