Member check Push Rule prevents push repository mirroring when signed commits are enabled
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=587254)
</details>
<!--IssueSummary end-->
### Summary
When repository mirroring is enabled with signed commits and the "Confirm committer is a GitLab member" push rule is active, mirror synchronization fails with the error:
```
remote: GitLab: Committer '*****@example.gitlab.com' is not a member of team
```
Enabling signed commits causes `noreply@example.gitlab.com` instance email to be set as committer email, when push rule looks confirm email matches a legitimate user, the check fails:
**File**: `ee/lib/ee/gitlab/checks/push_rules/commit_check.rb` (lines 78-91)
```ruby
def check_member(commit)
return if signed_by_gitlab?(commit)
return unless push_rule.member_check
unless ::User.find_by_any_email(commit.author_email).present?
return "Author '#{commit.author_email}' is not a member of team"
end
if commit.author_email.casecmp(commit.committer_email) != 0
unless ::User.find_by_any_email(commit.committer_email).present?
"Committer '#{commit.committer_email}' is not a member of team"
end
end
end
```
### Steps to reproduce
1. Enable [signed commits](https://docs.gitlab.com/user/project/repository/signed_commits/)
2. Set up a push mirror between project A and B
3. Tick "[Ensure committer is a gitlab member](https://docs.gitlab.com/user/project/repository/push_rules/#verify-users:~:text=Check%20whether%20the%20commit%20author%20is%20a%20GitLab%20user%3A%20Both%20the%20commit%20author%20and%20committer%20email%20addresses%20must%20match%20a%20GitLab%20user%E2%80%99s%20verified%20email%20addresses.)" push rule in project B
4. Observe mirroring now fails as noreply email associated with push commit is not attached to a gitlab instance user
### Example Project
<!--If possible, please create an example project here on GitLab.com that exhibits the problematic
behavior, and link to it here in the bug report. If you are using an older version of GitLab, this
will also determine whether the bug is fixed in a more recent version.-->
### What is the current _bug_ behavior?
Push commits by the gitaly RPC call for mirroring fail with:
```
13:push to mirror: git push: exit status 1, stderr: "remote: GitLab: Committer *****@gitlab.example.com' is not a member of team \nTo <example-repository>.git \n ! [remote rejected] main -> main (pre-receive hook declined) \n ! [remote rejected] 1.0.525 -> 1.0.525 (pre-receive hook declined) \nerror: failed to push some refs to '<example-repository>.git'\n".
```
### What is the expected _correct_ behavior?
Push mirroring should still be possible when signed commits are enabled for the instance and projects are configured with push rule to ensure committer is legitimate. Commits made by the gitaly RPC call should be considered as a member of team, or ignored for push mirroring check_member rule.
### Relevant logs and/or screenshots
<!--Paste any relevant logs - please use code blocks (```) to format console output, logs, and code
as it's tough to read otherwise.-->
### Output of checks
<!--If you are reporting a bug on GitLab.com, uncomment below-->
This bug happens on GitLab Self-Managed when Signed Commits feature is enabled.
<!--and uncomment below if you have /label privileges-->
<!--or follow up with an issue comment of `@gitlab-bot label ~"reproduced on GitLab.com"` if you do not-->
#### Results of GitLab environment info
<!--Input any relevant GitLab environment information if needed.-->
<details>
<summary>Expand for output related to GitLab environment info</summary>
<pre>
(For installations with omnibus-gitlab package run and paste the output of: \`sudo gitlab-rake gitlab:env:info\`) (For installations from source run and paste the output of: \`sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production\`)
</pre>
</details>
#### Results of GitLab application Check
<!--Input any relevant GitLab application check information if needed.-->
<details>
<summary>Expand for output related to the GitLab application check</summary>
<pre>
(For installations with omnibus-gitlab package run and paste the output of: `sudo gitlab-rake gitlab:check SANITIZE=true`)
(For installations from source run and paste the output of: `sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true`)
(we will only investigate if the tests are passing)
</pre>
</details>
### Possible fixes
The `signed_by_gitlab?()` method could check for `:SIGNER_SYSTEM` signer status **without** requiring `updated_from_web?` to be true (I don't think push mirroring is done by web, but by RPC call).
**Option 1**: Remove the `updated_from_web?` requirement
```ruby
def signed_by_gitlab?(commit)
return false unless commit.has_signature?
commit_signatures[commit.id][:signer] == :SIGNER_SYSTEM
end
```
### Patch release information for backports
If the bug fix needs to be backported in a [patch release](https://handbook.gitlab.com/handbook/engineering/releases/patch-releases) to a version under [the maintenance policy](https://docs.gitlab.com/policy/maintenance/), please follow the steps on the [patch release runbook for GitLab engineers](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/patch/engineers.md).
Refer to the [internal "Release Information" dashboard](https://dashboards.gitlab.net/d/delivery-release_info/delivery3a-release-information?orgId=1) for information about the next patch release, including the targeted versions, expected release date, and current status.
#### High-severity bug remediation
To remediate high-severity issues requiring an [internal release](https://handbook.gitlab.com/handbook/engineering/releases/internal-releases/) for single-tenant SaaS instances, refer to the [internal release process for engineers](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/internal-releases/engineers.md?ref_type=heads).
<!--If you don't have /label privileges, follow up with an issue comment of `@gitlab-bot label ~"type::bug"`-->
issue