Сценарий можно задать, но выглядит это так себе:
$activeDataProvider = new ActiveDataProvider([
'query' => Post::find(),
// 'scenario' => Post::SCENARIO_INDEX, // Это так не работает :(
]);
foreach($activeDataProvider->getModels() as $model) {
$model->scenario = Post::SCENARIO_GUEST;
}
Если отдача нужных полей - это не часть безопасности, а просто удобство, то все же лучше через url нужные запрашивать. Если это разделение доступа, то вместо сценариев можно использовать правила RBAC для отдачи нужных полей. Если это тоже не подходит - то уже наследование и переопределение. Но есть еще один вариант, правда с сценариями никак не связан: можно в селекте указать нужные поля: Post::find()->select(['id']).