Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cortocircuito de lógica de política de Acceso verificado
Es posible que desee escribir una Acceso verificado de AWS política que evalúe los datos que pueden estar presentes o no en un contexto determinado. Si hace referencia a los datos en un contexto que no existe, Cedar generará un error y evaluará la política para denegarla, independientemente de su intención. Por ejemplo, esto daría lugar a una denegación, ya que fake_provider
y bogus_key
no existen en este contexto.
permit(principal, action, resource) when {
context.fake_provider.bogus_key > 42
};
Para evitar esta situación, puede comprobar si hay una clave presente mediante el operador has
. Si el operador has
devuelve un valor falso, la evaluación de la declaración encadenada se detiene y Cedar no genera ningún error al intentar hacer referencia a un elemento que no existe.
permit(principal, action, resource) when {
context.identity.user has "some_key" && context.identity.user.some_key > 42
};
Esto resulta especialmente útil cuando se especifica una política que hace referencia a dos proveedores de confianza 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)
)
)
};