From: Casey Bodley Date: Thu, 6 Apr 2023 14:53:52 +0000 (-0400) Subject: rgw/op: factor out rgw_iam_add_crypt_attrs() X-Git-Tag: v18.1.0~99^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3407e04ac56bab1b7f66ebde2f3b3c74e4156741;p=ceph-ci.git rgw/op: factor out rgw_iam_add_crypt_attrs() make the iam environment variables for server-side encryption available to other ops Signed-off-by: Casey Bodley (cherry picked from commit 3b517a2679c62529950cd66136f9fb971ae612cc) --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index bfe86c52d79..04703de0f65 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -781,6 +781,22 @@ static int rgw_iam_add_buckettags(const DoutPrefixProvider *dpp, req_state* s) { return rgw_iam_add_buckettags(dpp, s, s->bucket.get()); } +static void rgw_iam_add_crypt_attrs(rgw::IAM::Environment& e, + const meta_map_t& attrs) +{ + constexpr auto encrypt_attr = "x-amz-server-side-encryption"; + constexpr auto s3_encrypt_attr = "s3:x-amz-server-side-encryption"; + if (auto h = attrs.find(encrypt_attr); h != attrs.end()) { + rgw_add_to_iam_environment(e, s3_encrypt_attr, h->second); + } + + constexpr auto kms_attr = "x-amz-server-side-encryption-aws-kms-key-id"; + constexpr auto s3_kms_attr = "s3:x-amz-server-side-encryption-aws-kms-key-id"; + if (auto h = attrs.find(kms_attr); h != attrs.end()) { + rgw_add_to_iam_environment(e, s3_kms_attr, h->second); + } +} + static std::tuple rgw_check_policy_condition(const DoutPrefixProvider *dpp, boost::optional iam_policy, boost::optional> identity_policies, @@ -3697,19 +3713,8 @@ int RGWPutObj::verify_permission(optional_yield y) } } - constexpr auto encrypt_attr = "x-amz-server-side-encryption"; - constexpr auto s3_encrypt_attr = "s3:x-amz-server-side-encryption"; - auto enc_header = s->info.crypt_attribute_map.find(encrypt_attr); - if (enc_header != s->info.crypt_attribute_map.end()){ - rgw_add_to_iam_environment(s->env, s3_encrypt_attr, enc_header->second); - } - - constexpr auto kms_attr = "x-amz-server-side-encryption-aws-kms-key-id"; - constexpr auto s3_kms_attr = "s3:x-amz-server-side-encryption-aws-kms-key-id"; - auto kms_header = s->info.crypt_attribute_map.find(kms_attr); - if (kms_header != s->info.crypt_attribute_map.end()){ - rgw_add_to_iam_environment(s->env, s3_kms_attr, kms_header->second); - } + // add server-side encryption headers + rgw_iam_add_crypt_attrs(s->env, s->info.crypt_attribute_map); // Add bucket tags for authorization auto [has_s3_existing_tag, has_s3_resource_tag] = rgw_check_policy_condition(this, s, false);