Curto-circuito da lógica política - AWS Acesso verificado

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Curto-circuito da lógica política

Talvez você queira escrever uma política de Acesso Verificado pela AWS que avalie dados que podem ou não estar presentes em um determinado contexto. Se você referenciar dados em um contexto que não existe, o Cedar produzirá um erro e avaliará a política para negar o acesso, independentemente da sua intenção. Por exemplo, isso resultaria em uma negação, pois fake_provider e bogus_key não existem nesse contexto.

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

Para evitar essa situação, você pode verificar se uma chave está presente usando o has operador. Se o operador has retornar falso, a avaliação adicional da declaração encadeada será interrompida e o Cedar não produzirá um erro ao tentar referenciar um item que não existe.

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

Isso é mais útil ao especificar uma política que faz referência a dois provedores de confiança diferentes.

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