summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/administration/geo/disaster_recovery/index.md4
-rw-r--r--doc/administration/pages/index.md3
-rw-r--r--doc/administration/postgresql/external.md3
-rw-r--r--doc/api/graphql/reference/gitlab_schema.graphql70
-rw-r--r--doc/api/graphql/reference/gitlab_schema.json122
-rw-r--r--doc/api/graphql/reference/index.md2
-rw-r--r--doc/api/issues.md175
-rw-r--r--doc/development/telemetry/usage_ping.md23
-rw-r--r--doc/user/admin_area/analytics/dev_ops_report.md4
-rw-r--r--doc/user/application_security/img/unconfigured_security_approval_rules_and_enabled_jobs_v13_4.pngbin0 -> 99883 bytes
-rw-r--r--doc/user/application_security/img/unconfigured_security_approval_rules_and_jobs_v13_4.pngbin0 -> 82526 bytes
-rw-r--r--doc/user/application_security/img/vulnerability-check_v13_0.pngbin30789 -> 0 bytes
-rw-r--r--doc/user/application_security/img/vulnerability-check_v13_4.pngbin0 -> 75105 bytes
-rw-r--r--doc/user/application_security/index.md54
-rw-r--r--doc/user/compliance/license_compliance/img/license-check_v13_4.pngbin0 -> 74407 bytes
-rw-r--r--doc/user/compliance/license_compliance/index.md14
16 files changed, 272 insertions, 202 deletions
diff --git a/doc/administration/geo/disaster_recovery/index.md b/doc/administration/geo/disaster_recovery/index.md
index 2d837ebb369..e9b566b7849 100644
--- a/doc/administration/geo/disaster_recovery/index.md
+++ b/doc/administration/geo/disaster_recovery/index.md
@@ -15,7 +15,9 @@ See [Geo current limitations](../replication/index.md#current-limitations) for m
CAUTION: **Warning:**
Disaster recovery for multi-secondary configurations is in **Alpha**.
-For the latest updates, check the multi-secondary [Disaster Recovery epic](https://gitlab.com/groups/gitlab-org/-/epics/65).
+For the latest updates, check the [Disaster Recovery epic for complete maturity](https://gitlab.com/groups/gitlab-org/-/epics/590).
+Multi-secondary configurations require the complete re-synchronization and re-configuration of all non-promoted secondaries and
+will cause downtime.
## Promoting a **secondary** Geo node in single-secondary configurations
diff --git a/doc/administration/pages/index.md b/doc/administration/pages/index.md
index e933f8a15da..f6ff13edabd 100644
--- a/doc/administration/pages/index.md
+++ b/doc/administration/pages/index.md
@@ -588,8 +588,9 @@ database encryption. Proceed with caution.
1. On the **GitLab server**, make the following changes to `/etc/gitlab/gitlab.rb`:
```ruby
- gitlab_pages['enable'] = false
pages_external_url "http://<pages_server_URL>"
+ gitlab_pages['enable'] = false
+ gitlab_rails['pages_enabled']=false
gitlab_rails['pages_path'] = "/mnt/pages"
```
diff --git a/doc/administration/postgresql/external.md b/doc/administration/postgresql/external.md
index e2cfb95ec48..632b68fb014 100644
--- a/doc/administration/postgresql/external.md
+++ b/doc/administration/postgresql/external.md
@@ -11,8 +11,7 @@ If you use a cloud-managed service, or provide your own PostgreSQL instance:
1. Set up PostgreSQL according to the
[database requirements document](../../install/requirements.md#database).
-1. Set up a `gitlab` username with a password of your choice. The `gitlab` user
- needs privileges to create the `gitlabhq_production` database.
+1. Set up a `gitlab` user with a password of your choice, create the `gitlabhq_production` database, and make the user an owner of the database. You can see an example of this setup in the [installation from source documentation](../../install/installation.md#6-database).
1. If you are using a cloud-managed service, you may need to grant additional
roles to your `gitlab` user:
- Amazon RDS requires the [`rds_superuser`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.Roles) role.
diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql
index 0fb210cf112..b66277e71e1 100644
--- a/doc/api/graphql/reference/gitlab_schema.graphql
+++ b/doc/api/graphql/reference/gitlab_schema.graphql
@@ -5680,6 +5680,11 @@ type EpicIssue implements Noteable {
relativePosition: Int
"""
+ Severity level of the incident
+ """
+ severity: IssuableSeverity
+
+ """
State of the issue
"""
state: IssueState!
@@ -6928,6 +6933,11 @@ type Group {
severity: [VulnerabilitySeverity!]
"""
+ List vulnerabilities by sort order
+ """
+ sort: VulnerabilitySort = severity_desc
+
+ """
Filter vulnerabilities by state
"""
state: [VulnerabilityState!]
@@ -7264,6 +7274,36 @@ type InstanceSecurityDashboard {
}
"""
+Incident severity
+"""
+enum IssuableSeverity {
+ """
+ Critical severity
+ """
+ CRITICAL
+
+ """
+ High severity
+ """
+ HIGH
+
+ """
+ Low severity
+ """
+ LOW
+
+ """
+ Medium severity
+ """
+ MEDIUM
+
+ """
+ Unknown severity
+ """
+ UNKNOWN
+}
+
+"""
State of a GitLab issue or merge request
"""
enum IssuableState {
@@ -7510,6 +7550,11 @@ type Issue implements Noteable {
relativePosition: Int
"""
+ Severity level of the incident
+ """
+ severity: IssuableSeverity
+
+ """
State of the issue
"""
state: IssueState!
@@ -12690,6 +12735,11 @@ type Project {
severity: [VulnerabilitySeverity!]
"""
+ List vulnerabilities by sort order
+ """
+ sort: VulnerabilitySort = severity_desc
+
+ """
Filter vulnerabilities by state
"""
state: [VulnerabilityState!]
@@ -13452,6 +13502,11 @@ type Query {
severity: [VulnerabilitySeverity!]
"""
+ List vulnerabilities by sort order
+ """
+ sort: VulnerabilitySort = severity_desc
+
+ """
Filter vulnerabilities by state
"""
state: [VulnerabilityState!]
@@ -18390,6 +18445,21 @@ enum VulnerabilitySeverity {
}
"""
+Vulnerability sort values
+"""
+enum VulnerabilitySort {
+ """
+ Severity in ascending order
+ """
+ severity_asc
+
+ """
+ Severity in descending order
+ """
+ severity_desc
+}
+
+"""
The state of the vulnerability.
"""
enum VulnerabilityState {
diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json
index 01a6b0307a2..1a64472d636 100644
--- a/doc/api/graphql/reference/gitlab_schema.json
+++ b/doc/api/graphql/reference/gitlab_schema.json
@@ -15845,6 +15845,20 @@
"deprecationReason": null
},
{
+ "name": "severity",
+ "description": "Severity level of the incident",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "ENUM",
+ "name": "IssuableSeverity",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "state",
"description": "State of the issue",
"args": [
@@ -19048,6 +19062,16 @@
"defaultValue": null
},
{
+ "name": "sort",
+ "description": "List vulnerabilities by sort order",
+ "type": {
+ "kind": "ENUM",
+ "name": "VulnerabilitySort",
+ "ofType": null
+ },
+ "defaultValue": "severity_desc"
+ },
+ {
"name": "after",
"description": "Returns the elements in the list that come after the specified cursor.",
"type": {
@@ -20077,6 +20101,47 @@
},
{
"kind": "ENUM",
+ "name": "IssuableSeverity",
+ "description": "Incident severity",
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "UNKNOWN",
+ "description": "Unknown severity",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "LOW",
+ "description": "Low severity",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "MEDIUM",
+ "description": "Medium severity",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "HIGH",
+ "description": "High severity",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "CRITICAL",
+ "description": "Critical severity",
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "ENUM",
"name": "IssuableState",
"description": "State of a GitLab issue or merge request",
"fields": null,
@@ -20728,6 +20793,20 @@
"deprecationReason": null
},
{
+ "name": "severity",
+ "description": "Severity level of the incident",
+ "args": [
+
+ ],
+ "type": {
+ "kind": "ENUM",
+ "name": "IssuableSeverity",
+ "ofType": null
+ },
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
"name": "state",
"description": "State of the issue",
"args": [
@@ -37133,6 +37212,16 @@
"defaultValue": null
},
{
+ "name": "sort",
+ "description": "List vulnerabilities by sort order",
+ "type": {
+ "kind": "ENUM",
+ "name": "VulnerabilitySort",
+ "ofType": null
+ },
+ "defaultValue": "severity_desc"
+ },
+ {
"name": "after",
"description": "Returns the elements in the list that come after the specified cursor.",
"type": {
@@ -39462,6 +39551,16 @@
"defaultValue": null
},
{
+ "name": "sort",
+ "description": "List vulnerabilities by sort order",
+ "type": {
+ "kind": "ENUM",
+ "name": "VulnerabilitySort",
+ "ofType": null
+ },
+ "defaultValue": "severity_desc"
+ },
+ {
"name": "after",
"description": "Returns the elements in the list that come after the specified cursor.",
"type": {
@@ -54036,6 +54135,29 @@
},
{
"kind": "ENUM",
+ "name": "VulnerabilitySort",
+ "description": "Vulnerability sort values",
+ "fields": null,
+ "inputFields": null,
+ "interfaces": null,
+ "enumValues": [
+ {
+ "name": "severity_desc",
+ "description": "Severity in descending order",
+ "isDeprecated": false,
+ "deprecationReason": null
+ },
+ {
+ "name": "severity_asc",
+ "description": "Severity in ascending order",
+ "isDeprecated": false,
+ "deprecationReason": null
+ }
+ ],
+ "possibleTypes": null
+ },
+ {
+ "kind": "ENUM",
"name": "VulnerabilityState",
"description": "The state of the vulnerability.",
"fields": null,
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 829f18b1b18..2262e1b6a3e 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -950,6 +950,7 @@ Relationship between an epic and an issue
| `reference` | String! | Internal reference of the issue. Returned in shortened format by default |
| `relationPath` | String | URI path of the epic-issue relation |
| `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) |
+| `severity` | IssuableSeverity | Severity level of the incident |
| `state` | IssueState! | State of the issue |
| `statusPagePublishedIncident` | Boolean | Indicates whether an issue is published to the status page |
| `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the issue |
@@ -1123,6 +1124,7 @@ Represents a Group Membership
| `milestone` | Milestone | Milestone of the issue |
| `reference` | String! | Internal reference of the issue. Returned in shortened format by default |
| `relativePosition` | Int | Relative position of the issue (used for positioning in epic tree and issue boards) |
+| `severity` | IssuableSeverity | Severity level of the incident |
| `state` | IssueState! | State of the issue |
| `statusPagePublishedIncident` | Boolean | Indicates whether an issue is published to the status page |
| `subscribed` | Boolean! | Indicates the currently logged in user is subscribed to the issue |
diff --git a/doc/api/issues.md b/doc/api/issues.md
index 2a0d66a8b3e..b1ab5c96fcb 100644
--- a/doc/api/issues.md
+++ b/doc/api/issues.md
@@ -680,164 +680,7 @@ Example response:
}
```
-Users on GitLab [Starter, Bronze, or higher](https://about.gitlab.com/pricing/) will also see
-the `weight` parameter:
-
-```json
-{
- "project_id" : 4,
- "description" : "Omnis vero earum sunt corporis dolor et placeat.",
- "weight": null,
- ...
-}
-```
-
-Users on GitLab [Ultimate](https://about.gitlab.com/pricing/) will additionally see
-the `epic` property:
-
-```javascript
-{
- "project_id" : 4,
- "description" : "Omnis vero earum sunt corporis dolor et placeat.",
- "epic": {
- "epic_iid" : 5, //deprecated, use `iid` of the `epic` attribute
- "epic": {
- "id" : 42,
- "iid" : 5,
- "title": "My epic epic",
- "url" : "/groups/h5bp/-/epics/5",
- "group_id": 8
- },
- // ...
-}
-```
-
-**Note**: `assignee` column is deprecated, now we show it as a single-sized array `assignees` to conform to the GitLab EE API.
-
-**Note**: The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value will only be present for issues which were closed after GitLab 10.6 and when the user account that closed the issue still exists.
-
-**Note**: The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157).
-Please use `iid` of the `epic` attribute instead.
-
-## Single Issue
-
-Only for administrators. Get a single issue.
-
-The preferred way to do this is by using [personal access tokens](../user/profile/personal_access_tokens.md).
-
-```plaintext
-GET /issues/:id
-```
-
-| Attribute | Type | Required | Description |
-|-------------|---------|----------|--------------------------------------|
-| `id` | integer | yes | The ID of the issue |
-
-```shell
-curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/issues/41"
-```
-
-Example response:
-
-```json
-{
- "id" : 1,
- "milestone" : {
- "due_date" : null,
- "project_id" : 4,
- "state" : "closed",
- "description" : "Rerum est voluptatem provident consequuntur molestias similique ipsum dolor.",
- "iid" : 3,
- "id" : 11,
- "title" : "v3.0",
- "created_at" : "2016-01-04T15:31:39.788Z",
- "updated_at" : "2016-01-04T15:31:39.788Z",
- "closed_at" : "2016-01-05T15:31:46.176Z"
- },
- "author" : {
- "state" : "active",
- "web_url" : "https://gitlab.example.com/root",
- "avatar_url" : null,
- "username" : "root",
- "id" : 1,
- "name" : "Administrator"
- },
- "description" : "Omnis vero earum sunt corporis dolor et placeat.",
- "state" : "closed",
- "iid" : 1,
- "assignees" : [{
- "avatar_url" : null,
- "web_url" : "https://gitlab.example.com/lennie",
- "state" : "active",
- "username" : "lennie",
- "id" : 9,
- "name" : "Dr. Luella Kovacek"
- }],
- "assignee" : {
- "avatar_url" : null,
- "web_url" : "https://gitlab.example.com/lennie",
- "state" : "active",
- "username" : "lennie",
- "id" : 9,
- "name" : "Dr. Luella Kovacek"
- },
- "labels" : [],
- "upvotes": 4,
- "downvotes": 0,
- "merge_requests_count": 0,
- "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
- "updated_at" : "2016-01-04T15:31:46.176Z",
- "created_at" : "2016-01-04T15:31:46.176Z",
- "closed_at" : null,
- "closed_by" : null,
- "subscribed": false,
- "user_notes_count": 1,
- "due_date": null,
- "web_url": "http://example.com/my-group/my-project/issues/1",
- "references": {
- "short": "#1",
- "relative": "#1",
- "full": "my-group/my-project#1"
- },
- "time_stats": {
- "time_estimate": 0,
- "total_time_spent": 0,
- "human_time_estimate": null,
- "human_total_time_spent": null
- },
- "confidential": false,
- "discussion_locked": false,
- "_links": {
- "self": "http://example.com/api/v4/projects/1/issues/2",
- "notes": "http://example.com/api/v4/projects/1/issues/2/notes",
- "award_emoji": "http://example.com/api/v4/projects/1/issues/2/award_emoji",
- "project": "http://example.com/api/v4/projects/1"
- },
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "weight": null,
- "has_tasks": false,
- "_links": {
- "self": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1",
- "notes": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1/notes",
- "award_emoji": "http://gitlab.dummy:3000/api/v4/projects/1/issues/1/award_emoji",
- "project": "http://gitlab.dummy:3000/api/v4/projects/1"
- },
- "references": {
- "short": "#1",
- "relative": "#1",
- "full": "gitlab-org/gitlab-test#1"
- },
- "subscribed": true,
- "moved_to_id": null,
- "epic_iid": null,
- "epic": null
-}
-```
-
-Users on GitLab [Starter, Bronze, or higher](https://about.gitlab.com/pricing/) will also see
+Users on GitLab [Starter, Bronze, or higher](https://about.gitlab.com/pricing/) can also see
the `weight` parameter:
```json
@@ -849,7 +692,7 @@ the `weight` parameter:
}
```
-Users on GitLab [Ultimate](https://about.gitlab.com/pricing/) will additionally see
+Users on GitLab [Ultimate](https://about.gitlab.com/pricing/) can also see
the `epic` property:
```javascript
@@ -869,14 +712,20 @@ the `epic` property:
}
```
-**Note**: `assignee` column is deprecated, now we show it as a single-sized array `assignees` to conform to the GitLab EE API.
+NOTE: **Note:**
+The `assignee` column is deprecated. We now show it as a single-sized array `assignees` to conform
+to the GitLab EE API.
-**Note**: The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value will only be present for issues which were closed after GitLab 10.6 and when the user account that closed the issue still exists.
+NOTE: **Note:**
+The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042).
+This value is only present for issues closed after GitLab 10.6 and if the user account
+that closed the issue still exists.
-**Note**: The `epic_iid` attribute is deprecated and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157).
+NOTE: **Note:**
+The `epic_iid` attribute is deprecated, and [will be removed in version 5](https://gitlab.com/gitlab-org/gitlab/-/issues/35157).
Please use `iid` of the `epic` attribute instead.
-## Single Project Issue
+## Single project issue
Get a single project issue.
diff --git a/doc/development/telemetry/usage_ping.md b/doc/development/telemetry/usage_ping.md
index 87eb3c5234a..81daedb0000 100644
--- a/doc/development/telemetry/usage_ping.md
+++ b/doc/development/telemetry/usage_ping.md
@@ -288,6 +288,29 @@ Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd) and [PF
end
```
+1. Track event in API using `increment_unique_values(event_name, values)` helper method.
+
+ In order to be able to track the event, Usage Ping must be enabled and the event feature `usage_data_<event_name>` must be enabled.
+
+ Arguments:
+
+ - `event_name`: event name.
+ - `values`: values counted, one value or array of values.
+
+ Example usage:
+
+ ```ruby
+ get ':id/registry/repositories' do
+ repositories = ContainerRepositoriesFinder.new(
+ user: current_user, subject: user_group
+ ).execute
+
+ increment_unique_values('i_list_repositories', current_user.id)
+
+ present paginate(repositories), with: Entities::ContainerRegistry::Repository, tags: params[:tags], tags_count: params[:tags_count]
+ end
+ ```
+
1. Track event using base module `Gitlab::UsageDataCounters::HLLRedisCounter.track_event(entity_id, event_name)`.
Arguments:
diff --git a/doc/user/admin_area/analytics/dev_ops_report.md b/doc/user/admin_area/analytics/dev_ops_report.md
index 8c21570937d..8ddd093893c 100644
--- a/doc/user/admin_area/analytics/dev_ops_report.md
+++ b/doc/user/admin_area/analytics/dev_ops_report.md
@@ -10,7 +10,9 @@ The DevOps Report gives you an overview of your entire instance's adoption of
[Concurrent DevOps](https://about.gitlab.com/topics/concurrent-devops/)
from planning to monitoring.
-This displays the usage of these GitLab features over
+## DevOps Score
+
+DevOps Score displays the usage of GitLab's major features on your instance over
the last 30 days, averaged over the number of active users in that time period. It also
provides a Lead score per feature, which is calculated based on GitLab's analysis
of top-performing instances based on [usage ping data](../settings/usage_statistics.md#usage-ping-core-only) that GitLab has
diff --git a/doc/user/application_security/img/unconfigured_security_approval_rules_and_enabled_jobs_v13_4.png b/doc/user/application_security/img/unconfigured_security_approval_rules_and_enabled_jobs_v13_4.png
new file mode 100644
index 00000000000..f497b0fbc4e
--- /dev/null
+++ b/doc/user/application_security/img/unconfigured_security_approval_rules_and_enabled_jobs_v13_4.png
Binary files differ
diff --git a/doc/user/application_security/img/unconfigured_security_approval_rules_and_jobs_v13_4.png b/doc/user/application_security/img/unconfigured_security_approval_rules_and_jobs_v13_4.png
new file mode 100644
index 00000000000..fc847b578f5
--- /dev/null
+++ b/doc/user/application_security/img/unconfigured_security_approval_rules_and_jobs_v13_4.png
Binary files differ
diff --git a/doc/user/application_security/img/vulnerability-check_v13_0.png b/doc/user/application_security/img/vulnerability-check_v13_0.png
deleted file mode 100644
index 9f0bd0f759b..00000000000
--- a/doc/user/application_security/img/vulnerability-check_v13_0.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/application_security/img/vulnerability-check_v13_4.png b/doc/user/application_security/img/vulnerability-check_v13_4.png
new file mode 100644
index 00000000000..e0b53059b45
--- /dev/null
+++ b/doc/user/application_security/img/vulnerability-check_v13_4.png
Binary files differ
diff --git a/doc/user/application_security/index.md b/doc/user/application_security/index.md
index da348cfc9c4..c3477fdcbb6 100644
--- a/doc/user/application_security/index.md
+++ b/doc/user/application_security/index.md
@@ -309,15 +309,29 @@ rating.
### Enabling Security Approvals within a project
-To enable Security Approvals, a [project approval rule](../project/merge_requests/merge_request_approvals.md#adding--editing-a-default-approval-rule)
-must be created with the case-sensitive name `Vulnerability-Check`. This approval group must be set
-with the number of approvals required greater than zero. You must have Maintainer or Owner [permissions](../permissions.md#project-members-permissions) to manage approval rules.
+To enable the `Vulnerability-Check` or `License-Check` Security Approvals, a [project approval rule](../project/merge_requests/merge_request_approvals.md#adding--editing-a-default-approval-rule)
+must be created. A [security scanner job](#security-scanning-tools) must be enabled for
+`Vulnerability-Check`, and a [license scanning](../compliance/license_compliance/index.md#configuration)
+job must be enabled for `License-Check`. When the proper jobs aren't configured, the following
+appears:
+
+![Unconfigured Approval Rules](img/unconfigured_security_approval_rules_and_jobs_v13_4.png)
+
+If at least one security scanner is enabled, you will be able to enable the `Vulnerability-Check` approval rule. If a license scanning job is enabled, you will be able to enable the `License-Check` rule.
+
+![Unconfigured Approval Rules with valid pipeline jobs](img/unconfigured_security_approval_rules_and_enabled_jobs_v13_4.png)
+
+For this approval group, you must set the number of approvals required to greater than zero. You
+must have Maintainer or Owner [permissions](../permissions.md#project-members-permissions)
+to manage approval rules.
+
+Follow these steps to enable `Vulnerability-Check`:
1. Navigate to your project's **Settings > General** and expand **Merge request approvals**.
-1. Click **Add approval rule**, or **Edit**.
- - Add or change the **Rule name** to `Vulnerability-Check` (case sensitive).
+1. Click **Enable**, or **Edit**.
+1. Add or change the **Rule name** to `Vulnerability-Check` (case sensitive).
-![Vulnerability Check Approver Rule](img/vulnerability-check_v13_0.png)
+![Vulnerability Check Approver Rule](img/vulnerability-check_v13_4.png)
Once this group is added to your project, the approval rule is enabled for all merge requests.
@@ -334,32 +348,14 @@ An approval is optional when the security report:
- Contains no new vulnerabilities when compared to the target branch.
- Contains only new vulnerabilities of `low` or `medium` severity.
-## Enabling License Approvals within a project
+### Enabling License Approvals within a project
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13067) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.3.
-`License-Check` is an approval rule you can enable to allow an individual or group to approve a
-merge request that contains a `denied` license.
-
-You can enable `License-Check` one of two ways:
-
-- Create a [project approval rule](../project/merge_requests/merge_request_approvals.md#multiple-approval-rules-premium)
- with the case-sensitive name `License-Check`.
-- Create an approval group in the [project policies section for License Compliance](../compliance/license_compliance/index.md#policies).
- You must set this approval group's number of approvals required to greater than zero. Once you
- enable this group in your project, the approval rule is enabled for all merge requests.
-
-Any code changes cause the approvals required to reset.
-
-An approval is required when a license report:
-
-- Contains a dependency that includes a software license that is `denied`.
-- Is not generated during pipeline execution.
-
-An approval is optional when a license report:
-
-- Contains no software license violations.
-- Contains only new licenses that are `allowed` or unknown.
+`License-Check` is a [security approval rule](#enabling-security-approvals-within-a-project)
+you can enable to allow an individual or group to approve a merge request that contains a `denied`
+license. For instructions on enabling this rule, see
+[Enabling license approvals within a project](../compliance/license_compliance/index.md#enabling-license-approvals-within-a-project).
## Working in an offline environment
diff --git a/doc/user/compliance/license_compliance/img/license-check_v13_4.png b/doc/user/compliance/license_compliance/img/license-check_v13_4.png
new file mode 100644
index 00000000000..d3658cbaa18
--- /dev/null
+++ b/doc/user/compliance/license_compliance/img/license-check_v13_4.png
Binary files differ
diff --git a/doc/user/compliance/license_compliance/index.md b/doc/user/compliance/license_compliance/index.md
index 1756c7ae9f3..3bf6f310751 100644
--- a/doc/user/compliance/license_compliance/index.md
+++ b/doc/user/compliance/license_compliance/index.md
@@ -724,17 +724,21 @@ Developers of the project can view the policies configured in a project.
![View Policies](img/policies_v13_0.png)
-### Enabling License Approvals within a project
+## Enabling License Approvals within a project
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13067) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.3.
-`License-Check` is an approval rule you can enable to allow an approver, individual, or group to
-approve a merge request that contains a `denied` license.
+`License-Check` is a [security approval](../../application_security/index.md#enabling-security-approvals-within-a-project) rule you can enable to allow an individual or group to approve a
+merge request that contains a `denied` license.
You can enable `License-Check` one of two ways:
-- Create a [project approval rule](../../project/merge_requests/merge_request_approvals.md#multiple-approval-rules-premium)
- with the case-sensitive name `License-Check`.
+1. Navigate to your project's **Settings > General** and expand **Merge request approvals**.
+1. Click **Enable** or **Edit**.
+1. Add or change the **Rule name** to `License-Check` (case sensitive).
+
+![License Check Approver Rule](img/license-check_v13_4.png)
+
- Create an approval group in the [project policies section for License Compliance](#policies).
You must set this approval group's number of approvals required to greater than zero. Once you
enable this group in your project, the approval rule is enabled for all merge requests.