AWS CSAA-Amazon S3 3
依據使用者:
- 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):
- 加密S3的Object要使用加密keys
S3 Bucket Policies:
大概長這樣:
- 以JSON格式的policies
- Resources可以是buckets或是Objects,如上就是examplebucket內的全部(因為後面的/*)
- Effect可以是Allow或Deny
- Actions可以是Allow或Deny的API的集合,
- Principal可以是帳號或user去應用這個policy
- 以上面Effect,Action,Principal,Resource的組合範例來說就是允許任何人去examplebucket內取得s3的Object
所以一般使用S3的Bucket Policy應用於:
- 拓展bucket公開進入的權限
- 強制Object再上傳時加密
- 拓展其他帳號進入的權限(橫跨帳號)
使用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的狀態
另外這些也可以設置在帳號層級