AWS 基本介紹 (2)

基本介紹

教學目標

初步了解 AWS 雲端服務中的 IAM 服務如何安全的控制使用者對於 AWS 服務和資源的存取權限。

重點概念

什麼是 IAM ?

首先 AWS Identity and Access Manage,簡稱 IAM,主要能夠讓我們安全的控制使用者對於 AWS 服務和資源的存取權限。基本上我們可以使用 IAM 建立和管理 AWS 使用者和群組,並且使用各種授權允許和拒絕存取 AWS 資源,基本上 IAM 為 AWS 帳戶的功能,不會收取其它費用。

主要功能

透過 IAM 服務可以控管哪些使用者可以使用 AWS 資源,也就是身份驗證,以及他們可以使用的資源和採用的方式,也就是授權,其提供的功能主要有:

  1. 集中管理權限:我們可以集中管理 AWS 服務。
  2. 共享存取權限:我們可以讓其它人員授予管理和使用 AWS 帳號中資源的權限。
  3. 精細權限:我們可以針對不同資源向不同人員授予不同的權限。
  4. 聯合身份:我們可以允許聯合其它身份驗證機制或身份提供商的使用者獲取 AWS 帳號臨時存取權限。
  5. 多重驗證:我們可以向帳號和每個使用者增加雙重身份驗證以實現更高安全性。
  6. 確保身份資訊:我們可以搭配 CloudTrail 服務設定記錄,其中包括帳號中使用者請求資源的資訊。
  7. 最終一致性:我們可以透過複製在全球資料中心內多個伺服器上的資料實現高可用性。
  8. 資料安全標準:我們可以支援由商家或服務提供商處理、儲存和傳輸資料,且驗證符合資料安全標準。

因此 IAM 服務主要有集中控管 AWS 帳號,整合企業內部存在的 AD 帳號允許單一登入 (Single Sign On,SSO),精細權限存取控制 AWS 資源,有能力建立使用者、群組和角色、允許我們設定密碼政策,目前不允許生物驗證的方式,但是我們通常會透過實作所有帳號多因素驗證加強 IAM 的安全性。

當我們以電子郵件地址和密碼建立 AWS 帳號時,會先建立用於登入 AWS 雲端服務的 AWS 帳號根使用者識別。此時我們可以使用根使用者憑證 (電子郵件和密碼) 登入 AWS 主控台。當我們使用根使用者憑證時將能夠針對 AWS 帳號中的所有資源進行完全、無限制的存取,也就是管理存取的權限等級,包括存取我們的帳號資訊,當然還能夠更改密碼,但是無法更新使用者名稱,然而不建議使用根使用者憑證進行日常存取,以及共享根使用者憑證,避免其它人針對 AWS 帳號進行無限制的存取,因為無法限制根使用者授予的權限。

為了避免透過根使用者憑證進行無限制存取的問題,所以在 IAM 中會進行身份識別的驗證,協助我們解決該使用者是試的問題。因此在我們會在帳號中建立與組織中使用者對應的個 IAM 使用者,而非共享根使用者憑證,請注意 IAM 使用者不是單獨的帳號,而是帳號中的使用者,每個使用者分別有自己的密碼用於存取 AWS 管理主控台,同時我們也可以為每個使用者創建獨立的存取密鑰,以利使用者發出請求使用帳號中的 AWS 雲端服務資源,此外使用者不一定表示真實人員,也可以是應用程式,至於最佳實務的做法建議是建立具有管理權限的 IAM 使用者,接著根據需求增加更多的使用者。若組織中有 AWS 帳號 ID 為 12345678910 已經建立 50 個 IAM 使用者,所有使用者皆被加入至相同的群組中,若組織啟用每個 IAM 使用者可以登入至 AWS 主控台,此時讓 50 個 IAM 使用者使用的 AWS 登入網址為「https://12345678910.signin.aws.amazon.com/console/」。

