int RGWDeleteMultiObj::verify_permission()
{
if (s->iam_policy || ! s->iam_user_policies.empty()) {
+ if (s->bucket_info.obj_lock_enabled() && bypass_governance_mode) {
+ auto r = eval_user_policies(s->iam_user_policies, s->env, boost::none,
+ rgw::IAM::s3BypassGovernanceRetention,
+ ARN(s->bucket));
+ if (r == Effect::Deny) {
+ bypass_perm = false;
+ } else if (r == Effect::Pass && s->iam_policy) {
+ r = s->iam_policy->eval(s->env, *s->auth.identity,
+ rgw::IAM::s3BypassGovernanceRetention,
+ ARN(s->bucket));
+ if (r == Effect::Deny) {
+ bypass_perm = false;
+ }
+ }
+ }
auto usr_policy_res = eval_user_policies(s->iam_user_policies, s->env,
boost::none,
s->object.instance.empty() ?