**Kong Authorization**
kong-authz — это плагин Kong, выполняющий авторизацию запросов с помощью lua-casbin. Вы определяете модели и политики как обычно; плагин применяет их к маршрутам Kong.
Предварительные требования
- Kong
- 4daysorm-adapter (необязательно, для хранения политик в базе данных)
- luasql-adapter (необязательно, для хранения политик в базе данных)
По умолчанию политики загружаются из файлов. Чтобы использовать политики, хранящиеся в базе данных, установите либо 4daysorm-adapter, либо luasql-adapter.
Установка
Установите системные зависимости Casbin:
- Для систем с
apt:
sudo apt install gcc libpcre3 libpcre3-dev
- Для систем на базе Alpine:
sudo apk add gcc pcre pcre-dev libc-dev
Установите последний релиз Casbin из LuaRocks:
sudo luarocks install casbin
Установите плагин kong-authz:
sudo luarocks install https://raw.githubusercontent.com/casbin-lua/kong-authz/master/kong-authz-0.0.1-1.rockspec
Добавьте плагин в ваш kong.conf, дописав kong-authz (через запятую) к переменной plugins:
# kong.conf
plugins = bundled, kong-authz
Запустите или перезапустите Kong:
kong start [-c /path/to/kong.conf]
Конфигурация
Настройте этот плагин на уровне сервиса, API или глобально через Admin API Kong.
Хранение политик в файлах
Глобальная настройка с использованием политик в файлах:
curl -i -X POST \
--url http://localhost:8001/plugins/ \
--data 'name=kong-authz' \
--data 'config.model_path=/path/to/model_path.conf' \
--data 'config.policy_path=/path/to/policy_path.csv' \
--data 'config.username=user'
Хранение политик в базе данных с LuaSQL
Настройка для конкретного сервиса с использованием адаптера LuaSQL:
curl -i -X POST \
--url http://localhost:8001/services/example-service/plugins/ \
--data 'name=kong-authz' \
--data 'config.model_path=/mnt/kong/examples/authz_model.conf' \
--data 'config.username=user' \
--data 'config.adapter=luasql' \
--data 'config.db_info.db_type=mysql' \
--data 'config.db_info.database=casbin' \
--data 'config.db_info.username=root' \
--data 'config.db_info.password=********' \
--data 'config.db_info.host=127.0.0.1' \
--data 'config.db_info.port=3306'
Хранение политик в базе данных с 4DaysORM
Настройка для конкретного сервиса с использованием адаптера 4DaysORM:
curl -i -X POST \
--url http://localhost:8001/services/example-service/plugins/ \
--data 'name=kong-authz' \
--data 'config.model_path=/mnt/kong/examples/authz_model.conf' \
--data 'config.username=user' \
--data 'config.adapter=4daysorm' \
--data 'config.db_info.db_type=mysql' \
--data 'config.db_info.database=casbin' \
--data 'config.db_info.username=root' \
--data 'config.db_info.password=********' \
--data 'config.db_info.host=127.0.0.1' \
--data 'config.db_info.port=3306'