satisfy

Директива 'satisfy' управляет тем, как предоставляется доступ к ресурсам на основе нескольких методов контроля доступа. — NGINX HTTP Core

satisfy
httpserverlocation
Синтаксисsatisfy all | any | none;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива 'satisfy' позволяет комбинировать различные механизмы контроля доступа, чтобы определить, должен ли запрос быть разрешён или отклонён. Она принимает один аргумент, который может быть 'all', 'any' или 'none' — это определяет, как оцениваются правила доступа. Если задан 'all', все правила доступа должны быть удовлетворены, чтобы доступ был предоставлен. При 'any' достаточно удовлетворить хотя бы одно из правил доступа, что даёт более мягкую политику доступа. Наоборот, опция 'none' фактически отключает любые предопределённые механизмы контроля доступа, позволяя неограниченный доступ там, где другие правила не применяются. Эта директива особенно полезна в сложных сценариях авторизации, где должно быть выполнено несколько условий, например при объединении ограничений по IP через директивы 'allow' и 'deny' и дополнительных методов, таких как аутентификация. Следует уделять внимание чёткой и корректной формулировке правил, поскольку неправильная настройка директив может привести к непреднамеренным проблемам с доступом. Важно учитывать, что если применимых правил не определено, применяется доступ по умолчанию к ресурсу, который может различаться в зависимости от конфигурации сервера.

Пример конфига

location /secure {
    allow 192.168.1.0/24;
    deny all;
    satisfy any;
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Убедитесь, что логические условия AND/OR, задаваемые с помощью 'all' и 'any', не противоречат друг другу ради ясности и безопасности.

Использование 'satisfy none' без указания дополнительных директив может привести к непреднамеренному публичному доступу к чувствительным областям.