AWS IAM介紹

2023-04-04 18:06:25

前言

AWS是世界上最大的雲服務提供商,它提供了很多元件供消費者使用,其中進行存取控制的元件叫做IAM(Identity and Access Management), 用來進行身份驗證和對AWS資源的存取控制。

 

功能

IAM的功能總結來看,主要分兩種:

  • 驗證身份(Authentication)

  • 授權存取(Authorization)

驗證身份

驗證身份的主要目的就是驗證你的身份。

主要的身份實體有3種:

  • 使用者(user),實體建立的使用者,與使用者組的關係為多對多

  • 使用者組(group),根據一定規則分類的抽象集合,與使用者的關係為多對多

  • 角色(role),其餘AWS資源,例如EC2範例、Lambda函數等

對於使用者來說,我們在控制檯看到的是一個使用者名稱,實際上在後臺,它是一串資源字串:

arn:aws:iam::account-ID-without-hyphens:user/User-name

確認方式有以下幾種:

  1. AWS管理控制檯,使用username/password方式進行認證

  2. AWS命令列工具,使用Access Key/Secret Key進行認證

  3. AWS產品開發包(SDK),使用Access Key/Secret Key進行認證

  4. Restful API,使用Access Key/Secret Key進行認證

設定許可權

對於AWS來說,這部分是通過Policy來實現的。

Policy規定了被認證的實體可以存取什麼許可權,怎樣存取許可權的問題,主要由Statement來完成。而Statement是使用json格式來填寫的。

針對不同的層級,我們將Policy分為兩種:

  1. 針對已認證使用者的層級,我們稱為「Identified-Based Policy」

  2. 針對資源層級,我們稱為「Resource-Based Policy」

Statement的寫法如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
       ],
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}

Identified-Based Policy

這裡的Policy是針對被驗證過使用者的層級(此處的使用者包含我上面講的User、Group、Role)。

Policy和Statement是一對多的關係,也就是說,一個Policy可以包含多個Statement。

而Statement又包含以下內容:

  1. Effect,決定你能不能存取(Allow/Deny)

  2. Action,允許你對服務做什麼動作

  3. Resource,指明這次的Statement是對哪個資源做動作

Resource-Based Policy

這裡的Policy是針對資源本身的層級。

Policy和Statement是一對多的關係,也就是說,一個Policy可以包含多個Statement。

而Statement又包含以下內容:

  1. Effect,決定你能不能存取(Allow/Deny)

  2. Action,允許你對服務做什麼動作

  3. Resource,指明這次的Statement是對哪個資源做動作,由於是針對自己的,所以要加上self

  4. Principle,將自己的資源套用給誰

Identified-Based Policy和Resource-Based Policy的區別

  1. Identified-Based Policy是Policy層級的,而Resource-Based Policy是Statement層級的,Identified-Based Policy比Resource-Based Policy高了一級

  2. Identified-Based Policy是從使用者角度來看待許可權管理的,而Resource-Based Policy是從資源角度來看待許可權管理的。

 

小結

  1. IAM是用來做什麼的

  2. 使用者、使用者組、角色的介紹

  3. Policy的介紹,Identified-Based Policy和Resource-Based Policy的介紹和對比

 

參考與鳴謝

官網 IAM

01 IAM 是做什麼的? - YouTube

圖解AWS教學 - IAM - 整體架構 入門介紹 - YouTube