2017-08-11 51 views
0

我讀https://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/,這對我來說是什麼和什麼時候回答,但不是爲什麼。爲什麼S3權限可以由IAM策略和桶策略來管理,而不僅僅是一個或另一個?

我是AWS新手,想學習它。

爲什麼要創建兩個方法,而不僅僅是一個?基於文章中的例子,爲什麼不只是有IAM策略來處理這兩種用例,例如IAM策略JSON包含'Principal'項作爲「基於關聯」或「??」,那麼它的工作方式就像Bucket政策。它看起來像任何需要政策控制的服務都會創建另一種策略。例; YYY服務政策將有一個「YYY:」校長和行動。

我能想到的原因是,S3是需要大量訪問控制(如細粒度,分組等)的策略,並且創建特定S3的策略可以減輕管理,並減少後端資源?

回答

0

爲什麼存在IAM權限策略和基於資源的策略(如S3存儲桶策略)有各種原因。

比方說,您有一個S3存儲桶,並且您想授予對其他帳戶的訪問權限。這是不可能的,只能使用IAM策略。因此,您需要存儲桶策略將帳戶或IAM實體包含爲委託人。

此外,您不能在IAM權限策略中使用Principal,因爲當您將策略附加到IAM用戶時,當用戶提出請求時,它將成爲委託人。

請看看進入瞭解詳情如下: http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal http://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-overview.html

+0

我認爲其中一個原因是因爲基於資源的策略是在基於身份的策略添加之前..而AWS不能只將它們合併爲一個。謝謝Sudo! –

1

S3授權通過測試所有的政府部門,在用戶,桶和對象的「上下文」的請求。

參見How Amazon S3 Authorizes a Request

該文檔在第一次閱讀時感到困惑,但它確實給出了有關多個策略發生的更好的意義。

有幾點要記住:

  • 用戶沒有自己的水桶。 帳戶自己的存儲桶和帳戶自己的用戶。
  • 如果用戶創建存儲桶,擁有該用戶的帳戶始終擁有該存儲桶。
  • 如果用戶創建一個對象,擁有該用戶的帳戶始終擁有該對象 - 即使該對象創建的存儲桶由不同的帳戶擁有。

等等,什麼?

如果我的帳戶爲您的用戶授予在我的存儲桶中創建對象的權限,那麼您實際上會擁有該對象。除非您允許我閱讀,否則我無法閱讀。既然它存在於我的存儲桶中,並且我正在付錢來存儲它,我可以刪除它,但除非您允許我訪問它,否則這絕對是我可以對該對象執行的所有操作。

因此,有三個級別的權限允許用戶被允許執行的操作(IAM策略),允許對其存儲桶及其對象(存儲桶策略和ACL)以及事物帳戶允許對他們擁有的對象(對象ACL)進行處理。

的默認操作是隱含的否認,但任何我的帳戶有權力允許可以通過允許它在任何一個地方是允許的,只要它沒有明確拒絕,在其他地方。顯式拒絕將永遠否認,無一例外。

啓示模型:

  • 我的用戶,我鬥,我的目標只需要一個授權;訪問可以在三個地方中的任何一個地方授予,只需要在一個地方授予訪問權限,因爲我的帳戶擁有所有資源......所以我可以在IAM策略,存儲桶策略或對象中執行此操作。
  • 我的用戶,你的水桶需要兩筆贈款 - 我讓我的用戶在IAM政策,你必須讓我的YOUT桶政策的用戶。未經您的同意,我無權在您的存儲桶中執行任何操作,並且您沒有權限允許我的用戶在未經我同意的情況下執行操作。
  • ,可以讓我在我的水桶對象通過任一對象ACL或通過桶政策公開可讀,但不是IAM政策,因爲IAM政策適用於用戶,「大家」是不是我的IAM用戶之一。

所以,S3需要becase的權限模型的補助多個來源。如果你沒有做任何交叉賬戶,其中一些並不明顯,因爲你不知道一些可能的組合。

我的選擇是對我的桶的政策需要稍加註意。用戶可以在IAM中獲得訪問權限,公共對象在對象級別公開(您可以在存儲桶策略中執行此操作,但我更喜歡在對象級別顯式執行此操作),因此存儲桶策略的用途有限 - 有時存在存儲桶策略規則拒絕除列表以外的所有IP地址的訪問,通常情況下存儲桶策略拒絕沒有AES-256的上載(因此您不能「忘記」加密對象),有時存在用於與CloudFront進行互操作的原始訪問身份規則...但我很少定製桶政策,因爲這是我的設計理念。

+0

我會找到一種方法來獲得另一個帳戶來測試您指出的存儲桶和對象所有者。感謝真實的生活使用模式/理念!如果我曾使用AWS,我也會使用它。閱讀多個AWS文檔,我不知道至少有3分。謝謝邁克爾! –

+0

謝謝,@YewHang。不要忘記投票。 –

相關問題