RGW S3 ACL解析

RGW ACL主要類關係圖以下圖所示:ui

RGW ACL處理類關係圖以下圖所示:xml

RGW ACL主要處理流程詳細說明以下。對象

1、PUT ACL。get

RGWPutACL::execute()object

|__從HTTP請求數據流中解析出RGWAccessControlPolicy_S3對象List

|__RGWAccessControlPolicy_S3::rebuild()遍歷

     |__rgw_get_user_info_by_uid()          獲得指定的用戶信息meta

     |__建立ACLOwner對象且設置ACLOwner的id和namemap

     |__遍歷grant_map列表生成新的ACLGrant對象請求

     |__將新生成的ACLGrant對象插入到RGWAccessControlList::grant_map中

|__根據bucket和object信息生成rgw_obj對象

|__對於設置對象的ACL則將對象的ACL信息寫入到對象屬性的RGW_ATTR_ACL中,對於設置bucket的ACL則將ACL信息寫入到Bucket的metadata中

2、GET ACL。

RGWGetACLs::execute()

|__判斷所需是bucket ACL仍是object ACL

|__生成RGWAccessControlPolicy_S3對象

|__RGWAccessControlPolicy_S3::to_xml()          將RGWAccessControlPolicy_S3對象xml化

相關文章
相關標籤/搜索