

# Time-based soutien aux politiques
<a name="policy-time-based"></a>

Policy in AgentCore prend en charge les restrictions temporelles dans les politiques de Cedar par le biais de la valeur `context.system.now` date/heure. Cela vous permet d'appliquer des politiques basées sur des dates, des heures ou des plages de temps spécifiques.

**Topics**
+ [Comment ça marche](#policy-time-based-how)
+ [Restrictions absolues de date et de plage horaire](#policy-time-absolute)
+ [Restrictions horaires récurrentes quotidiennes](#policy-time-daily)
+ [Restrictions de date et d'heure combinées](#policy-time-combined)
+ [Gestion des fuseaux horaires](#policy-time-timezone)
+ [Utiliser le langage naturel pour générer des politiques basées sur le temps](#policy-time-natural-language)

## Comment ça marche
<a name="policy-time-based-how"></a>

Lors de l'évaluation de la politique, l'horodatage UTC actuel est fourni dans le cadre du contexte d'évaluation :

```
// Current datetime in UTC
context.system.now
```

Vous pouvez utiliser les fonctions datetime de Cedar pour créer des conditions basées sur le temps :
+  `datetime("YYYY-MM-DDTHH:MM:SSZ")`— Crée une valeur date/heure
+  `duration("Xh")`— Créez une durée (heures, minutes, secondes)
+  `.toTime()`— Extrait l'heure de la journée de la date et de l'heure
+ Opérateurs de comparaison : `<``⇐`,`>`,`>=`, `==` 

## Restrictions absolues de date et de plage horaire
<a name="policy-time-absolute"></a>

Appliquez les politiques au cours de périodes calendaires spécifiques.

### Exemple : Politique relative à la période promotionnelle
<a name="policy-time-absolute-example"></a>

```
permit(
  principal,
  action == AgentCore::Action::"RefundToolTarget___refund",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway"
)
when {
  context.system.now >= datetime("2025-01-01T00:00:00Z") &&
  context.system.now < datetime("2025-01-31T23:59:59Z")
};
```

 **Cas d'utilisation :** autorisez les remboursements uniquement en janvier 2025.

## Restrictions horaires récurrentes quotidiennes
<a name="policy-time-daily"></a>

Appliquez des politiques basées sur les heures récurrentes de la journée.

### Exemple : politique relative aux heures d'ouverture
<a name="policy-time-daily-example"></a>

```
permit(
  principal,
  action == AgentCore::Action::"RefundToolTarget___refund",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway"
)
when {
  duration("9h") <= context.system.now.toTime() &&
  context.system.now.toTime() <= duration("17h")
};
```

 **Cas d'utilisation :** autorisez les remboursements uniquement pendant les heures ouvrables (tous les jours de 9 h à 17 h UTC).

## Restrictions de date et d'heure combinées
<a name="policy-time-combined"></a>

Combinez les dates absolues avec les restrictions horaires quotidiennes.

### Exemple : Limited-time promotion avec horaires quotidiens
<a name="policy-time-combined-example"></a>

```
permit(
  principal,
  action == AgentCore::Action::"DiscountToolTarget___apply_discount",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway"
)
when {
  // Valid dates: Feb 1-28, 2025
  context.system.now >= datetime("2025-02-01T00:00:00Z") &&
  context.system.now < datetime("2025-03-01T00:00:00Z") &&
  // Valid hours: 9am-9pm UTC daily
  duration("9h") <= context.system.now.toTime() &&
  context.system.now.toTime() <= duration("21h")
};
```

 **Cas d'utilisation :** Autoriser l'outil de réduction uniquement en février 2025, entre 9 h et 21 h UTC tous les jours.

## Gestion des fuseaux horaires
<a name="policy-time-timezone"></a>

Toutes les valeurs de date/heure doivent être exprimées en UTC. Le moteur de politiques ne prend pas en charge les conversions de fuseaux horaires ni les politiques tenant compte des fuseaux horaires.

Lorsque vous spécifiez des heures dans vos politiques, utilisez toujours l'UTC. Si votre entreprise opère dans un autre fuseau horaire, convertissez vos heures locales en UTC avant de créer la politique.

## Utiliser le langage naturel pour générer des politiques basées sur le temps
<a name="policy-time-natural-language"></a>

Le service de création de politiques peut générer des politiques temporelles à partir de descriptions en langage naturel.

### Exemple : générer une politique relative aux heures d'ouverture
<a name="policy-time-nl-example"></a>

```
aws bedrock-agentcore-control start-policy-generation \
  --policy-engine-id MyEngine-abc123 \
  --name BusinessHoursOnly \
  --content '{
    "rawText": "Allow refunds only during business hours 9am to 5pm UTC"
  }' \
  --resource '{
    "arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/MyGateway-xyz789"
  }'
```

Politique générée :

```
permit(
  principal,
  action == AgentCore::Action::"RefundToolTarget___refund",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/MyGateway-xyz789"
)
when {
  duration("9h") <= context.system.now.toTime() &&
  context.system.now.toTime() <= duration("17h")
};
```

### Bonnes pratiques en matière de langage naturel
<a name="policy-time-nl-best-practices"></a>
+  **Soyez précis quant aux horaires** : utilisez « de 9 h à 17 h UTC » au lieu de « heures ouvrables »
+  **Spécifiez toujours UTC** — Incluez « UTC » pour éviter toute ambiguïté
+  **Utiliser le format ISO pour les dates** — Utilisez « 2025-01-01 » au lieu de « 1er janvier »
+  **Indiquez des plages horaires spécifiques** — Évitez les termes vagues tels que « jour » ou « après les heures de bureau »

De bons exemples d'instructions en langage naturel :

```
"Allow refunds only between 9am and 5pm UTC"
"Allow payments except between 2am and 4am UTC daily"
"Allow discounts only from 2025-02-01 to 2025-02-28"
"Permit high-value transactions between 8am and 8pm UTC"
```