Repository: sqlfluff/sqlfluff
Issue category: Feature Request

[Snowflake] Add support for `GRANT MONITOR ON USER ...`
### Search before asking

- [X] I searched the [issues](https://github.com/sqlfluff/sqlfluff/issues) and found no similar issues.


### Description

Add support for `GRANT MONITOR ON USER ...`.

See documentation [here](https://docs.snowflake.com/en/user-guide/security-access-control-privileges#all-privileges-alphabetical) and [here](https://docs.snowflake.com/en/sql-reference/sql/grant-privilege#syntax).

![image](https://github.com/user-attachments/assets/f5e960da-921a-4aac-8168-f80b9e909575)

![image](https://github.com/user-attachments/assets/c6d6fb4a-a000-4080-a1b4-14e0098ff79d)

### Use case

_No response_

### Dialect

Snowflake

### Are you willing to work on and submit a PR to address the issue?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/sqlfluff/sqlfluff/blob/main/CODE_OF_CONDUCT.md)



Functions to edit:
src/sqlfluff/dialects/dialect_snowflake.py:AccessStatementSegment

Patch:
diff --git a/src/sqlfluff/dialects/dialect_snowflake.py b/src/sqlfluff/dialects/dialect_snowflake.py
index e0e1866b51a..d679b8ee5ab 100644
--- a/src/sqlfluff/dialects/dialect_snowflake.py
+++ b/src/sqlfluff/dialects/dialect_snowflake.py
@@ -2918,6 +2918,7 @@ class AccessStatementSegment(BaseSegment):
                 "INTEGRATION",
                 "SCHEMA",
                 "ROLE",
+                "USER",
                 Sequence("ALL", "SCHEMAS", "IN", "DATABASE"),
                 Sequence("FUTURE", "SCHEMAS", "IN", "DATABASE"),
                 _schema_object_types,

Test patch: diff --git a/test/fixtures/dialects/snowflake/grant_revoke.sql b/test/fixtures/dialects/snowflake/grant_revoke.sql
index 99490adb774..b0c75bf8a13 100644
--- a/test/fixtures/dialects/snowflake/grant_revoke.sql
+++ b/test/fixtures/dialects/snowflake/grant_revoke.sql
@@ -90,6 +90,8 @@ grant import share on account to role my_role;
 grant manage grants on account to role my_role;
 grant monitor execution on account to role my_role;
 grant monitor usage on account to role my_role;
+grant monitor on user some_user to role my_role;
+revoke monitor on user some_user from role my_role;
 grant override share restrictions on account to role my_role;
 grant create account on account to role my_role;
 grant create share on account to role my_role;
diff --git a/test/fixtures/dialects/snowflake/grant_revoke.yml b/test/fixtures/dialects/snowflake/grant_revoke.yml
index 7e65f3e450c..b8775647b78 100644
--- a/test/fixtures/dialects/snowflake/grant_revoke.yml
+++ b/test/fixtures/dialects/snowflake/grant_revoke.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 60742b98d9081885cbf3076cd3802c9bac4507c6570fa9d6b285a77debb0e290
+_hash: 0690310e2a4a48fecf5d8d49f8582c255f4213bdee32884a53db83c73b2baa08
 file:
 - statement:
     access_statement:
@@ -1086,6 +1086,32 @@ file:
     - role_reference:
         naked_identifier: my_role
 - statement_terminator: ;
+- statement:
+    access_statement:
+    - keyword: grant
+    - keyword: monitor
+    - keyword: 'on'
+    - keyword: user
+    - object_reference:
+        naked_identifier: some_user
+    - keyword: to
+    - keyword: role
+    - role_reference:
+        naked_identifier: my_role
+- statement_terminator: ;
+- statement:
+    access_statement:
+    - keyword: revoke
+    - keyword: monitor
+    - keyword: 'on'
+    - keyword: user
+    - object_reference:
+        naked_identifier: some_user
+    - keyword: from
+    - keyword: role
+    - object_reference:
+        naked_identifier: my_role
+- statement_terminator: ;
 - statement:
     access_statement:
     - keyword: grant