diff --git a/jsonapi_extras.install b/jsonapi_extras.install
index 21131448992f97df75c9d49098f00bf0183c0aa8..a3339906b39c4db0e6a2e2c7de089c5387fee7d6 100644
--- a/jsonapi_extras.install
+++ b/jsonapi_extras.install
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Module installation file.
+ * Install, update and uninstall functions for the JSON API Extras module.
  */
 
 declare(strict_types=1);
@@ -20,3 +20,19 @@ function jsonapi_extras_update_9001() {
   // Since the schema changes may not be there yet, we need to trust the data.
   $editable_config->save(TRUE);
 }
+
+/**
+ * Implements hook_update_N().
+ */
+function jsonapi_extras_update_9002() {
+  /** @var \Drupal\user\Entity\Role $role_storage */
+  $role_storage = \Drupal::entityTypeManager()->getStorage('user_role');
+
+  foreach ($role_storage->loadMultiple() as $role) {
+    // Grant 'administer json api extra configuration'
+    // if role has 'administer site configuration' permission.
+    if ($role->hasPermission('administer site configuration')) {
+      $role->grantPermission('administer json api extra configuration')->save();
+    }
+  }
+}
diff --git a/jsonapi_extras.permissions.yml b/jsonapi_extras.permissions.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7702bd5131da2f5e86de01b77da1ee6585525dc4
--- /dev/null
+++ b/jsonapi_extras.permissions.yml
@@ -0,0 +1,3 @@
+administer json api extra configuration:
+  title: 'Administer JSON API extra configuration'
+  description: "Allow access and update JSON API extra configurations."
diff --git a/jsonapi_extras.routing.yml b/jsonapi_extras.routing.yml
index bd4b24c53be764920084ba637049c2d480b84611..26673e5d2415561527c180df2748b382c9516624 100644
--- a/jsonapi_extras.routing.yml
+++ b/jsonapi_extras.routing.yml
@@ -4,4 +4,4 @@ jsonapi_extras.settings:
     _form: '\Drupal\jsonapi_extras\Form\JsonapiExtrasSettingsForm'
     _title: 'JSON:API Extras'
   requirements:
-    _permission: 'administer site configuration'
+    _permission: 'administer json api extra configuration'
diff --git a/src/Entity/JsonapiResourceConfig.php b/src/Entity/JsonapiResourceConfig.php
index 3fe2a29e2df0a5628769c078c90b018c0bfe2b2f..1379c55a00749e9d489f16914e70f8bc7f05be60 100644
--- a/src/Entity/JsonapiResourceConfig.php
+++ b/src/Entity/JsonapiResourceConfig.php
@@ -33,7 +33,7 @@ use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
  *     },
  *   },
  *   config_prefix = "jsonapi_resource_config",
- *   admin_permission = "administer site configuration",
+ *   admin_permission = "administer json api extra configuration",
  *   static_cache = TRUE,
  *   entity_keys = {
  *     "id" = "id",
diff --git a/tests/src/Functional/JsonApiExtrasFunctionalTest.php b/tests/src/Functional/JsonApiExtrasFunctionalTest.php
index 60c96518aab54f4c37b2975cfa281e596769bc35..5f27b5eee7697dda6f4862cf25957bdb201b867a 100644
--- a/tests/src/Functional/JsonApiExtrasFunctionalTest.php
+++ b/tests/src/Functional/JsonApiExtrasFunctionalTest.php
@@ -124,10 +124,10 @@ class JsonApiExtrasFunctionalTest extends JsonApiFunctionalTestBase {
     static::overrideResources();
     $this->resetAll();
     $role = $this->user->get('roles')[0]->entity;
-    $this->grantPermissions(
-        $role,
-        ['administer nodes', 'administer site configuration']
-    );
+    $this->grantPermissions($role, [
+      'administer nodes',
+      'administer json api extra configuration',
+    ]);
   }
 
   /**
diff --git a/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php b/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php
index 6786f88c1ff2893d4b528a9666f20926e356f1fa..c231a8972a38b77d58a77b98879eb0a318bfff8c 100644
--- a/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php
+++ b/tests/src/Functional/JsonApiExtrasFunctionalTestBase.php
@@ -62,10 +62,10 @@ abstract class JsonApiExtrasFunctionalTestBase extends JsonApiFunctionalTestBase
     static::overrideResources();
     $this->resetAll();
     $role = $this->user->get('roles')[0]->entity;
-    $this->grantPermissions(
-        $role,
-        ['administer nodes', 'administer site configuration']
-    );
+    $this->grantPermissions($role, [
+      'administer nodes',
+      'administer json api extra configuration',
+    ]);
   }
 
   /**