diff --git a/ee/app/assets/javascripts/security_orchestration/components/policies/policies_list.vue b/ee/app/assets/javascripts/security_orchestration/components/policies/policies_list.vue
index 673dd35a936f5416dbadca656b460f6a802bcae4..d834d435e6c27409e8e922540b5871443d958140 100644
--- a/ee/app/assets/javascripts/security_orchestration/components/policies/policies_list.vue
+++ b/ee/app/assets/javascripts/security_orchestration/components/policies/policies_list.vue
@@ -67,7 +67,13 @@ export default {
   directives: {
     GlTooltip: GlTooltipDirective,
   },
-  inject: ['documentationPath', 'namespacePath', 'namespaceType', 'newPolicyPath'],
+  inject: [
+    'documentationPath',
+    'namespacePath',
+    'namespaceType',
+    'newPolicyPath',
+    'disableScanPolicyUpdate',
+  ],
   props: {
     hasPolicyProject: {
       type: Boolean,
@@ -355,6 +361,7 @@ export default {
       :policy="selectedPolicy"
       :policy-type="policyType"
       :edit-policy-path="editPolicyPath"
+      :disable-scan-policy-update="disableScanPolicyUpdate"
       data-testid="policyDrawer"
       @close="deselectPolicy"
     />
diff --git a/ee/app/assets/javascripts/security_orchestration/components/policy_drawer/policy_drawer.vue b/ee/app/assets/javascripts/security_orchestration/components/policy_drawer/policy_drawer.vue
index 6878438314c6306833457396b71f429b2de7691f..baa24979abd2e7490a68e49632e4719c0a218fd3 100644
--- a/ee/app/assets/javascripts/security_orchestration/components/policy_drawer/policy_drawer.vue
+++ b/ee/app/assets/javascripts/security_orchestration/components/policy_drawer/policy_drawer.vue
@@ -59,6 +59,11 @@ export default {
       required: false,
       default: '',
     },
+    disableScanPolicyUpdate: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
   },
   computed: {
     isPolicyInherited() {
@@ -105,7 +110,7 @@ export default {
       />
     </template>
     <template v-if="policy" #header>
-      <span ref="editButton" class="gl-display-inline-block">
+      <span v-if="!disableScanPolicyUpdate" ref="editButton" class="gl-display-inline-block">
         <gl-button
           class="gl-mt-5"
           data-testid="edit-button"
diff --git a/ee/spec/frontend/security_orchestration/components/policies/policies_list_spec.js b/ee/spec/frontend/security_orchestration/components/policies/policies_list_spec.js
index 68d9255dc72bbdec8b27e09bd460b83258907ad2..96dc536004c63eb3f7db2829d9dd3a9078cd0d9c 100644
--- a/ee/spec/frontend/security_orchestration/components/policies/policies_list_spec.js
+++ b/ee/spec/frontend/security_orchestration/components/policies/policies_list_spec.js
@@ -67,6 +67,7 @@ describe('PoliciesList component', () => {
         namespacePath,
         namespaceType: NAMESPACE_TYPES.PROJECT,
         newPolicyPath: `${namespacePath}/-/security/policies/new`,
+        disableScanPolicyUpdate: false,
         ...provide,
       },
       apolloProvider: createMockApollo([
diff --git a/ee/spec/frontend/security_orchestration/components/policy_drawer/policy_drawer_spec.js b/ee/spec/frontend/security_orchestration/components/policy_drawer/policy_drawer_spec.js
index b646b61b873c5342ab47e0b92eafd4f3436424c5..fabce95bd416504dc7e0b097675d90a316e5067e 100644
--- a/ee/spec/frontend/security_orchestration/components/policy_drawer/policy_drawer_spec.js
+++ b/ee/spec/frontend/security_orchestration/components/policy_drawer/policy_drawer_spec.js
@@ -73,6 +73,24 @@ describe('PolicyDrawer component', () => {
     });
   });
 
+  describe('based on policy permission', () => {
+    it.each`
+      disableScanPolicyUpdate | expectedResult
+      ${true}                 | ${false}
+      ${false}                | ${true}
+    `('renders edit button', ({ disableScanPolicyUpdate, expectedResult }) => {
+      factory({
+        mountFn: mountExtended,
+        propsData: {
+          policy: mockProjectScanExecutionPolicy,
+          disableScanPolicyUpdate,
+        },
+      });
+
+      expect(findEditButton().exists()).toBe(expectedResult);
+    });
+  });
+
   describe.each`
     policyType                                           | mock                              | finder
     ${POLICY_TYPE_COMPONENT_OPTIONS.scanExecution.value} | ${mockProjectScanExecutionPolicy} | ${findScanExecutionPolicy}