iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Cloud Native

上完 AWS 線上課程就打算應徵相關工作是否搞錯甚麼系列 第 18

Day 18 使用 IAM User 和 S3 Bucket Bucket Policy 實現跨 AWS Account 存取

  • 分享至 

  • xImage
  •  

第十五天的時候

我們學會如何建立 IAM User 並透過 IAM User 上傳到 S3

昨天的架站內容

透過是,更新儲存體政策

我們發現即使 S3 沒有開放公開存取

也可以透過修改儲存體政策

允許透過 AWS CloudFront 存取 S3 的內容

既然同樣都為 AWS 的服務

那有沒有可能我們是跨 AWS Account 存取別的 Account 的資料呢?

ㄟ,還真的有辦法

但是這就必須同時建立 IAM User 和 S3 儲存體政策(S3 Bucket Policy)才能達成

使用 IAM User 和 S3 Bucket Bucket Policy 實現跨 AWS Account 存取

在 A Account 建立 IAM User

建立 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

輸入 IAM User 名稱

並在建立時關聯剛剛建立的 Policy

建立存取金鑰

點擊建立的 IAM User

並在安全憑證的分類中找到存取金鑰

點按建立存取金鑰在使用案例中選擇命令列界面 (CLI)

在 B Account 建立 S3 Bucket

建立 S3 Bucket

在 S3 頁面中建立儲存體

使用預設設定即可

物件擁有權選擇ACL 已停用 (建議)

「封鎖公開存取」設定選擇封鎖所有公開存取權

儲存體的名稱記得可鑑別度高一些以避免重複

編輯 S3 Bucket Policy

在建立的 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 的權限

其他資料夾則只有讀取的權限

參考資料:

  1. How can I provide cross-account access to objects that are in Amazon S3 buckets?
  2. 範例 4:將跨帳戶許可授予其未擁有之物件的儲存貯體擁有者

上一篇
Day 17 S3 架站 + Cloudfront + Certificate Manager
下一篇
Day 19 使用 Transfer family 輕鬆架設 SFTP Server
系列文
上完 AWS 線上課程就打算應徵相關工作是否搞錯甚麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言