diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 7c0a458..e8ae514 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -34,6 +34,16 @@
   const TRANSLATION_CREATED = 2;
 
   /**
+   * Denotes that the entity is published.
+   */
+  const STATUS_PUBLISHED = 1;
+
+  /**
+   * Denotes that the entity is not published.
+   */
+  const STATUS_UNPUBLISHED = 0;
+
+  /**
    * The plain data values of the contained fields.
    *
    * This always holds the original, unchanged values of the entity. The values
diff --git a/core/lib/Drupal/Core/Entity/EntityPublishedInterface.php b/core/lib/Drupal/Core/Entity/EntityPublishedInterface.php
new file mode 100644
index 0000000..56577e0
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/EntityPublishedInterface.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\Core\Entity;
+
+interface EntityPublishedInterface {
+
+  /**
+   * Returns the entity published status indicator.
+   *
+   * Unpublished entities are only visible to their authors and to administrators.
+   *
+   * @return bool
+   *   TRUE if the entity is published.
+   */
+  public function isPublished();
+
+  /**
+   * Sets the published status of an entity.
+   *
+   * @param bool $published
+   *   TRUE to set this entity to published, FALSE to set it to unpublished.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface
+   *   The called entity.
+   */
+  public function setPublished($published);
+
+}
diff --git a/core/modules/comment/src/CommentInterface.php b/core/modules/comment/src/CommentInterface.php
index 28318ee..75818f8 100644
--- a/core/modules/comment/src/CommentInterface.php
+++ b/core/modules/comment/src/CommentInterface.php
@@ -2,24 +2,26 @@
 
 namespace Drupal\comment;
 
+use Drupal\Core\Entity\ContentEntityBase;
 use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Entity\EntityPublishedInterface;
 use Drupal\user\EntityOwnerInterface;
 use Drupal\Core\Entity\EntityChangedInterface;
 
 /**
  * Provides an interface defining a comment entity.
  */
