diff --git a/README.txt b/README.txt
index 856c47c..37ec0a3 100644
--- a/README.txt
+++ b/README.txt
@@ -93,10 +93,10 @@ IMPORTANT: Access checks
   supported by the Search API. To enable this, go to the index's "Workflow" tab
   and activate the "Node access" data alteration. This will add the necessary
   field, "Node access information", to the index (which you have to leave as
-  "indexed"). If this field is present, access checks will automatically be
-  executed at search time, showing only those results that a user can view. Some
-  search types (e.g., search views) also provide the option to disable these
-  access checks for individual searches.
+  "indexed"). If both this field and "Published" are set to be indexed, access
+  checks will automatically be executed at search time, showing only those
+  results that a user can view. Some search types (e.g., search views) also
+  provide the option to disable these access checks for individual searches.
   Please note, however, that these access checks use the indexed data, while
   usually the current data is displayed to users. Therefore, users might still
   see inappropriate content as long as items aren't indexed in their latest
diff --git a/includes/callback_node_access.inc b/includes/callback_node_access.inc
index 937256f..fec6a28 100644
--- a/includes/callback_node_access.inc
+++ b/includes/callback_node_access.inc
@@ -90,4 +90,20 @@ class SearchApiAlterNodeAccess extends SearchApiAbstractAlterCallback {
     }
   }
 
+  /**
+   * If the data alteration is being enabled, sets "Published" to "indexed".
+   */
+  public function configurationFormSubmit(array $form, array &$values, array &$form_state) {
+    parent::configurationFormSubmit($form, $values, $form_state);
+
+    $old_status = !empty($form_state['index']->options['data_alter_callbacks']['search_api_alter_node_access']['status']);
+    $new_status = !empty($form_state['values']['callbacks']['search_api_alter_node_access']['status']);
+
+    if (!$old_status && $new_status) {
+      $form_state['index']->options['fields']['status']['indexed'] = TRUE;
+    }
+
+    return $values;
+  }
+
 }
diff --git a/search_api.module b/search_api.module
index 9c435d1..0d8d407 100644
--- a/search_api.module
+++ b/search_api.module
@@ -1229,7 +1229,8 @@ function search_api_search_api_query_alter(SearchApiQueryInterface $query) {
   $index = $query->getIndex();
   // Only add node access if the "search_api_access_node" field is indexed for
   // the index, and unless disabled explicitly by the query.
-  if (!empty($index->options['fields']['search_api_access_node']['indexed']) && !$query->getOption('search_api_bypass_access')) {
+  $fields = $index->options['fields'];
+  if (!empty($fields['search_api_access_node']['indexed']) && !empty($fields['status']['indexed']) && !$query->getOption('search_api_bypass_access')) {
     $account = $query->getOption('search_api_access_account', $GLOBALS['user']);
     if (is_numeric($account)) {
       $account = user_load($account);
@@ -1261,7 +1262,7 @@ function _search_api_query_add_node_access($account, SearchApiQueryInterface $qu
     // Simple hack for returning no results.
     $query->condition('status', 0);
     $query->condition('status', 1);
-    watchdog('search_api', 'User !name tried to execute a search, but cannot access content.', array('!name' => theme('username', array('account' => $account))), WATCHDOG_);
+    watchdog('search_api', 'User !name tried to execute a search, but cannot access content.', array('!name' => theme('username', array('account' => $account))), WATCHDOG_NOTICE);
     return;
   }
 
