跳至主要内容

IAM

IAM 的全名是 Identity and Access Management,是一個 Global service。
IAM 中有兩種身份,Root Account 以及 User。其中,Root account 是創建帳號時預設的身份,但他不應該被使用或分享。Root account 的應該指被用來進行創件和管理 User。
Users 是組織中的人,可以被分組(grouped),groups 不會有巢狀關係,同一個 User 可以不屬於任何 Group,也可以同時在多個Group 中。

IAM 中的 Permission​

我們可以用 JSON 檔案對 Group 或者 User 進行權限指定,這些負責指定權限的檔案被稱為 policies。

Least Privilege Principle​

AWS 中賦予權限時,我們會遵守最小權限原則(least privilege principle),也就是説我們只會給予該 User 或者 Group 完成任務所需的最小權限。

Inline policy​

指只分配給 User 的權限。Inline policy 不會被分給 Group。

IAM policy 構成​

IAM policy 會用 JSON 形式寫成,基本構成如下:

  • Version: Policy Language 的版本
  • Id: 這個 policy 的 ID(可選)
  • Statement: 這個 Policy 的內容
    • Sid: 這個 Statement 的 ID(可選)
    • Effect: 這個 State 的效果,Allow 或 Deny
    • Principal: 這個 Policy 或提供給的account / user / role
    • Action: 操作列表,前面的效果作用的 Action 對象
    • Resource: 資源,Action 的資源對象
    • Condition: 這個 policy 的生效條件(可選)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "service-prefix:action-name",
"Resource": "*",
"Condition": {
"DateGreaterThan": {"aws:CurrentTime": "2020-04-01T00:00:00Z"},
"DateLessThan": {"aws:CurrentTime": "2020-06-30T23:59:59Z"}
}
}
]
}

更多範例

IAM 密碼及身份驗證​

在 IAM 中,可以針對 Password 和 MFA 進行規定

Password Policy​

可以在 IAM 中,針對密碼訂定一些規則,像是密碼長度、英數字大小寫特殊文字等組成要求、多久之後需要重設密碼等等。

MFA​

MFA 是 Multi Factor Authentication 的簡稱,在使用者登入時,除了需要密碼之外,還需要一個認證過的裝置進行登入確認才會被視為是合法的登入。
使用 MFA 的好處是可以確保如果不幸密碼被盜時,因為沒有經過通過裝置確認,因此帳號也不會被盜用。多了一層更強的防護。

連線到 AWS​

連線到 AWS 有三種方法:

  1. AWS Management Console:由 MFA 驗證
  2. AWS Command Line Interface (CLI):驗證 access keys
  3. AWS Software Developer Kit (SDK):給 coding 環境,使用 access keys 驗證

AWS CLI​

AWS 的 CLI 工具,可以連到 AWS 的 Public APIs。
這是一套 Open Source 的工具:https://github.com/aws/aws-cli

AWS CloudShell​

AWS 提供的在 Cloud 中的 CLI 介面

AWS SDK​

AWS Software Development Kit,針對各種不同程式語言有不同的 SDK 可以導入

IAM Role​

IAM Role 和 IAM User 很像,差別在於 IAM Role 是不直接指定到 Group 或者 User(人),而是指定一個角色可以做的事情。

IAM Security Tools​

在 IAM 中管理權限有兩個好用的工具

IAM Credentials Report (帳號 level)​

可以下載一份 Excel 檔案,這份檔案會列出這個帳號的所有 User 和這些 User 的狀態和 credentials,最後換密碼的時間等等,可以用來確認 User 們的權限管理狀況

IAM Access Advisor (user-level)​

這個工具可以讓我們看到這個 User 的所有 AWS 的使用權限設定狀態。如果有沒用到的東西,就可以考慮把權限關掉。

IAM 的共享職責模型​

在 AWS 中,AWS 和使用者會共享一些職責,有一些部分是 AWS 會需要負責的內容,另一部分則是使用者要有意識的進行管理。
在使用 IAM 時的職責狀態如下:

AWS 負責​

  • 基礎建設 Infrastructure:Global network security)
  • Configuration and vulnerability analysis
  • Compliance validation

AWS 的使用者負責​

  • Users, Groups, Roles, Policies 的管理和監視
  • 在需要的帳戶啟用 MFA
  • 經常地滾動更新 key(或密碼)
  • 使用 IAM 賦予適合的權限
  • 分析連線 pattern 以及確認 permissions