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'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)
)
)
};