-interface CommentInterface extends ContentEntityInterface, EntityChangedInterface, EntityOwnerInterface {
+interface CommentInterface extends ContentEntityInterface, EntityChangedInterface, EntityOwnerInterface, EntityPublishedInterface {
 
   /**
    * Comment is awaiting approval.
    */
-  const NOT_PUBLISHED = 0;
+  const NOT_PUBLISHED = ContentEntityBase::STATUS_UNPUBLISHED;
 
   /**
    * Comment is published.
    */
-  const PUBLISHED = 1;
+  const PUBLISHED = ContentEntityBase::STATUS_PUBLISHED;
 
   /**
    * Determines if this comment is a reply to another comment.
diff --git a/core/modules/comment/src/Entity/Comment.php b/core/modules/comment/src/Entity/Comment.php
index 1981c0f..54acc1d 100644
--- a/core/modules/comment/src/Entity/Comment.php
+++ b/core/modules/comment/src/Entity/Comment.php
@@ -79,7 +79,7 @@ public function preSave(EntityStorageInterface $storage) {
     parent::preSave($storage);
 
     if (is_null($this->get('status')->value)) {
-      $published = \Drupal::currentUser()->hasPermission('skip comment approval') ? CommentInterface::PUBLISHED : CommentInterface::NOT_PUBLISHED;
+      $published = \Drupal::currentUser()->hasPermission('skip comment approval') ? ContentEntityBase::STATUS_PUBLISHED : ContentEntityBase::STATUS_UNPUBLISHED;
       $this->setPublished($published);
     }
     if ($this->isNew()) {
@@ -477,7 +477,7 @@ public function setCreatedTime($created) {
    * {@inheritdoc}
    */
   public function isPublished() {
-    return $this->get('status')->value == CommentInterface::PUBLISHED;
+    return $this->get('status')->value == ContentEntityBase::STATUS_PUBLISHED;
   }
 
   /**
@@ -491,7 +491,7 @@ public function getStatus() {
    * {@inheritdoc}
    */
   public function setPublished($status) {
-    $this->set('status', $status ? CommentInterface::PUBLISHED : CommentInterface::NOT_PUBLISHED);
+    $this->set('status', $status ? ContentEntityBase::STATUS_PUBLISHED : ContentEntityBase::STATUS_UNPUBLISHED);
     return $this;
   }
 
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 5c86a13..f9e2c4a 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -14,6 +14,7 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Database\StatementInterface;
+use Drupal\Core\Entity\ContentEntityBase;
 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Element;
@@ -32,12 +33,12 @@
 /**
  * Denotes that the node is not published.
  */
-const NODE_NOT_PUBLISHED = 0;
+const NODE_NOT_PUBLISHED = ContentEntityBase::STATUS_UNPUBLISHED;
 
 /**
  * Denotes that the node is published.
  */
-const NODE_PUBLISHED = 1;
+const NODE_PUBLISHED = ContentEntityBase::STATUS_PUBLISHED;
 
 /**
  * Denotes that the node is not promoted to the front page.
@@ -741,15 +742,15 @@ function node_get_recent($number = 10) {
     // have some unpublished nodes to view before adding the condition.
     $access_query = \Drupal::entityQuery('node')
       ->condition('uid', $account->id())
-      ->condition('status', NODE_NOT_PUBLISHED);
+      ->condition('status', ContentEntityBase::STATUS_UNPUBLISHED);
     if ($account->hasPermission('view own unpublished content') && ($own_unpublished = $access_query->execute())) {
       $query->orConditionGroup()
-        ->condition('status', NODE_PUBLISHED)
+        ->condition('status', ContentEntityBase::STATUS_UNPUBLISHED)
         ->condition('nid', $own_unpublished, 'IN');
     }
     else {
       // If not, restrict the query to published nodes.
-      $query->condition('status', NODE_PUBLISHED);
+      $query->condition('status', ContentEntityBase::STATUS_PUBLISHED);
     }
   }
   $nids = $query
diff --git a/core/modules/node/src/Entity/Node.php b/core/modules/node/src/Entity/Node.php
index bdb8050..3c327c6 100644
--- a/core/modules/node/src/Entity/Node.php
+++ b/core/modules/node/src/Entity/Node.php
@@ -242,6 +242,7 @@ public function setSticky($sticky) {
     $this->set('sticky', $sticky ? NODE_STICKY : NODE_NOT_STICKY);
     return $this;
   }
+
   /**
    * {@inheritdoc}
    */
@@ -253,7 +254,7 @@ public function isPublished() {
    * {@inheritdoc}
    */
   public function setPublished($published) {
-    $this->set('status', $published ? NODE_PUBLISHED : NODE_NOT_PUBLISHED);
+    $this->set('status', $published ? ContentEntityBase::PUBLISHED : ContentEntityBase::UNPUBLISHED);
     return $this;
   }
 
diff --git a/core/modules/node/src/NodeInterface.php b/core/modules/node/src/NodeInterface.php
index 980dacd..f3bcaea 100644
--- a/core/modules/node/src/NodeInterface.php
+++ b/core/modules/node/src/NodeInterface.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\node;
 
+use Drupal\Core\Entity\EntityPublishedInterface;
 use Drupal\Core\Entity\RevisionLogInterface;
 use Drupal\user\EntityOwnerInterface;
 use Drupal\Core\Entity\EntityChangedInterface;
@@ -10,7 +11,7 @@
 /**
  * Provides an interface defining a node entity.
  */
-interface NodeInterface extends ContentEntityInterface, EntityChangedInterface, EntityOwnerInterface, RevisionLogInterface {
+interface NodeInterface extends ContentEntityInterface, EntityChangedInterface, EntityOwnerInterface, RevisionLogInterface, EntityPublishedInterface {
 
   /**
    * Gets the node type.
@@ -97,27 +98,6 @@ public function isSticky();
   public function setSticky($sticky);
 
   /**
-   * Returns the node published status indicator.
-   *
-   * Unpublished nodes are only visible to their authors and to administrators.
-   *
-   * @return bool
-   *   TRUE if the node is published.
-   */
-  public function isPublished();
-
-  /**
-   * Sets the published status of a node..
-   *
-   * @param bool $published
-   *   TRUE to set this node to published, FALSE to set it to unpublished.
-   *
-   * @return \Drupal\node\NodeInterface
-   *   The called node entity.
-   */
-  public function setPublished($published);
-
-  /**
    * Gets the node revision creation timestamp.
    *
    * @return int
