本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 如何授權儲存貯體操作要求
當 Amazon S3 收到儲存貯體操作的要求時,Amazon S3 會將所有相關許可轉換為一組政策,以便在執行階段進行評估。如果請求來自 IAM 主體,相關許可包括資源型許可 (例如儲存貯體政策和儲存貯體存取控制清單) 和使用者政策。然後,Amazon S3 會根據特定內容,即使用者內容或儲存貯體內容,在一系列步驟中評估產生的政策集:
-
使用者內容 – 如果請求者是 IAM 主體,則主體必須擁有 AWS 帳戶 其所屬父項的許可。在此步驟中,Amazon S3 會評估父帳戶 (亦稱為內容授權單位) 所擁有的政策子集。此政策子集包含父帳戶連接至委託人的使用者政策。如果父系也擁有請求中的資源 (在此情況下是儲存貯體),Amazon S3 也會同時評估對應的資源政策 (儲存貯體政策和儲存貯體 ACL)。每當提出儲存貯體操作要求時,伺服器存取日誌都會記錄要求者的正式 ID。如需詳細資訊,請參閱使用伺服器存取記錄記錄要求。
-
儲存貯體內容 – 請求者必須取得儲存貯體擁有者的許可,才能執行特定的儲存貯體操作。在此步驟中,Amazon S3 會評估擁有 儲存貯體的 所 AWS 帳戶 擁有的政策子集。
儲存貯體擁有者可以使用儲存貯體政策或儲存貯體 ACL 授予許可。如果 AWS 帳戶 擁有儲存貯體的 也是 IAM 主體的父帳戶,則可以在使用者政策中設定儲存貯體許可。
下圖說明儲存貯體操作的內容評估。
下列範例說明評估邏輯。
範例 1:由儲存貯體擁有者所要求的儲存貯體操作
在此範例中,儲存貯體擁有者使用 AWS 帳戶的根憑證,傳送儲存貯體操作請求。
Amazon S3 會執行下列內容評估:
-
由於請求是透過 AWS 帳戶的根使用者憑證提出,因此不會評估使用者內容。
-
在儲存貯體內容中,Amazon S3 會檢閱儲存貯體政策,判斷要求者是否具備執行操作的許可。然後 Amazon S3 會授權要求。
範例 2:由 請求的儲存貯體操作 AWS 帳戶 ,而 不是儲存貯體擁有者
在此範例中,使用 AWS 帳戶 1111-1111-1111 的根使用者憑證提出了一個儲存貯體操作請求,但儲存貯體擁有者為 AWS 帳戶 2222-2222-2222。此請求不會涉及任何 IAM 使用者。
在此範例中,Amazon S3 評估內容如下:
-
由於請求是透過使用 的根使用者憑證提出 AWS 帳戶,因此不會評估使用者內容。
-
在儲存貯體內容中,Amazon S3 會檢查儲存貯體政策。如果儲存貯體擁有者 (AWS 帳戶 2222-2222-2222) 未授權 AWS 帳戶 1111-1111-1111 執行請求的操作,Amazon S3 會拒絕請求。否則,Amazon S3 會授權要求並執行操作。
範例 3:由 IAM 主體請求的儲存貯體操作,其父 AWS 帳戶 系也是儲存貯體擁有者
在此範例中,請求是由 1111-1111-1111 中的 AWS 帳戶 IAM 使用者 Jill 傳送,該使用者也擁有儲存貯體。
Amazon S3 會執行下列內容評估:
-
由於請求來自 IAM 主體,因此在使用者內容中,Amazon S3 會評估屬於父系的所有政策 AWS 帳戶 ,以判斷 Jill 是否具有執行操作的許可。
在此範例中,主體所屬的 parent AWS 帳戶 1111-1111-1111 也是儲存貯體擁有者。因此,除了使用者政策之外,Amazon S3 也會在相同的內容中評估儲存貯體政策和儲存貯體 ACL,因為它們屬於同一個帳戶。
-
由於 Amazon S3 評估儲存貯體政策和儲存貯體 ACL 作為使用者內容的一部分,因此不會評估儲存貯體內容。
範例 4:由 IAM 主體請求的儲存貯體操作,其父系 AWS 帳戶 不是儲存貯體擁有者
在此範例中,請求是由 Jill 傳送,Jill 是 IAM 使用者,其父系 AWS 帳戶 為 1111-1111-1111,但儲存貯體由另一個 2222-2222-2222 AWS 帳戶擁有。
Jill 需要父擁有者 AWS 帳戶 和儲存貯體擁有者的許可。Amazon S3 評估內容的方式如下:
-
由於請求來自 IAM 主體,Amazon S3 透過檢閱帳戶撰寫的政策來評估使用者內容,以確認 Jill 具有必要的許可。如果 Jill 具有許可,則 Amazon S3 會繼續評估儲存貯體內容。如果 Jill 沒有許可,則會拒絕請求。
-
在儲存貯體內容中,Amazon S3 會驗證儲存貯體擁有者 2222-2222-2222 已授予 Jill (或其父系 AWS 帳戶) 執行請求操作的許可。如果她擁有該許可,Amazon S3 會授予請求並執行操作。否則,Amazon S3 會拒絕要求。