### Apache Airflow version

2.3.3 (latest released)

### What happened

I change my DAG from 
```python
with DAG(
   'test',
    access_control={'team':{'can_edit','can_read'}},
) as dag:
   ...
```

to

```python
with DAG(
   'test',
) as dag:
   ...
```

Remove `access_control` arguments, Scheduler can't sync permissions to db.

If we write code like this,

```python
with DAG(
   'test',
   access_control = {'team': {}}
) as dag:
   ...
```

It works.

### What you think should happen instead

It should clear permissions to `test` DAG on Role `team`.

I think we should give a consistent behaviour of permissions sync. If we give `access_control` argument, permissions assigned in Web will clear when we update DAG file.

### How to reproduce

_No response_

### Operating System

CentOS Linux release 7.9.2009 (Core)

### Versions of Apache Airflow Providers

```
airflow-code-editor==5.2.2
apache-airflow==2.3.3
apache-airflow-providers-celery==3.0.0
apache-airflow-providers-ftp==3.0.0
apache-airflow-providers-http==3.0.0
apache-airflow-providers-imap==3.0.0
apache-airflow-providers-microsoft-psrp==2.0.0
apache-airflow-providers-microsoft-winrm==3.0.0
apache-airflow-providers-mysql==3.0.0
apache-airflow-providers-redis==3.0.0
apache-airflow-providers-samba==4.0.0
apache-airflow-providers-sftp==3.0.0
apache-airflow-providers-sqlite==3.0.0
apache-airflow-providers-ssh==3.0.0
```

### Deployment

Virtualenv installation

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [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/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

dag_contents_template = "from airflow import DAG\ndag = DAG('{}', tags=['{}'])"
    with create_session() as session:
        for dag_id, tag in list(zip(TEST_FILTER_DAG_IDS, TEST_TAGS)):
            filename = os.path.join(tmpdir, f"{dag_id}.py")
            with open(filename, "w") as f:
                f.writelines(dag_contents_template.format(dag_id, tag))
            _process_file(filename, session)
@pytest.fixture()
def broken_dags(tmpdir, working_dags):
    with create_session() as session:
        for dag_id in TEST_FILTER_DAG_IDS:
            filename = os.path.join(tmpdir, f"{dag_id}.py")
            with open(filename, "w") as f:
                f.writelines("airflow DAG")
            _process_file(filename, session)
def test_home_filter_tags(working_dags, admin_client):
    with admin_client:
        admin_client.get("home?tags=example&tags=data", follow_redirects=True)
        assert "example,data" == flask.session[FILTER_TAGS_COOKIE]
        admin_client.get("home?reset_tags", follow_redirects=True)
        assert flask.session[FILTER_TAGS_COOKIE] is None
def test_home_importerrors(broken_dags, user_client):
    
    resp = user_client.get("home", follow_redirects=True)
    check_content_in_response("Import Errors", resp)
    for dag_id in TEST_FILTER_DAG_IDS:
        check_content_in_response(f"/{dag_id}.py", resp)
@pytest.mark.parametrize("page", ["home", "home?status=active", "home?status=paused", "home?status=all"])
def test_home_importerrors_filtered_singledag_user(broken_dags, client_single_dag, page):