### 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)

subdag_d = DAG("nested_cycle.op_subdag_1.opSubdag_D", default_args=default_args)
                    EmptyOperator(task_id="subdag_d.task", dag=subdag_d)
                    return subdag_d
                def subdag_0():
                    subdag_0 = DAG("nested_cycle.op_subdag_0", default_args=default_args)
                    SubDagOperator(task_id="opSubdag_A", dag=subdag_0, subdag=subdag_a())
                    SubDagOperator(task_id="opSubdag_B", dag=subdag_0, subdag=subdag_b())
                    return subdag_0
                def subdag_1():
                    subdag_1 = DAG("nested_cycle.op_subdag_1", default_args=default_args)
                    SubDagOperator(task_id="opSubdag_C", dag=subdag_1, subdag=subdag_c())
                    SubDagOperator(task_id="opSubdag_D", dag=subdag_1, subdag=subdag_d())
                    return subdag_1
                op_subdag_0 = SubDagOperator(task_id="op_subdag_0", dag=dag, subdag=subdag_0())
                op_subdag_1 = SubDagOperator(task_id="op_subdag_1", dag=dag, subdag=subdag_1())
                op_a = EmptyOperator(task_id="A")
                op_a.set_downstream(op_subdag_0)
                op_a.set_downstream(op_subdag_1)
            return dag
        test_dag = nested_subdag_cycle()
        
        assert len(test_dag.subdags) == 6
        
        dagbag, found_dags, file_path = self.process_dag(nested_subdag_cycle)
        
        
        self.validate_dags(test_dag, found_dags, dagbag, should_be_found=False)
        assert file_path in dagbag.import_errors
    def test_process_file_with_none(self):