How can I better protect access to all site reports except 'Recent log messages' based on role?
Remove the permission for "Admin" to "access site reports" at

Admin &gt; People &gt; Permissions.

Add hook_menu_alter to a custom module, this part changes the access permission for the admin/reports/dblog menu path

/**
 * Implements hook_menu_alter
 */
function MYMODULE_menu_alter(&amp;$items){
  // Allow access for administrator role to recent log entries
  // Use suitable permission here, e.g editorial "administer nodes"
  $items['admin/reports/dblog']['access arguments'] =&gt; array('administer nodes'), 
}


Clear menu cache, done.