然而企業中通常會存在身份驗證方式,則我們可以將使用者身份聯合至 AWS 中,此時已登入的使用者會將其身份識別替換為 AWS 帳號中的臨時身份識別,該使用者就能夠在 AWS 管理主控台中工作。基本上若是企業中的身份驗證方式支援 SAML 2.0,則我們可以使用 SAML (Security Assertion Markup Language) 能夠啟用 AWS 和企業中的身份驗證方式 (AD 或 LDAP) 之間的單一登入 (Single Sign On,SSO) 存取,但若是不支援 SAML 2.0 則我們還是可以建立身份代理應用程式以利為使用者提供對於 AWS 管理控制台的單一登入存取。此外若是我們建立行動應用程式或網頁應用程式時允許使用者透過網際網路身份提供商,像是 Facebook、Google、…等進行識別,則該應用程式也可以透過聯合存取 AWS 資源。

若企業中有個新員工加入其職責為系統管理員時,此時需要完全存取 AWS 主控台,所以我們會建立使用者帳號和產生存取金鑰 ID 和存取密鑰,我們會將新員工的使用者帳號至其它管理者的群組中,接著會將存取金鑰 ID 和存取密鑰提供給新員工,然而當他們登入至 AWS 主控台時,若發現無法進行登入,請確認存取金鑰 ID 和存取密鑰正確,同時必須產生使用者密碼獨立連結登入至 AWS 主控台中。

權限和政策

所謂 IAM 政策主要協助定義使用者可以在帳號內執行的操作,我們稱為授權,接著透過建立然後附加至使用者、群組或角色的政策來授予權限。IAM 中的政策評估邏輯通常是開始預設拒絕所有請求,也就是所有使用者建立在 IAM 系統中開始是沒有權限,必須透過建立政策才能夠向使用者授予權限,因此政策主要是定義影響、動作、資源和選用條件的權限文件,也就是政策文件,請注意政策文件主要是採用 JSON 語言

1
2
3
4
5
6
7
8
{
"Version": "2017-09-24",
"Statement": {
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-east-2:12345678910:table/Books"
}

}

在 IAM 主控台提供了策略摘要表, 該摘要表中總結了政策對於每個服務允許或拒絕存取的等級、資源和條件,其中摘要表主要有三種分別為政策摘要、服務摘要和操作摘要,我們可以在使用者的頁面上查看附加至該使用者的所有政策摘要,同時也可以政策頁面查看所有政策摘要。此外我們可以建立 IAM 群組,接著將政策附加至群組,所謂群組是代表使用者的集合,此時群組中的使用者除了自己的憑證之外,也會附加群組的權限,以利我們透過群組更方便管理權限,請注意雖然使用者或群組可以附加授予多個不同權限的政策,但是使用者最多能設定 10 個群組成員。若企業需要移轉已存在的傳統硬體至 AWS 雲端服務中,主要會先透過公司電子郵件地址進行設定第一個 AWS 帳號,接著定義一個至多個權限的政策文件,再來套用政策文件至全球的分公司。

身份識別 (使用者、群組和角色)

建立 IAM 使用者之目的主要是針對 AWS 帳號中人員的使用者進行身份驗證,其中 IAM 群組主要是一個單位進行管理的 IAM 使用者集合,以及 IAM 角色主要是授予 AWS 雲端服務中操作的權限,當然我們也可以透過一個或多個 IAM 政策關聯來決定使用者、群組或角色的成員可以在哪些條件下對什麼 AWS 雲端服務的資源進行存取操作。

所謂 IAM 使用者主要是代表與 AWS 進行互動操作的人員、應用程式或服務,主要用途是讓人們能夠登錄至 AWS 管理主控台中執行互動式的工作,以及透過 API 或 CLI 向 AWS 雲端服務發出請求。當我們建立使用者時透過加入適當的群組中的成員和搭配政策附加至該使用者,以利授予使用者權限,當然我們也可以複製現有使用者的權限讓新的使用者自動成為相同群組的成員,同時附加所有相同的政策。若我們透過 AWS 管理主控台刪除 IAM 使用者時,IAM 也會刪除任何簽章憑證和任何屬於使用者的存取金鑰,以及在 IAM 中我們可以在建立 IAM 使用者之後編輯使用者屬性,但是唯獨使用者名稱無法變更。

所謂 IAM 群組主要是代表 IAM 使用者的集合,我們可以透過群組為一群使用者設定權限,以利更方便的管理使用者的權限。群組中的使用者成員皆有自動分配給該群組的權限,若有新的使用者加入組織中時,則我們可以透過管理員權限將該使用者增加至該群組中,並且分配對應的權限。此外若組織中有人更換工作,則不必編輯該使用者的權限,只需從群組中將其移除,接著將該使用者增加至適合的群組中,請注意群組並不是真正的身份識別,僅是用於一次性將政策附加至多個使用者的方法。

所謂 IAM 角色主要是代表確定其在 AWS 雲端服務中可執行和不可執行的操作權限,角色類似於使用者但是沒有任何關聯的憑證,也就是密碼或存取密鑰,使用者可以代入角色來暫時獲取針對特定任務的不同權限,同時我們可以將角色分配給聯合身份使用者,該使用者使用外部身份驗證機制,而非 IAM 使用者驗證機制進行登入,接著 AWS 會透過傳送的詳細資訊以利確認對應的聯合身份使用者的角色。其中所謂臨時憑證主要是用於 IAM 角色,除此之外,我們也可以設定更嚴格的臨時憑證,因為臨時憑證會在設定的時間區間之後自動過期,讓我們能夠控管憑證的有效性,以利防止意外執行不允許執行的任務。若公司需要部署服務至 AWS 之前未使用的區域中,並且目前已經有 IAM 角色,此時新的 EC2 實體僅能指定該區域內已存在的 IAM 角色。

資源限制

最後當我們開始使用 AWS 雲端服務中的 IAM 服務時最好先了解相關資源的限制,請參考下表。

資源 預設限制
AWS 帳號中使用者數 5000
AWS 帳號中政策數 1500
AWS 帳號中群組數 100
AWS 帳號中角色數 500
AWS 帳號中的實體設定檔數 500
AWS 帳號中的伺服器憑證數 20
AWS 帳號中的虛擬 MFA 設備數 等於帳號的使用者配額

基本上 AWS 雲端服務允許我們提高上 IAM 服務預設限制,然而大部份的 IAM 服務限制是無法提高限制,請參考下表。

資源 限制
SAML 提供商的 AWS 帳號數 100
SAML 提供商關聯身份提供商數 10
SAML 提供商主要鍵數 10
IAM 使用者可以加入 IAM 群組數 10
IAM 使用者附加 IAM 政策數 10
IAM 群組附加 IAM 政策數 10
IAM 角色附加 IAM 政策數 10
IAM 使用者被分配的 SSH 公開金鑰數 5
IAM 政策可儲存的版本數 5
IAM 使用者被分配的簽署憑證數 2
IAM 使用者被分配的存取密鑰數 2
AWS 帳號根使用者被分配的存取密鑰數 2
IAM 使用者的登入設定檔數 1
IAM 使用者使用 MFA 設備數 1
AWS 帳號根使用者使用 MFA 設備數 1
AWS 帳號對應的別名數 1

總結 AWS 雲端服務中的 IAM 服務能夠讓我們安全的控制使用者對於 AWS 服務和資源的存取權限。因此當我們要開始使用 AWS 雲端服務之前,建議先詳細了解 IAM 服務的主要功能、權限和政策、身份識別 (使用者、群組和角色) 和資源限制將有助於我們有效管理 AWS 雲端服務,更進一步滿足企業中資訊安全政策的需求。

相關資源