已验证访问策略逻辑短路 - AWS Verified Access

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

已验证访问策略逻辑短路

你可能想写一个 AWS Verified Access 评估给定上下文中可能存在也可能不存在的数据的政策。如果在上下文中引用了不存在的数据,Cedar 将产生错误并将策略评估为“禁止访问”,无论您的意图如何。例如,这将导致“禁止”,因为 fake_providerbogus_key 在此上下文中不存在。

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

为避免这种情况,您可以使用has运算符检查密钥是否存在。如果 has 运算符返回假,则对链接语句的进一步评估将停止,Cedar 在尝试引用不存在的项目时不会产生错误。

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

这在指定引用两个不同信任提供商的策略时最为有用。

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