網站開發如果需要使用到 AWS S3 儲存空間就會去申請服務(廢話),不過這服務存取會透過 AWS IAM 的權限管理服務來切入。

IAM 就是帳戶存取權限管理的一個服務,這服務管理的對象是整個 AWS ,意思是除了你登入後台的帳密來管理這些服務外,這邊還有一個管理子帳號概念的地方。

過去這服務還沒有很完整的時候其實操作起來滿複雜的,現在都幾乎視覺化介面引導,一步一步就能夠完成設定!

本主題針對我比較常用的 S3 來說明。

需求是希望可以切使用者權限到更細的服務資源上,讓非管理角色就不要有機會觀看到其他 Bucket 空間的資料。

IAM 這服務概念簡單,就是直覺為你每一個想要存取服務資源的使用者開一個使用者帳號,如果不是「真的使用者」,也可以選擇是透過「程式設計方式存取」的作法。

一般來說沒有真的要開管理後台介面的話都是選這個類型。

再來當然就是為這個使用者建立群組來附加權限管理,過程就不多說了。關鍵是那個「Policies」政策設定。

AWS IAM 政策

這邊有列出很多權限的「參考」設定,通常如果使用上稍為有點特別,這裡都不會用到。所以就是使用建立政策的方式來自己打造客製化的政策權限。

過程隨著可能改版而不同我也不多說明。圍繞著政策權限核心的設定檔案如下,是 JSON 格式:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListJobs",
                "s3:CreateJob",
                "s3:HeadBucket"
            ],
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "IP.IP.IP.0/24"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME",
                "arn:aws:s3:::*/*",
                "arn:aws:s3:*:*:job/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "IP.IP.IP.0/24"
                }
            }
        }
    ]
}

IP 的部分就是限制了必須是由哪個 IP 段落才能存取,以及存取某個特定的 Bucket,上方 JSON 描述檔案的 IP 與 BUCKET_NAME 皆為變數,自行改成自己情境使用。

建立好以及設定對使用者權限等操作後就會得到 access_keysecret_key 這兩個資料,用來帶入程式中呼叫。

剩下就是想像力的競賽了!

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *