AWS CSAA-Amazon S3 3

S3 Security: Bucket Policy

ZONGRU Li
Nov 16, 2022

依據使用者:

  • IAM Policies — 透過API呼叫,並指允許特定的IAM User

依據Resource:

  • Bucket Policies:以bucket為範圍的規則,可在S3 console設置 — (允許跨帳號)
  • Object Access Control List(ACL):更細微的微調(並且可以disable)
  • Bucket Access Control List(ACL):不常用(並且可以disable)

註,IAM規則允許進到S3 Object,要滿足以下:

  • 1.User IAM權限允許,OR Resource Policies允許,且沒有其他規則設置不允許(注意前面是"OR")

加密(Encryption):

  • 加密S3Object要使用加密keys

S3 Bucket Policies:

大概長這樣:

  • JSON格式的policies
  • Resources可以是buckets或是Objects,如上就是examplebucket內的全部(因為後面的/*)
  • Effect可以是AllowDeny
  • Actions可以是AllowDenyAPI的集合,
  • Principal可以是帳號或user去應用這個policy
  • 以上面Effect,Action,Principal,Resource的組合範例來說就是允許任何人examplebucket取得s3的Object

所以一般使用S3Bucket Policy應用於:

  • 拓展bucket公開進入的權限
  • 強制Object再上傳時加密
  • 拓展其他帳號進入的權限(橫跨帳號)

使用Bucket Policy的公開進入權限的範例:

範例一:

有開S3 Bucket Policy允許公開進入的話就通

範例二:

IAM Policy允許也可以讓IAM User進去

範例三:

EC2機台則需要EC2的role,並且有合理的IAM Policy就能進去S3 Bucket

進階範例四:跨帳號的進入權限,要用Bucket Policy

只要Bucket Policy有這樣開權限就可以跨帳號給權限進去

這邊另外注意到

有所謂的Bucket Settings專門用來擋公開權限的:

(ON)Block all public access

(ON)Block public access to buckets and objects granted through new access control list(ACLs)

(ON)Block public access to buckets and objects granted through any access control list(ACLs)

(ON)Block public and cross-account access to buckets and objects through any public bucket or access point policies

以上這些設定都能幫助公司避免data leak

如果你認為bucket不該公開,就讓它呈現ON的狀態

另外這些也可以設置在帳號層級

相關參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet