跳至主要内容

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