在第十五天的時候
我們學會如何建立 IAM User 並透過 IAM User 上傳到 S3
而昨天的架站內容
透過是,更新儲存體政策
我們發現即使 S3 沒有開放公開存取
也可以透過修改儲存體政策
允許透過 AWS CloudFront 存取 S3 的內容
既然同樣都為 AWS 的服務
那有沒有可能我們是跨 AWS Account 存取別的 Account 的資料呢?
ㄟ,還真的有辦法
但是這就必須同時建立 IAM User 和 S3 儲存體政策(S3 Bucket Policy)才能達成
{
"Version": "2012-10-17"
"Statement": [
{
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::{S3 Bucket Name}/*",
"arn:aws:s3:::{S3 Bucket Name}"
]
},
{
"Action": "s3:ListAllMyBuckets",
"Effect": "Allow",
"Resource": "*"
}
]
}
輸入 IAM User 名稱
並在建立時關聯剛剛建立的 Policy
點擊建立的 IAM User
並在安全憑證
的分類中找到存取金鑰
點按建立存取金鑰
在使用案例中選擇命令列界面 (CLI)
在 S3 頁面中建立儲存體
使用預設設定即可
物件擁有權選擇ACL 已停用 (建議)
「封鎖公開存取」設定選擇封鎖所有公開存取權
儲存體的名稱記得可鑑別度高一些以避免重複
在建立的 S3 Bucket 中
許可
的分類底下找到儲存體政策點按編輯
參考下列的 json 將 Principal 替換成剛剛建立 IAM User 的 ARN
Resource 則填入前一步建立的 S3 Bucket 的 ARN
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB:user/AccountBUserName"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::AccountABucketName/*"
]
}
]
}
如此簡單幾個步驟
就可以達到 S3 Bucket 的跨帳戶存取
如果有多使用者要同時存取同一個儲存體
大家可以再思考一下
就可以改成使用者在特定資料夾有 CRUD 的權限
其他資料夾則只有讀取的權限
參考資料: