當我嘗試更新 Amazon S3 儲存貯體政策時,為什麼會收到錯誤訊息「政策中的主體無效」?

1 分的閱讀內容
0

我正在嘗試使用主控台新增或編輯我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策。但是,我收到錯誤訊息:「錯誤: 政策中的主體無效。」

解決方法

您收到錯誤: 政策中的主體無效訊息,代表儲存貯體政策中的主體值無效。若要解決此錯誤,請檢查下列項目:

  • 儲存貯體政策會針對主體元素使用受支援的值。
  • 主體元素格式正確。
  • 如果主體是 AWS 身分和存取管理 (IAM) 使用者或角色,請確認未刪除使用者或角色。

儲存貯體政策使用主體元素受支援的值

檢閱儲存貯體政策中的「主體元素」。檢查其是否使用以下任何一項受支援的值:

警告:"Action:" "Allow" 搭配使用時,"*" 主體元素會授與所有已驗證和匿名使用者的存取權。在儲存貯體政策中使用此組合之前,請確認您的內容支援此層級的存取權限。

主體值格式正確

檢閱政策中的主體元素,並檢查其格式是否正確。如果主體包含一個使用者,則元素必須採用下列格式:

"Principal": {
    "AWS": "arn:aws:iam::111111111111:user/user-name1"
}

當您在主體元素中指定使用者時,您無法使用 “\ *” 來指出所有使用者。您必須包括主體元素的特定使用者。

如果主體元素包含多個 IAM 使用者或 IAM 角色,則該元素必須採用以下格式:

"Principal": {
  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "arn:aws:iam::111111111111:role/role-name1"
  ]
}

如果主體是所有使用者,則元素必須採用以下格式:

{
  "Principal": "*"
}

最好不要在以資源為基礎的政策的主體元素中使用萬用字元 (\ *) 並使 Allow 生效。只有在您想要授予公開或匿名存取權時,再使用萬用在元。在主體元素中指定預定的主體、服務或 AWS 帳戶。然後,使用條件元素來限制存取。IAM 角色信任政策尤其如此,因為這些政策允許其他主體成為您帳戶中的主體。

未刪除 IAM 使用者或角色

如果您的儲存貯體政策在主體元素中包含 IAM 使用者或角色,請確認未刪除這些 IAM 身分。請務必在主體元素中指定唯一識別碼,而非完整 ARN。這有助於識別目前儲存貯體政策中已刪除的 IAM 使用者和角色。

範例:

"Principal": {
  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "AIDAJQABLZS4A3QDU576Q",
    "arn:aws:iam::111111111111:user/user-name2"
  ]
}

如果您嘗試將具有唯一識別碼的儲存貯體政策儲存為主體元素,則會出現政策中的主體無效錯誤。這是因為主體元素只支援有效的 IAM ARN。若要解決此錯誤,您必須從主體元素中移除任何唯一識別碼。

IAM 主體的帳戶未開啟 AWS 區域

如果您的 S3 儲存貯體位於預設未開啟的 AWS 區域,請確認 IAM 主體的帳戶已開啟該區域。如需詳細資訊,請參閱 AWS 區域管理

相關資訊

AWS 政策產生器

AWS JSON 政策元素: 主體

AWS 官方
AWS 官方已更新 1 年前