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
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'hasoperatore. Se l'hasoperatore 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)
)
)
};