diff --git a/core/lib/Drupal/Core/Entity/ConfigEntityAccessControllerBase.php b/core/lib/Drupal/Core/Entity/ConfigEntityAccessControllerBase.php
new file mode 100644
index 0000000..9fa4082
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/ConfigEntityAccessControllerBase.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\ConfigEntityAccessControllerBase.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Drupal\Core\Language\Language;
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * Defines a default implementation for config entity access controllers.
+ *
+ * This may be used by config entity types for their access controller if all
+ * they require to control access is a single user permission. For example, all
+ * the config entities are managed under a single admin path, accessible with
+ * the permission 'administer foobar'.
+ *
+ * @todo: document the 'access_controller_permission' property this requires in
+ * the entity type annotation.
+ */
+class ConfigEntityAccessControllerBase extends EntityAccessController implements EntityAccessControllerInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
+    $entity_info = $entity->entityInfo();
+
+    // Throw an exception if we don't have what we need on the entity type info.
+    if (!isset($entity_info['access_controller_permission'])) {
+      throw new Exception("Entity types using ConfigEntityAccessControllerBase as their access controller must define the 'access_controller_permission' property.");
+    }
+
+    $permission = $entity_info['access_controller_permission'];
+
+    return $account->hasPermission($permission);
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Entity/ConfigEntityListControllerBase.php b/core/lib/Drupal/Core/Entity/ConfigEntityListControllerBase.php
new file mode 100644
index 0000000..fbb3037
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/ConfigEntityListControllerBase.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\ConfigEntityListControllerBase.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\StringTranslation\TranslationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Component\Utility\String;
+
+/**
+ * Provides a default entity list controller for config entities.
+ *
+ * This may be used by config entities which want to show only their label
+ * and operations in the entity list.
+ */
+class ConfigEntityListControllerBase extends EntityListController implements EntityListControllerInterface, EntityControllerInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildHeader() {
+    $header['label'] = t('Label');
+    $header['operations'] = t('Operations');
+    return $header;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildRow(EntityInterface $entity) {
+    $row['label'] = $this->getLabel($entity);
+    $row['operations']['data'] = $this->buildOperations($entity);
+    return $row;
+  }
+
+}
