How to restrict access to only one Contribution Page
Here's a quick and dirty drupal-ly way of doing it, but I still wonder about a CiviCRM specific methodology. 

function civicrm_custom_access_civicrm_buildForm($formName, &amp;$form) {
  global $user;

  $grant_access = 0;
  foreach($user-&gt;roles as $key =&gt; $role_name) {
    if($key == 3 || $key == 5 || $key == 4 || $key == 6 || $key == 7) {
      $grant_access = 1;
    } 
  }

  if($formName == 'CRM_Contribute_Form_Contribution_Main' &amp;&amp; $form-&gt;_id == 2 &amp;&amp; !$grant_access) {
    drupal_access_denied();
    drupal_exit();
  }

}