上一篇我們最後講到了AWS針對NIST所發展的資安五大面向。今天我們來了解第一個面向IAM。
Identity & Access Management(IAM)
這其實算是資安基本功,簡單來說,IAM就是透過角色來控管誰能夠使用哪些服務,您可以使用 IAM 來控制誰透過身份驗證(登錄)和授權(具有權限)使用資源。
IAM裡面的角色
Root
今天當您透過您的Email註冊及開始使用AWS時,這組Email就是root user,root user具有最高權限,以AWS Best Practice來說,您不應該使用root user的帳號去做任何事情,如果一旦發生帳密外洩的事件,等於整組帳號的控制權也被人拿走了,最好的做法是立即為root user啟用MFA(多因素驗證),並建立IAM user/group賦予admin的權限,並透過該user/group來開始啟用服務。
user
使用者,您可以根據公司所訂定的規則來決定每位使用者使用服務的權限
Group
在AWS Console裡面被稱為user group,公司可以針對同部門或是給予一樣權限的user將它們變成群組,這樣一來就不用重複設定同樣的權限
role
role我個人覺得是IAM裡面的精隨,role中文翻譯是角色,他的AWS icon是一頂工程師的帽子。今天當一個人具有user權限需要跨AWS帳號去處理事情,或是服務之間需要進行存取的時候,你總不會給出全部的權限吧?這時候如果透過switch/assume role的方式獲得一個暫時的token(STS),像是戴了一頂不同的帽子,你將會獲得使用者給予這頂帽子(role)在一定的時間內得到相對應的處理權限。
Policy
Policy被翻譯為政策或原則,將定義服務的權限規定。大多數Policy會以 JSON 檔儲存在 AWS 中。基於身份(Identity)的Policy和您附加到user或role的 JSON 檔。 基於資源的Policy是附加到AWS資源的 JSON 檔。而Policy的JSON檔長的如下方所示。
{
“Version”: “2012–10–17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“s3:PutObject”,
“s3:GetObject”
],
“Resource”: “arn:aws:s3:::mybucket/1.png”
}
]
}
Policy JSON每個語句都包含有關單一權限的訊息。如果Policy包含多個語句,AWS 在評估它們時會跨語句應用邏輯 OR。
Policy JSON每航所代表的意思如下:
Version(版本):Policy語言版本,根據AWS最佳實踐請使用2012–10–17版
Statement(描述):將以下描述做為此Policy的主要控制項目。 您可以在一個Policy中包含多個描述。
Sid(描述id)(選擇性填寫)– 包含可選的描述 ID 以區分您的語句。
Effect (產生效果)—使用 Allow 或 Deny 指示Policy是允許還是拒絕存取。
Principal(在某些情況下需要)– 如果創建基於資源的Policy,則必須指明要允許或拒絕存取的帳戶、user、role或Federated用戶。如果您正在創建 IAM 權限Policy以附加到user或role,則不能包含principal。
**Action( 動作) **— 包含Policy允許或拒絕的操作列表。
Resource(資源)(某些情況下需要)– 如果您創建 IAM permission Policy,則必須指定操作適用的資源列表。如果創建基於資源的Policy,則此元素是依照您的需求可填可不填的。如果不填,則控制的資源就是Policy附加到的資源。
Condition(條件)(選擇性填寫)- 指定Policy授予權限的情況。