I’d like to define my drone pipeline only in the .drone.yml of the master branch (or default branch of the git repo), and when something is pushed to any branch of the repo (a branch that may not contain the .drone.yml file) it will always trigger the pipeline defined in the master branch.
@jhernandez provides the correct answer - gating would block the build if an unauthorized user modifies your yaml configuration file. You would be able to review and either reject or approve the change to proceed with the build.
I also assume that you have the default secret settings in place, which prevent secrets from being exposed to pull requests. This is documented here https://docs.drone.io/secret/repository/
The problem is that the last step of the .drone.yml pipeline is a deployment step, that SSH into a prod server to run a service.
I would like to point out that every file in your repository (not just the .drone.yml) can be used as an attack vector. If you are not closely reviewing pull requests, someone could send a pull request that modifies the .drone.yml or any other source code file in your repository resulting in malicious code being deployed to your servers.
In fact, this attack vector does not even require a CI server. The minute you begin accepting public pull requests, even with manual deployments and no CI, you are subject to accidentally merging a malicious pull request and deploying that code to your servers. Hopefully that risk is very low, but it is there regardless.