

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Cortocircuito logico della politica di accesso verificato
<a name="auth-policies-policy-eval-short-circ"></a>

Potresti voler scrivere una Accesso verificato da AWS policy che valuti i dati che possono o meno essere presenti in un determinato contesto. Se si fa riferimento ai dati in un contesto che non esiste, Cedar genererà un errore e valuterà la politica per negare l'accesso, indipendentemente dall'intenzione dell'utente. Ad esempio, ciò comporterebbe una negazione, poiché in questo contesto non esistono `fake_provider` e `bogus_key` non esistono.

```
permit(principal, action, resource) when {
  context.fake_provider.bogus_key > 42
};
```

Per evitare questa situazione, è possibile verificare se è presente una chiave utilizzando l'`has`operatore. Se l'`has`operatore restituisce false, l'ulteriore valutazione dell'istruzione concatenata si interrompe e Cedar non produce un errore nel tentativo di fare riferimento a un elemento che non esiste.

```
permit(principal, action, resource) when {
  context.identity.user has "some_key" && context.identity.user.some_key > 42
};
```

Ciò è particolarmente utile quando si specifica una politica che fa riferimento a due diversi fornitori di fiducia.

```
permit(principal, action, resource) when {
  // user is in an allowed group
  context.aws_idc.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107"
  &&( 
    ( 
      // if CrowdStrike data is present, 
      // permit if CrowdStrike's overall assessment is over 50
      context has "crowdstrike" && context.crowdstrike.assessment.overall > 50
    )
    || 
    (
      // if Jamf data is present,
      // permit if Jamf's risk score is acceptable
      context has "jamf" && ["LOW", "NOT_APPLICABLE", "MEDIUM", "SECURE"].contains(context.jamf.risk) 
    )
  )
};
```